iptables Configuration Manual

基本設定

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

ローカルネットワークからのアクセス許可

ローカルネットワークからはすべてのアクセスを許可する設定。 厳しく制限したい場合は細かく書いてください。

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

ログの取得

上記ルールにマッチしなかったものに対してすべてログを取る。

#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の設定を変更する必要がある。

作成したルールをセーブする方法

以下の1行を一番最後に付け加える。 セーブをしたくない場合には、先頭に”#”をつければいい。

/sbin/iptables-save -c > /etc/sysconfig/iptables 

直接”/etc/sysconfig/iptables ”に設定を書き込む人がいるが、あまりお勧めではない。 ”iptables-save”を使って保存すべきである。 ルールをエンコードしてくれるため、間違いがないからである。 別のやり方として

/etc/init.d/iptables save

としても同じことをしてくれる。

ということで、一応サンプルを添付しておく。

参考リンク

Manpage for IPTABLES


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-01-01 (日) 20:58:28 (2674d)