ファイアウォール構築 (iptables)

サーバー上で iptables を使用してファイアウォールを構築する手順について説明します。
尚、ルーターを導入している環境では、ルーター側でも最低限のファイアウォール設定をしておくことをお勧めします。

設定

iptables の設定は iptables コマンドで行っていきます。iptables コマンドは実行するとシステムに即反映されるため、 iptables コマンドでの設定方法によってはコンソールから直接実行すると、途中で入力を受け付けなくなり制御できなくなる可能性があります。 そのためここでは一連の iptables コマンドでの設定変更をシェルとして作成し実行させます。

1. /root ディレクトリに iptables 設定用シェルファイルを作成します。
# vi /root/iptables.sh
#!/bin/bash

iptables サービスを停止し、すべてのルールをクリアします
service iptables stop
iptables -F
iptables -X

原則ルールとして入力をすべて破棄します。
iptables -P INPUT DROP
原則ルールとして出力をすべて許可します。
iptables -P OUTPUT ACCEPT
原則ルールとして通過をすべて破棄します。
iptables -P FORWARD DROP

断片化されたパケットはログに記録して破棄します。
iptables -N LOG_FRAGMENT
iptables -A LOG_FRAGMENT -j LOG --log-tcp-options --log-ip-options --log-prefix '[IPTABLES FRAGMENT] : '
iptables -A LOG_FRAGMENT -j DROP
iptables -A INPUT -f -j LOG_FRAGMENT

ループバックインターフェースからのアクセスはすべて許可します。
iptables -A INPUT -i lo -j ACCEPT
LAN 環境からのアクセスはすべて許可します。
iptables -A INPUT -s 192.168.11.0/24 -i eth0 -j ACCEPT
LAN 環境からのアクセスに対する外部からの応答アクセスを許可します。
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

ブロードキャストおよびマルチキャストパケットを破棄します。
iptables -A INPUT -d 255.255.255.255 -j DROP
iptables -A INPUT -d 224.0.0.1 -j DROP

メールサーバなどのレスポンス低下防止のため、113 番ポート (IDENT 要求) へのアクセスを拒否します。
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
HTTP ポート (TCP:80) へのアクセスを許可します。
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
HTTPS ポート (TCP:443) へのアクセスを許可します。
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
SMTP ポート (TCP:25) へのアクセスを許可します。
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
POP3 ポート (TCP:110) へのアクセスを許可します。
iptables -A INPUT -p tcp --dport 110 -j ACCEPT

設定変更を iptables 設定ファイルへ保存します。
service iptables save
iptables サービスを起動します。
service iptables start

2. 作成した iptables 設定用シェルファイルのアクセス権を変更します。

# chmod 700 /root/iptables.sh

3. iptables 設定用シェルファイルを実行します。

# /root/iptables.sh
Saving firewall rules to /etc/sysconfig/iptables:          [  OK  ]
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]
Loading additional iptables modules: ip_conntrack_netbios_n[  OK  ]

4. Fedora Core 6 初期設定 で無効化した iptables の自動起動を有効にします。

# chkconfig iptables on

Google