我不是iptables专家,有两个奇怪的行为需要修复!
我有一个定制的链式f2b-nginx-naxsi,它有以下可修改的规则:
$ sudo iptables -S f2b-nginx-naxsi
-N f2b-nginx-naxsi
-A f2b-nginx-naxsi -s 81.250.100.81/32 -j REJECT --reject-with icmp-port-unreachable #<== Here
-A f2b-nginx-naxsi -j RETURN81.250.100.81是我的公共知识产权,所以我应该被禁止。
该链从INPUT链加载,如下所示:
sudo iptables -S INPUT
-P INPUT ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-nginx-naxsi #<== Here
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j INPUT_direct
-A INPUT -j INPUT_ZONES_SOURCE
-A INPUT -j INPUT_ZONES
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited为了修复问题1,我采用了前面的规则,并将其设置在INPUT链中:
-I INPUT -s 81.250.100.81/32 -j REJECT --reject-with icmp-port-unreachable
按回车后,我和机器断开了连接,lol。
但出于某些原因我还是可以在浏览器上打开我们的nginx ..。
为什么它杀死了SSH (22)而没有标准的http连接(80)
提前准备好,
;-)
发布于 2020-09-01 15:20:23
我终于找到了谜团的真相!
为了将传入的连接放到码头容器中,您必须将规则放置在一个名为DOCKER-USER的链中。
这个链是由Docker自己创建的,这些规则将优先于那些来自码头引擎的规则。
例如,要在端口443上禁止特定的IP (例如来自fail2ban ):
sudo iptables -I DOCKER-USER -i eth0 -s <SPECIFIC_IP> -p tcp --dport 443 -j DROP
(将eth0更改为任何外部接口)
INPUT链添加规则将无法工作。DOCKER的连锁店仅用于码头作业。不要在里面放任何东西。发布于 2020-07-08 18:38:18
故障排除步骤:
(编辑)
2b。检查您的码头主机上的哪个端口(S)映射到nginx容器。
docker port <container_name>
This command should show which port(s) you need to use in your custom IPtables chain running on the container host.https://unix.stackexchange.com/questions/597408
复制相似问题