iptablesの設定方法

iptablesは、Linuxに実装されたパケットフィルタリングおよびネットワークアドレス変換(NAT)機能、またはその操作をするコマンドのことです。
ここでは、パケットフィルタリングを通して、セキュリティの強化を行う方法を説明します。
予め、SSH接続にてサーバーにログインを行って下さい。また、操作の際には、ルート権限を使います。

1.iptablesの開始・停止・再起動・設定の確認

iptablesサービスの開始

$ sudo /etc/init.d/iptables start

iptablesサービスの停止

$ sudo /etc/init.d/iptables stop

iptablesサービスの再起動

$ sudo /etc/init.d/iptables restart

iptablesサービスの設定の確認
※ 何も設定がされていなければ、下記のように表示されます。

$ sudo iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination

2.iptablesの設定を行います

iptablesの設定
※ ここでは、設定を先に記述し、反映する方法で行います。

$ vi /etc/sysconfig/iptables

下記文言の意味を参考に記述します。
iptablesのルールは上から順に適用されていきます。
パケットのリジェクトやドロップについては必ず最後の行(COMMITの上)に記述してください。
今回の例では、「-A FIREWALL -j REJECT ...」としてパケットのリジェクトを指定しています。

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [107:12989]
:FIREWALL - [0:0]
-A INPUT -j FIREWALL
-A FORWARD -j FIREWALL
-A FIREWALL -i lo -j ACCEPT
# ICMP は許可
-A FIREWALL -p icmp --icmp-type any -j ACCEPT
-A FIREWALL -p udp -m udp --sport 53 -j ACCEPT
# 接続状態が"ESTABLISHED"または"RELATED"ならば、通信を許可
-A FIREWALL -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FIREWALL -m state --state NEW -p tcp -m tcp --dport 21 -j ACCEPT
-A FIREWALL -m state --state NEW -p tcp -m tcp --dport 22 -j ACCEPT
-A FIREWALL -m state --state NEW -p tcp -m tcp --dport 25 -j ACCEPT
-A FIREWALL -m state --state NEW -p tcp -m tcp --dport 80 -j ACCEPT
-A FIREWALL -m state --state NEW -p tcp -m tcp --dport 110 -j ACCEPT
-A FIREWALL -m state --state NEW -p tcp -m tcp --dport 143 -j ACCEPT
-A FIREWALL -m state --state NEW -p tcp -m tcp --dport 443 -j ACCEPT
-A FIREWALL -m state --state NEW -p tcp -m tcp --dport 587 -j ACCEPT
-A FIREWALL -m state --state NEW -p tcp -m tcp --dport 5666 -j ACCEPT
-A FIREWALL -m state --state NEW -p tcp -m tcp --dport 10000 -j ACCEPT
# 上記以外のパケットについては、ICMPパケット"host-prohibited"を返して接続拒否
-A FIREWALL -j REJECT --reject-with icmp-host-prohibited
COMMIT

3.iptablesの設定を確認します。

iptables設定によっては必要な通信を遮断されてしまいますので、下記項目は必ずチェックして下さい。

  • ICMP「-A FIREWALL -p icmp ...」は許可されているか
  • SSHポート(22)は許可されているか
  • 監視ポート(5666)は許可されているか
  • パケットのリジェクトは最後の行(COMMITの上)に記載されているか

4.iptablesの設定を反映します。

上記項目で問題がなければ、反映させます。

$ sudo /etc/init.d/iptables restart

最後に、自分の望む通信(例えば、ウェブサイトであれば閲覧できるか)を確認してください。

その他ご質問・お問い合わせなどございましたら、お問い合わせまでご連絡ください。