#author("2017-01-01T20:58:28+09:00","default:auth_user","auth_user") *iptables Configuration Manual [#k40f1b9b] #contents **基本設定 [#oe05e863] iptablesはコマンドによって入力するものだが、簡単なシェルスクリプトを組めば かなり楽になる・・・はずである 基本的に、入力方向の通信はステートを調べる設定にした。 出力方向は安全であるということが前提であるのでステートを調べるようにはしていない。 お好みで編集してください。健闘を祈る!! #!/bin/sh IPTABLES=/sbin/iptables IP=192.168.100.1 #(サーバのIPアドレス) PORT=1024:65535 NIC1=eth0 #テーブルの初期化 $IPTABLES -F $IPTABLES -t nat -F $IPTABLES -t mangle -F #ポリシーの設定 $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT DROP #ループバック接続の許可 $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT #SYN以外で通信を開始しようとするパケットを破棄 $IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP #ステートの設定 $IPTABLES -A INPUT -i $NIC1 -d $IP -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -o $NIC1 -s $IP -m state --state ESTABLISHED,RELATED -j ACCEPT #HTTP接続設定 $IPTABLES -A INPUT -i $NIC1 -m state --state NEW -m tcp -p tcp -d $IP --sport $PORT --dport 80 -j ACCEPT $IPTABLES -A OUTPUT -o $NIC1 -p tcp -s $IP --dport $PORT --sport 80 -j ACCEPT #SSL接続設定 $IPTABLES -A INPUT -i $NIC1 -m state --state NEW -m tcp -p tcp -d $IP --sport $PORT --dport 443 -j ACCEPT $IPTABLES -A OUTPUT -o $NIC1 -p tcp -s $IP --dport $PORT --sport 443 -j ACCEPT #SMTP接続設定 $IPTABLES -A INPUT -i $NIC1 -m state --state NEW -m tcp -p tcp -d $IP --sport $PORT --dport 25 -j ACCEPT $IPTABLES -A INPUT -i $NIC1 -m state --state NEW -m tcp -p tcp -d $IP --dport $PORT --sport 25 -j ACCEPT $IPTABLES -A OUTPUT -o $NIC1 -p tcp -s $IP --dport $PORT --sport 25 -j ACCEPT $IPTABLES -A OUTPUT -o $NIC1 -p tcp -s $IP --sport $PORT --dport 25 -j ACCEPT #DNS接続設定 $IPTABLES -A INPUT -i $NIC1 -p udp -d $IP --sport 53 -j ACCEPT $IPTABLES -A INPUT -i $NIC1 -p udp -d $IP --dport 53 -j ACCEPT $IPTABLES -A OUTPUT -o $NIC1 -p udp -s $IP --sport 53 -j ACCEPT $IPTABLES -A OUTPUT -o $NIC1 -p udp -s $IP --dport 53 -j ACCEPT 設定が終了したら、現在のフィルタルールを確認する必要がある。 /sbin/iptables -nvL **ローカルネットワークからのアクセス許可 [#sf534ba2] ローカルネットワークからはすべてのアクセスを許可する設定。 厳しく制限したい場合は細かく書いてください。 LOCALNET=192.168.100.0/24 #Local Network access $IPTABLES -A INPUT -i $NIC1 -s $LOCALNET -d $IP -j ACCEPT $IPTABLES -A OUTPUT -o $NIC1 -d $LOCALNET -s $IP -j ACCEPT **ログの取得 [#sc609267] 上記ルールにマッチしなかったものに対してすべてログを取る。 #Log $IPTABLES -A INPUT -i $NIC1 -j LOG --log-prefix "INPUT_LOG: " $IPTABLES -A OUTPUT -o $NIC1 -j LOG --log-prefix "OUTPUT_LOG: " iptablesのログはカーネルから出力されるため、”/var/log/messages”に記録される。 出力先を変更したい場合はsyslogの設定を変更する必要がある。 **作成したルールをセーブする方法 [#ta23b18e] 以下の1行を一番最後に付け加える。 セーブをしたくない場合には、先頭に”#”をつければいい。 /sbin/iptables-save -c > /etc/sysconfig/iptables 直接”/etc/sysconfig/iptables ”に設定を書き込む人がいるが、あまりお勧めではない。 ”iptables-save”を使って保存すべきである。 ルールをエンコードしてくれるため、間違いがないからである。 別のやり方として /etc/init.d/iptables save としても同じことをしてくれる。 ということで、一応サンプルを添付しておく。 *参考リンク [#p343309d] >>[[Manpage for IPTABLES:http://linuxjm.sourceforge.jp/html/iptables/man8/iptables.8.html]]