Debian

IPv6 的 Debian ip6tables 規則設置

  • March 22, 2017

我正在 Debian Squeeze 上為 ipv6 設置防火牆。它是一個網路伺服器,所以我認為 ipv6 唯一需要向世界開放的埠是 80。

這就是我所擁有的:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:in-new - [0:0]
-P INPUT DROP
-P OUTPUT DROP
-P FORWARD DROP
-A INPUT  -i lo -s ::1/128 -j ACCEPT
-A OUTPUT -o lo -d ::1/128 -j ACCEPT
-A INPUT -s fe80::/10 -j ACCEPT
-A INPUT -m rt --rt-type 0 -j DROP
-A OUTPUT -m rt --rt-type 0 -j DROP
-A FORWARD -m rt --rt-type 0 -j DROP

-A INPUT -p tcp ! --syn -m state --state NEW -j DROP

-A INPUT -m state --state INVALID -j DROP

-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN          -j DROP
-A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST          -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,RST FIN,RST          -j DROP
-A INPUT -p tcp -m tcp --tcp-flags ACK,FIN FIN              -j DROP
-A INPUT -p tcp -m tcp --tcp-flags ACK,URG URG              -j DROP

-A INPUT -d ff02::1 -j REJECT

-A INPUT  -p tcp -m state --state ESTABLISHED  -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT  -p udp -m state --state ESTABLISHED  -j ACCEPT
-A OUTPUT -p udp -m state --state NEW,ESTABLISHED -j ACCEPT

-A INPUT    -p IPv6-icmp -j ACCEPT
-I OUTPUT   -p IPv6-icmp -j ACCEPT
-I FORWARD -p IPv6-icmp -j ACCEPT

-A INPUT -p tcp -m tcp --dport 80 --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j ACCEPT
-A INPUT    -j LOG --log-level 4 --log-prefix "IPT_INPUT: "

-A INPUT    -j DROP
-A FORWARD -j LOG --log-level 4 --log-prefix "IPT_FORWARD: "
-A FORWARD -j DROP
-A OUTPUT   -j LOG --log-level 4 --log-prefix "IPT_OUTPUT: "
-A OUTPUT   -j DROP

COMMIT

我在網路上的某個地方找到了它並對其進行了一些更改,但是當我嘗試恢復它時,它給出了以下錯誤:

sudo ip6tables-restore < /etc/ip6tables.firewall.rules
ip6tables-restore: line 47 failed

知道如何設置我的 ip6tables 以使其正常工作嗎?

謝謝你。

我不知道你從哪裡得到了那個可憎的東西,但你能做的最好的事情就是刪除它並從頭開始。它的主要問題是它不必要的複雜和難以理解,即使它可能有效(我不能通過閱讀它來確定,所以我當然不會去測試它)。

防火牆應該盡可能簡單:只接受你需要的東西,拒絕其他一切。遵循這一點,您將不需要任何復雜且難以理解的規則。

因此,讓我們看一下一個正在執行的 IPv6 iptables 防火牆。我剛剛從我的一台實時伺服器上取下了這個:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

我們將表的預設策略設置為 ACCEPT;流量實際上會被每個表中的規則丟棄。這給了我們更多的靈活性。特別是,除非您打算阻止傳出連接,否則應始終將 OUTPUT 表設置為預設策略 ACCEPT。

~~``` -A INPUT -m rt –rt-type 0 –rt-segsleft 0 -j DROP -A FORWARD -m rt –rt-type 0 –rt-segsleft 0 -j DROP -A OUTPUT -m rt –rt-type 0 –rt-segsleft 0 -j DROP

-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT


這接受我們已經通過其他規則接受的任何現有連接的持續流量。

-A INPUT -p ipv6-icmp -j ACCEPT


我們接受所有 ICMP 數據包。與 IPv4 不同,阻止 ICMPv6 流量並不是一個好主意,因為 IPv6 對它的依賴程度更高。

-A INPUT -i lo -j ACCEPT


我們接受來自/到本地介面的所有流量。

-A INPUT -m state –state NEW -m udp -p udp –dport 546 -d fe80::/64 -j ACCEPT


我們接受 DHCPv6 流量。如果您使用無狀態自動配置,或靜態配置您的機器,則無需這樣做。

-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT


這些接受 ssh 和 http 的新連接。

-A INPUT -j REJECT –reject-with icmp6-port-unreachable -A FORWARD -j REJECT –reject-with icmp6-port-unreachable


在我們的規則結束時,我們拒絕所有與規則不匹配的流量,使用“埠不可達”。這導致在另一端出現標準的“連接被拒絕”消息,並有效地隱藏了我們有防火牆的事實。諸如[nmap](http://nmap.org/)之類的工具會報告我們所有的埠都是“關閉的”而不是“過濾的”,並且很難確定我們甚至有防火牆。

COMMIT


這將送出所有表條目。

引用自:https://serverfault.com/questions/410321