ip6tables

linux中防火牆軟件

補充說明

ip6tables命令 和iptables一樣,都是linux中防火牆軟件,不同的是ip6tables採用的TCP/ip協議爲IPv6。

語法

1ip6tables(選項)

選項

 1-t<表>:指定要操縱的表;
 2-A:向規則鏈中添加條目;
 3-D:從規則鏈中刪除條目;
 4-i:向規則鏈中插入條目;
 5-R:替換規則鏈中的條目;
 6-L:顯示規則鏈中已有的條目;
 7-F:清楚規則鏈中已有的條目;
 8-Z:清空規則鏈中的數據包計算器和字節計數器;
 9-N:創建新的用戶自定義規則鏈;
10-P:定義規則鏈中的默認目標;
11-h:顯示幫助信息;
12-p:指定要匹配的數據包協議類型;
13-s:指定要匹配的數據包源ip地址;
14-j<目標>:指定要跳轉的目標;
15-i<網絡接口>:指定數據包進入本機的網絡接口;
16-o<網絡接口>:指定數據包要離開本機所使用的網絡接口。
17-c<計數器>:在執行插入操作(insert),追加操作(append),替換操作(replace)時初始化包計數器和字節計數器。

實例

在命令行窗口輸入下面的指令就可以查看當前的 IPv6 防火牆配置:

1ip6tables -nl --line-numbers

/etc/sysconfig/ip6tables文件

使用編輯器編輯/etc/sysconfig/ip6tables文件:

1vi /etc/sysconfig/ip6tables

可能會看到下面的默認 ip6tables 規則:

 1*filter
 2:INPUT accept [0:0]
 3:FORWARD ACCEPT [0:0]
 4:OUTPUT ACCEPT [0:0]
 5:RH-Firewall-1-INPUT - [0:0]
 6-A INPUT -j RH-Firewall-1-INPUT
 7-A FORWARD -j RH-Firewall-1-INPUT
 8-A RH-Firewall-1-INPUT -i lo -j ACCEPT
 9-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
10-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
11-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
12-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
13-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
14-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
15-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
16-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
17-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
18-A RH-Firewall-1-INPUT -j reject --reject-with icmp6-adm-prohibited
19COMMIT

與 IPv4 的 iptables 規則類似,但又不完全相同。

要開啓 80 端口(HTTP 服務器端口),在 COMMIT 一行之前添加如下規則:

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

-p tcp表示僅針對 tcp 協議的通信。--dport指定端口號。

要開啓 53 端口(DNS 服務器端口),在 COMMIT 一行之前添加如下規則:

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

同時針對 tcp 和 udp 協議開啓 53 端口。

要開啓 443 端口,在 COMMIT 一行之前添加如下規則:

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

要開啓 25 端口(SMTP 郵件服務器端口),在 COMMIT 一行之前添加如下規則:

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

對於那些沒有特定規則與之匹配的數據包,可能是我們不想要的,多半是有問題的。我們可能也希望在丟棄(DROP)之前記錄它們。此時,可以將最後一行:

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

改爲:

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

保存並關閉該文件。然後重新啓動 ip6tables 防火牆:

1# service ip6tables restart

然後重新查看 ip6tables 規則,可以看到如下所示的輸出:

1# ip6tables -vnL --line-numbers

輸出示例:

 1Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 2num   pkts bytes target     prot opt in     out     source               destination
 31    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
 4Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 5num   pkts bytes target     prot opt in     out     source               destination
 61        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
 7Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
 8num   pkts bytes target     prot opt in     out     source               destination
 9Chain RH-Firewall-1-INPUT (2 references)
10num   pkts bytes target     prot opt in     out     source               destination
111        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
122    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
133        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
144        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
155      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
166        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
177        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
188      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
199        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
2010       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
2111       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
2212       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
2313    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
2414      18  4196 REJECT     all      *      *       ::/0                 ::/0

IPv6 私有 IP

IPv4 通常默認即可保護內部局域網私有 IP 上的主機。但是 IPv6 的地址非常豐富,不再需要使用類似 NAT 等協議的私有網絡。這樣一來,所有的內部主機都可以擁有公網 IP 而直接連接到互聯網,也就同時暴露於互聯網上的各種威脅之中了。那麼,如何配置 IPv6 防火牆使其默認將除了 ping6 請求之外的所有輸入數據包都丟棄呢?可以使用FC00::/7 前綴來標識本地 IPv6 單播地址。

允許特定的 ICMPv6 通信

使用 IPv6 的時候需要允許比 IPv4 更多類型的 ICMP 通信以保證路由和 IP 地址自動配置等功能正常工作。有時候,如果你的規則設置太過苛刻,可能都無法分配到正確的 IPv6 地址。當然,不使用 DHCP 而是手動配置 IP 地址的除外。

下面是一些比較常見的 ipv6-icmp 配置實例:

 1:ICMPv6 - [0:0]
 2# Approve certain ICMPv6 types and all outgoing ICMPv6
 3# http://forum.linode.com/viewtopic.php?p=39840#39840
 4-A INPUT -p icmpv6 -j ICMPv6
 5-A ICMPv6 -p icmpv6 --icmpv6-type echo-request -j ACCEPT
 6-A ICMPv6 -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
 7-A ICMPv6 -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT
 8-A ICMPv6 -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT
 9-A ICMPv6 -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT
10-A ICMPv6 -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT
11-A ICMPv6 -p icmpv6 --icmpv6-type router-advertisement -j ACCEPT
12-A ICMPv6 -p icmpv6 --icmpv6-type neighbour-solicitation -j ACCEPT
13-A ICMPv6 -p icmpv6 --icmpv6-type neighbour-advertisement -j ACCEPT
14-A ICMPv6 -p icmpv6 --icmpv6-type redirect -j ACCEPT
15-A ICMPv6 -p icmpv6 --icmpv6-type 141 -j ACCEPT
16-A ICMPv6 -p icmpv6 --icmpv6-type 142 -j ACCEPT
17-A ICMPv6 -p icmpv6 --icmpv6-type 148 -j ACCEPT
18-A ICMPv6 -p icmpv6 --icmpv6-type 149 -j ACCEPT
19-A ICMPv6 -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT
20-A ICMPv6 -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT
21-A ICMPv6 -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT
22-A ICMPv6 -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT
23-A ICMPv6 -p icmpv6 --icmpv6-type 151 -s fe80::/10 -j ACCEPT
24-A ICMPv6 -p icmpv6 --icmpv6-type 152 -s fe80::/10 -j ACCEPT
25-A ICMPv6 -p icmpv6 --icmpv6-type 153 -s fe80::/10 -j ACCEPT
26-A ICMPv6 -j RETURN
27-A OUTPUT -p icmpv6 -j ACCEPT

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: