キーワード: CentOS ipv6 iptables ip6tables netfilter state ステートフル NEW ESTABLISHED RELATED


IPv6特集記事:


IPv6でのnetfilterはip6tables

IPv4では iptables コマンドでnetfilterを操作していたが, IPv6では ip6tables コマンドを使う.

使い方はiptablesと同様だが, NEW,ESTABLISHED/RELATED のstateでの フィルタリングは, Kernel 2.6.20 以降で使える様になった.

CentOS 5(kernel 2.6.18)を含む, 古いkernelではstate条件に マッチしてくれないので注意が必要になる.

# ip6tables -A INPUT -p tcp -s 240f:e:b466:1::/64 --dport 22 -j ACCEPT
# ip6tables -A INPUT -p tcp --dport 22 -j DROP

↑これは期待通りに動くが,

# ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ip6tables -A INPUT -p tcp -s 240f:e:b466:1::/64 -m --dport 22 --state NEW -j ACCEPT
# ip6tables -A INPUT -m state --state NEW -j DROP

↑これは動かない(どこからでもSSHできてしまう)

フィルタ設定

# cat /etc/sysconfig/ip6tables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

#### chains サービスを定義する.
:ip6 - [0:0]
:http - [0:0]
:ssh - [0:0]
#### services サービスを定義する.
-A http    -p tcp -m tcp --dport 80   -j ACCEPT
-A ssh     -p tcp -m tcp --dport 22   -j ACCEPT


#### DEFAULT CHAINS
-A INPUT   -i sit1 -j ip6
-A FORWARD -i sit1 -j ip6

#### icmp は許可する
-A ip6 -p ipv6-icmp -j ACCEPT

#### open services 制限なしで公開するホストとポート
-A ip6 -d 240f:e:b466:1::1/128    -j http
-A ip6 -d 240f:e:b466:1::2/128    -j http

#### closed services 接続元を制限したうえで特定の接続先のみ許可
-A ip6 -s 2001:dead:beef:cafe::/64 -d 240f:e:b466:1::1/128 -j ssh
-A ip6 -s 2001:dead:beef:cafe::/64 -d 240f:e:b466:1::2/128 -j ssh

#### drop その他は捨てる
-A ip6 -d 240f:e:b466:1::/64 -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN   -j ACCEPT
-A ip6 -d 240f:e:b466:1::/64 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN,ACK -j ACCEPT
-A ip6 -j DROP

COMMIT

反映/確認する

# /etc/init.d/ip6tables restart
# ip6tables -L -v -n

自動起動にしておく

# chkconfig ip6tables on



新規 編集 添付 名前変更 バックアップ   ホーム バックアップ リンク元   最終更新のRSS