#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]]


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS