我有一个Linux的VPS,并不断被扫描,由一些stream氓IP bruteforced。 这VPS是我的私人服务器,只为我服务,而我是唯一的用户。 另外我是唯一允许连接的用户。
我想问你,ServerFault,评论我的方法,“解决”问题,并指出我的任何问题,因为我没有经验的iptables 。
在我的服务器上,我使用端口993上的dovecot和端口22上的sshd 。 我已经将这两个服务都移到了X和Y非标准端口,以防止对已知端口的愚蠢的暴力攻击。 对于端口扫描问题,我认为我想在标准端口23 (telnetd), 22 (sshd), 110 (pop3), 80 (httpd)等上创build一个“陷阱”。如果防火墙将检测到任何人想连接到这些端口,它应该阻止发起的数据包,以及在接下来的24小时内与源主机进一步的通信,甚至到端口X和Y 要做到这一点,我试图使用recent的iptables模块:
iptables -I INPUT -m state --state NEW -m recent --update --seconds 86400 --hitcount 1 -j DROP iptables -I INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m recent --set -j DROP iptables -I INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set -j DROP iptables -I INPUT -p tcp -m tcp --dport 23 -m state --state NEW -m recent --set -j DROP iptables -I INPUT -p tcp -m tcp --dport 110 -m state --state NEW -m recent --set -j DROP
从我的testing看来,它甚至可以工作,但有没有更正确的方法来执行我想要做的?
本人认为这不是一个不合理的configuration。 既然你在做内核空间的一切事情(比如fail2ban ,它运行在用户空间并作用于内核的syslog消息),它应该是合理的。
但请注意,您在这里有一个主要的拒绝服务攻击的可能性。 攻击者可以将具有伪造源地址的SYN发送到这些“陷阱”端口中的任意一个,并阻止这些IP被阻止。 发送足够的数据包阻止大部分互联网不会是非常困难的。 您可能需要考虑明确将您通常用来访问服务器的地址列入白名单。
如果把你通常用来访问服务器的IP列入白名单是不实际的,我不认为我会走这条路。