iptables設定

現在状態の確認

# iptables -L -n

基本的に外部から入ってくる通信についてはルータで除外されているものとし、最低限の制限だけ記述する。

既存設定を全削除し、新しいルールを以下のシェルスクリプトで実行

スクリプトを実行する端末のIPアドレスと家庭内(ルータ内部)のアドレスの記述が必要
#!/bin/sh

### IPアドレス、ネットワークアドレスの定義 ###
# サーバ機のアドレス #
MYHOST='192.168.1.xxx' #自端末のアドレスを指定
### 家庭内のアドレス(192.168.1.0/24)#
HOME='192.168.1.0/24'

### iptablesのコマンドパスの定義 ###
IPTABLES='/sbin/iptables'

### iptablesのチェーンの初期化 ###
$IPTABLES -F
$IPTABLES -X

### デフォルトで全て拒否とするルールの設定 ###
$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

### 家庭内のみでSSH(22)の使用を許可 ###
$IPTABLES -A INPUT -p tcp -m state --state NEW -s $HOME --dport 22 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m state --state NEW -d $HOME --sport 22 -j ACCEPT

### 自端末からの外部DNS問い合わせを許可 ###
$IPTABLES -A INPUT -p udp -m state --state NEW -d $MYHOST --sport 53 --dport 1024: -j ACCEPT
$IPTABLES -A OUTPUT -p udp -m state --state NEW -s $MYHOST --dport 53 -j ACCEPT

### 自端末からの外部NTPサーバへの問い合わせを許可 ###
$IPTABLES -A INPUT -p udp -d $MYHOST --dport 123 -j ACCEPT
$IPTABLES -A OUTPUT -p udp -s $MYHOST --sport 123 -j ACCEPT

### 家庭内での自端末へのファイル共有(NetBIOS:Win2k以降 CIFSのみ有効)を許可 ###
$IPTABLES -A INPUT -p tcp -m state --state NEW -s $HOME --dport 445 -j ACCEPT

### 家庭内からの自端末へのSWAT(SWAT:901)アクセスを許可 ###
$IPTABLES -A INPUT -p tcp -m state --state NEW -s $HOME -d $MYHOST --dport 901 -j ACCEPT

### 内外WWWサーバとのアクセス(HTTP:80,HTTPS:443)を許可 ###
$IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 443 -j ACCEPT

### 外部FTPサーバとのアクセスを許可
$IPTABLES -A INPUT -p tcp -m state --state NEW --sport 20 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 21 -j ACCEPT

### 外部メールサーバへのアクセス(STARTTLSポート:GMAIL用)を許可 ###
$IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 587 -j ACCEPT

### Ident(113)を拒否(DROPするとレスポンスが遅くなるのでReject) ###
$IPTABLES -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset

### PINGに対する処理(外部のホストの生存を確認することもあるので、家庭内には限定しないでおく) ###
$IPTABLES -A INPUT -p icmp --icmp-type 0 -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type 8 -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT

### セッション確立後のパケット疎通は許可 ###
### 自分から確立した(NEW)セッションは維持し、それ以外は許可しない ###
### これにより、yumやその他のやり取りが確保
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

### 設定内容の保存 ###
/etc/rc.d/init.d/iptables save

### iptablesサービスの再起動
/sbin/service iptables restart

参考リンク

最終更新:2009年01月10日 00:04