穴があったら塞ぎたい

ウィルスの猛威
ニュースになるくらいのいきおいで蔓延していったエムエスブラスト
会社の中でも緊急放送が流れるくらい大変でした
グループ内のファイルサーバも亜種にやられちゃってて恥ずかしかったです
個人のWindowsマシンの方はNISとかOutPostFirewallでポート塞いでるので全然あわててなかったのですが
ふとVineってどうなってるんやろうと思った
Linux使ってるからなんか安心しちゃってるけど大丈夫なんか?
ポートスキャン
いつもの博士に空いているポートを調べてくれるツールを教えてもらい
実際に実行してみるのだが、イマイチ何を言ってるのかわからない。
"博士おいらのパソコンはどんなもんでしょう?IP○○.○○.○○.○○のパソコンを調べてみてくだちい"
いつものように泣きつくとしばらくたってから博士から回答が返ってくる
"おまえのパソコン、ズコズコやな"
うそーん(泣)
実際に困る困らないとかじゃなくて
個人的には別にどうってことないだろうと思ってるんですが...
ズコズコ
この言葉の響きがなんかものすごくいやなので、
使わないポートは塞いでおくことにしました
忘れんうちにメモメモ
iptablesというコマンドを使う
最初モジュールが組み込まれてないのかとあせったが
ひとつも設定をしていないとモジュールのリストには表示されないみたいだ
とにかく設定、設定。
まず、白紙に戻す
  /sbin/iptables -F
次に基本ポリシーを決める。入ってくるのも出ていくのも転送するのも全部閉じる
  /sbin/iptables -P INPUT DROP
  /sbin/iptables -P OUTPUT DROP
  /sbin/iptables -P FORWARD DROP
とりあえず自分はなんでもOKにする。(これしとかないと大変自分も何もできなくなる)
  /sbin/iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
  /sbin/iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT
この一文がキモみたいです。自分から出したポートは外からのものも受け付ける
  /sbin/iptables -A INPUT -m state --state ESTABLISH,RELATED -j ACCEPT
あとは、自分から出すポートで許可をしていく。
  /sbin/iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT
  /sbin/iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT
  /sbin/iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
  /sbin/iptables -A OUTPUT -p tcp --dport 23 -j ACCEPT
  /sbin/iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
  /sbin/iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
  /sbin/iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT
  /sbin/iptables -A OUTPUT -p icmp -j ACCEPT
  /sbin/iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
  /sbin/iptables -A OUTPUT -o eth0 -p udp --dport 137 -j ACCEPT
  /sbin/iptables -A OUTPUT -o eth0 -p udp --dport 138 -j ACCEPT
  /sbin/iptables -A OUTPUT -o eth0 -p udp --dport 139 -j ACCEPT
設定がおわったら、保存しないと次回起動時に元にもどっちゃいます。
  /etc/init.d/iptables save
すぐに設定を反映するにはサービスを再起動する必要があるっす。
  /sbin/service iptables restart
設定項目を確認したかったらこいつで。
  /sbin/iptables -L
あとで都合が悪くなって追加したもの
(社内のIRCチャット、ネットワークカードからのものに限定した)
  /sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 6667 -j ACCEPT
(お昼休みのネット対戦型戦車ゲームbzflag用のポート。UDPは開けないとゴースト状態になる。)
  /sbin/iptables -A OUTPUT -p tcp --dport 5155 -j ACCEPT
  /sbin/iptables -A OUTPUT -p udp --dport 5155 -j ACCEPT
  /sbin/iptables -A OUTPUT -p tcp --dport 5156 -j ACCEPT
  /sbin/iptables -A OUTPUT -p udp --dport 5156 -j ACCEPT
(Windowsの共有フォルダにアクセスするのに開けておくポートが足りなかったので追加)
  /sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 139 -j ACCEPT
(これなんやろ?httpsのかな?多分そうだ。なんか買い物する時用です)
  /sbin/iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
最後はやっぱり保存と反映ね
  /etc/init.d/iptables save
  /sbin/service iptables restart
再確認
最初に使用したツールでポートをスキャンしてみる
このパソコンは起動していないみたいですみたいなメッセージがでた
やった、これで一安心っす(ズコズコって言われなくなって)
最初からこうゆう設定ツールがついてるっていいですね
Windowsでも採用したらいいのに
今回は勉強になりました。
Linux = セキュリティが高い というわけではないこと。
今後も肝に命じたいと思います
FTP失敗
このファイルをUPしようとした
ftpでいつもの様にログインして(ここまではいつもどおり)
lsを実行すると
227 Entering Passive Mode (210,168,156,110,216,129)
って言われて沈黙したままタイムアウトになる
またなんかしくったのかなぁ
解決
ftpはコネクションソケットとデータソケットが違うから特別なプラグインがいる
とのことで
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
を実行したらめでたく解決
こやって無事UPできました

ちなみに最初のメッセージの意味は
227 Entering Passive Mode (210,168,156,110,216,129)
おまえのアドレスは 210.168.156.110 で
ポートは 216*256 + 129 だよーん
という意味
/sbin/iptables -A INPUT -m state --state ESTABLISH,RELATED -j ACCEPT
で、いける感じがするけどftpはコネクションを確立後別のポートでソケットを作るから
特別なモジュールが必要だったわけですな
ポート追加
# /sbin/iptables -A OUTPUT -p tcp --dport 8443 -j ACCEPT
# /etc/init.d/iptables save
# /sbin/service iptables restart
管理画面がこのポート使ってたので追加