iptables

NetVistaにインストールしたFC5Test1の設定の続き。結局iptablesの設定とマウントが面倒でないし、セキュリティ上よろしいだろうということで、NFSはやめてscpを使うことにした。毎回IPアドレスを指定しなければならないのは面倒だが、自分でシェルスクリプトを書いておけば良いだろう。
今日は昨日と同様にWake On Lanで電源をつけてもsshで接続できず、pingも通らないのでおかしいなと思い、キーボード・ディスプレイを接続してみると、ネットワークインターフェースの初期化でこけていた。/etc/hosts.denyの設定が云々などと思って確かめてみたが関係せず、結局原因は昨日更新したSELinuxであった。とりあえず無効にしておいたが、"Test"だから仕方無いだろう。
それから、Linux 2.4 Packet Filtering HOWTOを読みながらiptablesの設定をいじっていたのだが、途中で全てのパケットをDROPするように設定してしまったので、またキーボードと(ry いちいち取り付けたり取り外したりするのは大変面倒なので、付けておくことにした。
手動でのカスタマイズは推奨されないみたいだが、本当はどこに書くべきなのか分からなかったので、/etc/sysconfig/iptables を直接修正。*1FCではデフォルトで以下のようになっているようだが、Rendezvous*2関連の設定()やIPv6*3の設定は全く不要なので削除。pingは全て許可する必要は無いので、他の2台のクライアントのみ許可するようにした。もちろんsshは現在使用中のクライアントからのみ接続を受け付けるように変更。iptablesで設定すれば十分だろうが、/etc/hosts.deny と /etc/hosts.allow もついでに設定。あとは、パスワード認証ではなく、秘密鍵を用いてssh接続するようにすればいいだろう。

 # cat /etc/sysconfig/iptables.orig
 # Firewall configuration written by system-config-securitylevel
 # Manual customization of this file is not recommended.
 *filter
 :INPUT ACCEPT [0:0]
 :FORWARD ACCEPT [0:0]
 :OUTPUT ACCEPT [0:0]
 :RH-Firewall-1-INPUT - [0:0]
 - A INPUT -j RH-Firewall-1-INPUT
 -A FORWARD -j RH-Firewall-1-INPUT
 -A RH-Firewall-1-INPUT -i lo -j ACCEPT
 -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
 -A RH-Firewall-1-INPUT -p 50 -j ACCEPT
 -A RH-Firewall-1-INPUT -p 51 -j ACCEPT
 -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
 -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
 -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
 -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
 COMMIT
 # cat /etc/sysconfig/iptables
 # Firewall configuration written by system-config-securitylevel
 # Manual customization of this file is not recommended.
 *filter
 :INPUT ACCEPT [0:0]
 :FORWARD ACCEPT [0:0]
 :OUTPUT ACCEPT [0:0]
 :RH-Firewall-1-INPUT - [0:0]
 -A INPUT -j RH-Firewall-1-INPUT
 -A INPUT -j DROP
 -A FORWARD -j DROP
 -A RH-Firewall-1-INPUT -p tcp -s 192.168.0.y -j ACCEPT -m conntrack --ctstate NEW --ctproto tcp --destination-port ssh
 -A RH-Firewall-1-INPUT -p all -j ACCEPT -m conntrack --ctstate ESTABLISHED,RELATED
 -A RH-Firewall-1-INPUT -s 192.168.0.x -p icmp -j ACCEPT
 -A RH-Firewall-1-INPUT -s 192.168.0.y -p icmp -j ACCEPT
 COMMIT

*1:設定後、iptables-saveを使用しても同様の結果が得られるだろうが、別にチェーンを作ってテストしていたのでこうした。

*2:勝手にネットワークを調査してサーバーを見つけ出してくれるみたいだが、自分でIPアドレスを指定してマウントしたり接続したりする方が良いだろう。DHCPIPアドレスを配っているネットワークでは良いかもしれないが、3台しかパソコンが無い僕の環境では必要無い。

*3:どれだけ普及しているのだろうか、僕には見当もつかない。