ip6tables

linuxのファイアウォールソフトウェア

補足説明

ip 6 tablesコマンドはiptablesと同様、linuxのファイアウォールソフトウェアですが、ip 6 tablesはIPv 6というTCP/ipプロトコルを使用しています。

文法

ip 6 tables(オプション)

オプション

-t<テーブル>:操作するテーブルを指定します。
-A:ルールチェーンにエントリを追加する、
-D:ルールチェーンからエントリを削除する、
-i:ルールチェーンへのエントリの挿入、
R-R:ルールチェーン内のエントリを置換する、
L-L:ルールチェーン内の既存のエントリを表示します。
-F:ルールチェーン内の既存のエントリを明確にする、
-Z:ルールチェーン内のパケット計算機とバイトカウンタを空にする、
N-N:新しいユーザー定義ルールチェーンを作成する、
P-P:ルールチェーン内のデフォルトターゲットを定義する、
-h:ヘルプ情報を表示します。
-p:一致させるパケットプロトコルタイプを指定します。
-s:一致させるパケットのソースIPアドレスを指定します。
-j<ターゲット>:ジャンプするターゲットを指定します。
-i<ネットワークインタフェース>:パケットが自機のネットワークインタフェースに入ることを指定する、
-o<ネットワークインタフェース>:パケットがローカルで使用されているネットワークインタフェースから離れることを指定します。
−c<カウンタ>:挿入操作(insert)、追加操作(append)、置換操作(replace)を実行する際にパケットカウンタとバイトカウンタを初期化する。

事例紹介

コマンドラインウィンドウに次のコマンドを入力すると、現在のIPv 6ファイアウォール構成を表示できます。

ip6tables -nl --line-numbers

/etc/sysconfig/ip 6 tablesファイル

エディタを使用して/etc/sysconfig/ip 6 tables ファイルを編集するには:

vi /etc/sysconfig/ip6tables

次のデフォルトのip 6 tablesルールが表示されることがあります。

*filter
:INPUT accept [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j reject --reject-with icmp6-adm-prohibited
COMMIT

IPv 4のiptablesルールと似ていますが、全く同じではありません。

80ポート(HTTPサーバポート)をオンにするには、COMMIT行の前に次の規則を追加します。

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT

-p tcp はtcpプロトコルのみに対する通信を表す。-dport ポート番号を指定します。

53ポート(DNSサーバポート)をオンにするには、COMMIT行の前に次の規則を追加します。

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT

同時にtcpとudpプロトコルに対して53ポートをオープンします。

443ポートを開くには、COMMIT行の前に次の規則を追加します。

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT

25ポート(SMTPメールサーバポート)をオンにするには、COMMIT行の前に次の規則を追加します。

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT

特定のルールが一致していないパケットについては、私たちが望んでいない可能性がありますが、大半は問題があります。廃棄(DROP)前に記録しておきたいかもしれません。最後の行を次のようにすることができます。

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
COMMIT

変更後:

-A RH-Firewall-1-INPUT -j LOG
-A RH-Firewall-1-INPUT -j DROP
COMMIT

ファイルを保存して閉じます。次に、ip 6 tablesファイアウォールを再起動します。

# service ip6tables restart

次に、ip 6 tablesルールを再表示すると、次のような出力が表示されます。

# ip6tables -vnL --line-numbers

出力例:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
num   pkts bytes target     prot opt in     out     source               destination
Chain RH-Firewall-1-INPUT (2 references)
num   pkts bytes target     prot opt in     out     source               destination
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
14      18  4196 REJECT     all      *      *       ::/0                 ::/0

IPv 6プライベートIP

IPv 4は通常、デフォルトで内部LANプライベートIP上のホストを保護します。しかし、IPv 6のアドレスは非常に豊富で、NATなどのプロトコルのようなプライベートネットワークを使用する必要はありません。これにより、すべての内部ホストがパブリックネットワークIPを持ってインターネットに直接接続することができ、インターネット上のさまざまな脅威に同時にさらされることになります。では、IPv 6ファイアウォールをデフォルトでping 6要求を除くすべての入力パケットを破棄するように構成するにはどうすればよいのでしょうか。FC 00:::/7接頭辞を使用して、ローカルIPv 6ユニキャストアドレスを識別できます。

特定のICMPv 6通信を許可

IPv 6を使用する場合は、ルーティングやIPアドレスの自動設定などの機能が正常に機能するように、IPv 4よりも多くのタイプのICMP通信を許可する必要があります。ルールの設定が厳しすぎると、正しいIPv 6アドレスに割り当てられないことがあります。もちろん、DHCPを使用せずにIPアドレスを手動で設定する場合を除く。

以下に、比較的一般的なipv 6-icmp構成の例を示します。

:ICMPv6 - [0:0]
# Approve certain ICMPv6 types and all outgoing ICMPv6
# http://forum.linode.com/viewtopic.php?p=39840#39840
-A INPUT -p icmpv6 -j ICMPv6
-A ICMPv6 -p icmpv6 --icmpv6-type echo-request -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type router-advertisement -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type neighbour-solicitation -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type neighbour-advertisement -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type redirect -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 141 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 142 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 148 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 149 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 151 -s fe80::/10 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 152 -s fe80::/10 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 153 -s fe80::/10 -j ACCEPT
-A ICMPv6 -j RETURN
-A OUTPUT -p icmpv6 -j ACCEPT