iptablesの最小構成設定です。
この設定では自分からのアクセスは全て許可され、外部からのアクセスはPingとSSH以外全て拒否されます。
#設定
##ディレクトリ作成
shellスクリプトを格納するディレクトリを作成する
# mkdir /root/bin/
##iptables.shの作成
# vi /root/bin/iptables.sh
下記の内容をコピーアンドペーストする。
※日本語に対応していない場合はコメントにある日本語が文字化けする恐れがあります。
: a
#!/bin/sh
# iptables 初期化
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
# 受信を破棄 / 送信を許可 / 通過を拒否
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(icmp)許可
iptables -I INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -I INPUT -p icmp --icmp-type 8 -j ACCEPT
# ssh許可
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
################################
##### サービス設定ここから #####
##### サービス設定ここまで #####
################################
# 上記のルールにマッチしなかったアクセスはログを記録して破棄
iptables -A INPUT -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES INPUT] : '
iptables -A INPUT -j DROP
iptables -A FORWARD -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES FORWARD] : '
iptables -A FORWARD -j DROP
[ESC]
: wq
##スクリプトを実行
スクリプトを実行するとiptablesが適用されます。
# sh /root/bin/iptables.sh
##実行結果を確認
# iptables -nL
#運用
##OS起動時に自動でiptablesを適用する
ここまでの設定で既にiptablesは適用されていますが、OSの再起動するとせっかく設定したiptablesが消されて初期状態に戻ります。
再起動するたびにスクリプトを手動で実行するのも手間ですので、OS起動時に自動的に実行してもらいます。
# vi /etc/rc.local
下記を追記
sh /root/bin/iptables.sh
##iptablesを停止する
CentOS 5.xでは# iptables -F
を使用していましたが、6.xで同じ事をするとSSHが切られたりして不安定なため、サービスを停止することをお勧めします。
# /etc/init.d/iptables stop
##iptablesを再開する
先ほどiptables stop
で停止したので、iptables start
をしがちですが、普通にスタートをしても初期設定に戻ってしまいます。
なので、shを実行しましょう。
# sh /root/bin/iptables.sh