我的网络服务器不断受到各种IP地址的攻击。他们尝试输入五个密码,然后更改IP地址。
我已经进行了各种锁定,例如使用ssh-keys并不允许使用密码,并且不允许远程root用户登录。
我有什么办法可以摆脱这些攻击尝试?如果没有,我应该提出具体的防御措施吗?
我的网络服务器不断受到各种IP地址的攻击。他们尝试输入五个密码,然后更改IP地址。
我已经进行了各种锁定,例如使用ssh-keys并不允许使用密码,并且不允许远程root用户登录。
我有什么办法可以摆脱这些攻击尝试?如果没有,我应该提出具体的防御措施吗?
Answers:
确实是生活中的事实。您可以安装工具来过滤掉几次失败尝试后正在攻击您的主机。
DenyHosts分析您的日志文件,并自动将攻击者添加到您的/etc/hosts.deny
文件中。
查看有关如何根据需要进行配置的文档。
更新:评论中建议的一些重要点
请确保将工具正确配置为DenyHosts,因为您可以将自己锁定在外(例如,您可以配置从未经过过滤的计算机或网络)
DenyHosts不会提高您的系统安全性:它仅过滤IP级别的攻击(它可以减少小型计算机上的负载并减少日志文件的大小,仅此而已)
refs Q1.3
denyhosts.sourceforge.net/faq.html#1_0
apt-get install denyhosts
我被锁定在机器之外。
我按照以下说明为每次错误密码的SSH登录尝试添加了7秒的延迟。我将sshd设置为蛮力扫描仪的“ tarpit”。
我还应该补充一点,就是我修改了tarpit sshd日志,并输入了失败的密码。这可能不完全合乎道德,因为它可以使root用户了解普通用户将自己的密码键入错误的密码,但是由于我是唯一的“真实”用户,因此我认为可以。
我没有在非标准端口上运行它,因为“ tarpit”方面不会浪费任何人的时间。
如果只有少数人需要SSH到系统,则考虑将SSH移至非标准端口(例如6422、8080等)。仅此一项就可以大大减少登录尝试的次数(并可能保护您免受未打补丁的攻击)例如,基于SSH漏洞的蠕虫)。
同意@Matteo的回答;您所看到的实际上是成千上万的僵尸系统在您的服务器上执行分布式蛮力攻击,因为上面运行着一个网站,这意味着可能有一些用户可能拥有一个可能被猜中的登录帐户脚本小子的工作量非常小-他有一个程序,命令数千个僵尸一次对数百个网站主机进行暴力破解,并仅列出成功的回报列表。
同样,您有时可能会在/var/log/apache2/access.log
文件中看到许多“ http://your.web.host/phpmyadmin/”的排列。这些是针对设置PHPMyAdmin的最常用方法的自动扫描,如果发现一个,则会尝试使用多种已知的攻击(顺便说一句,这就是为什么我开始告诉客户请使用我亲自设置的PMA网站以及保持最新状态,而不是安装自己的版本并忘了对其进行更新,但是现在我们不切实际了。
除了发送原始命令外,它甚至不花时间或带宽。着火了,忘了。
在这种情况下,另一个非常有用的软件是fail2ban,它在多次明显错误的登录或其他利用尝试之后使用iptables阻止连接尝试。
您可以使用IPTABLES停止通信,而无需运行Fail2Ban或DenyHosts之类的守护进程。
# Allows SSH connections (only 4 attempts by an IP every 3 minutes, drop the rest to prevent SSH attacks)
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT