今回は「iptables」コマンドを使ってサーバマシンのファイアウォールを構築します。
iptablesを使うことで、さまざまなパケットフィルタリングの設定を行うことができます。
例えば、
・サーバ自身から外部への接続を許可する
・外部からのPINGを受け付ける
・外部からのSSH接続を受け付ける
・外部からのDNS問い合わせを受け付ける
・外部からのHTTP接続を受け付ける
・外部からのSVN接続を受け付ける
・外部からのSAMBA接続を受け付ける
・上記以外の通信を一切許可しない
といった細かい設定が可能です。
iptables自身はコマンドなので、実行しなければ有効となりませんが、サーバを起動する度にこのような細かい設定をするのはめんどくさいので、シェルスクリプトを用意して、起動時に実行するようにしておくとよいでしょう。
例えば、起動時に設定が有効になるように、今回は「/etc/network/if-pre-up.d/set_iptables」にコマンドを記述します。
上の箇条書きの設定をする場合、具体的なファイルの中身は以下のようになります。
#!/bin/sh # iptablesの設定を初期化 iptables -F # とりあえず自身からの通信以外はシャットアウト iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # PINGを許可 iptables -A INPUT -p icmp -j ACCEPT # SSHを許可 iptables -A INPUT -p tcp --dport 22 -j ACCEPT # DNSを許可 iptables -A INPUT -p tcp --dport 53 -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT # Apatchを許可 iptables -A INPUT -p tcp --dport 80 -j ACCEPT # Subversionを許可 iptables -A INPUT -p tcp -s $trusthost --dport 3690 -j ACCEPT iptables -A INPUT -p udp -s $trusthost --dport 3690 -j ACCEPT # Sambaを許可 iptables -A INPUT -p tcp --dport 137:139 -j ACCEPT iptables -A INPUT -p tcp -dport 445 -j ACCEPT iptables -A INPUT -p udp --dport 137:138 -j ACCEPT iptables -A INPUT -p udp --dport 445 -j ACCEPT
このようにして、いったん全ての接続を不許可として、その後に許可するポートを空けていきます。
その他にも、接続数を制限する、IPで制限する、IPマスカレードを設定するなど、さらに細かい設定も可能です。
コメントする