我在CentOS 7上设置了端口敲门规则,如下所示:
-I INPUT -p tcp --dport 1 -m recent --set --rsource --name KNOCK1 -m limit --limit 5/min -j LOG --log-prefix "knock 1" --log-level 7
-I INPUT -p tcp --dport 2 -m recent --rcheck --rsource --seconds 20 --name KNOCK1 -m recent --set --rsource --name KNOCK2 -m limit --limit 5/min -j LOG --log-prefix "knock 2" --log-level 6
-I INPUT -p tcp --dport 3 -m recent --rcheck --rsource --seconds 20 --name KNOCK2 -m recent --set --rsource --name OPEN_NOW -m limit --limit 5/min -j LOG --log-prefix "knock 3" --log-level 6
-I INPUT -p tcp --dport 22 -m state --state NEW -m recent --rcheck --rsource --seconds 20 --name OPEN_NOW -j ACCEPT然后我堵住了22端口:
iptables -A INPUT -p tcp --dport 22 -j DROP它正确工作,因为在发送端口序列之前,nmap显示为:
22/tcp filtered ssh no-response在发送以下探测后(在Windows上):
nmap -PN --host_timeout 201 --max-retries 0 -p 1 200.xxx.xxx.xxx && nmap -PN --host_timeout 201 --max-retries 0 -p 2 200.xxx.xxx.xxx && nmap -PN --host_timeout 201 --max-retries 0 -p 3 200.xxx.xxx.xxxnmap和nc都将其显示为打开:
nmap:
22/tcp open ssh syn-ack ttl 49
nc:
hostname.xxxx.xxxx [200.xxx.xxx.xxx] 22 (ssh) open但是,我不能使用任何客户端(Putty,nc)对其进行ssh处理。当Iptables正确丢弃数据包时,就会超时。但是端口是开放的(因为探针打开了端口),这意味着DROP规则不再有效,nmap/nc获得了"Ack / Open",难道我不能使用ssh吗?
发布于 2017-08-29 04:15:59
当然,是的问题是-state只允许一个数据包到SYN,然后服务器用SYN/ACK应答,然后iptables将从客户端丢弃所有后续数据包。
但是我不想在所有的连接中使用-contrack,因为我只是偏执于性能,或者任何利用已经建立起来的连接,以某种方式超越规则的利用。
所以我添加了--状态新的,相关的,ESABLISHED --就在最后一次敲门时,这让我可以使用ssh 20秒,然后它就会断开连接,但是在这段时间里,我只需要-j接受我的IP。
https://security.stackexchange.com/questions/168281
复制相似问题