现在,我正在努力弄清楚如何在我的服务器上设置一些IPv6规则。我的要求是不允许对回送设备和本地IP地址(在本例中为链接本地)输入回送请求,以及打开端口22、80和443。对于IPv4来说,一切都很好,但是我对ip6tables的问题是遵循输入的链式顺序。我现在拥有的是:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p icmpv6 -m icmpv6 --icmpv6-type echo-request -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT
-A FORWARD -j REJECT --reject-with icmp6-port-unreachable
-A OUTPUT -p icmpv6 --icmpv6-type echo-request -d ::1/128 -j REJECT --reject-with icmp6-port-unreachable
-A OUTPUT -p icmpv6 --icmpv6-type echo-request -d fe80::/64 -j REJECT --reject-with icmp6-port-unreachable
-A OUTPUT -j ACCEPT
COMMIT目前我的罪魁祸首是-A INPUT -j REJECT。我的期望是,这将做一个含蓄的否认所有上面没有列出的链条。然而,情况似乎并非如此,而且似乎与带有IPv4规则的普通旧iptables不同。有人能在这里启发我解决方案吗?这是一个Ubuntu14.04服务器
发布于 2018-01-05 08:59:54
让我们先看看您的规则试图做什么,看看它们为什么不起作用:
-A INPUT -i lo -j ACCEPT到达环回接口的所有通信量都将被处理,包括ICMPv6流量。
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT很正常。
-A INPUT -p icmpv6 -m icmpv6 --icmpv6-type echo-request -j ACCEPT正如所写的那样,这条规则只允许ping请求(对任何接口):任何其他ICMPv6数据包都将被最后的显式拒绝拒绝。
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT
-A FORWARD -j REJECT --reject-with icmp6-port-unreachable很正常。
-A OUTPUT -p icmpv6 --icmpv6-type echo-request -d ::1/128 -j REJECT --reject-with icmp6-port-unreachable
-A OUTPUT -p icmpv6 --icmpv6-type echo-request -d fe80::/64 -j REJECT --reject-with icmp6-port-unreachable这些规则只会阻止主机向本地主机和链接本地网络地址(也就是链接本地地址范围是一个/10.)发送pings。
-A OUTPUT -j ACCEPT很正常。
但是,您说:“我的要求是不允许输入回送设备和本地IP地址(在这种情况下,链接本地) ...”。您编写的规则几乎与您对此要求的要求截然相反。而且,通常在输入端设置输入过滤器更好,因为这是大多数人都会寻找这样的东西的地方,它对所有的流量都是有效的,而不仅仅是你的计算机发送的流量。
我建议您按以下方式编写规则链:
-A INPUT -i lo -p icmpv6 -m icmpv6 --icmpv6-type echo-request -j REJECT --reject-with icmp6-port-unreachable
-A INPUT -d fe80::/10 -p icmpv6 -m icmpv6 --icmpv6-type echo-request -j REJECT --reject-with icmp6-port-unreachable
-A INPUT -p icmpv6 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT
-A FORWARD -j REJECT --reject-with icmp6-port-unreachable关于重写规则的一些意见:
https://unix.stackexchange.com/questions/414875
复制相似问题