我的密码很安全,但我听到有人抱怨说,当发生暴力攻击时,服务器的性能会急剧下降。我该如何保护我的 ubuntu 10.10 服务器免受此类攻击?是否有 apparmor 配置文件?或者还有其他解决方法?
答案1
有不同的解决方案。最好的方法是使用 RSA 身份验证,该身份验证使用公钥/私钥来验证用户身份。
查看这本出色的手册以了解不同的方法(包括 RSA 身份验证):http://www.la-samhna.de/library/brutessh.html
我正在使用第三种解决方案在我的服务器上,因为我不想让我的非技术用户感到复杂:使用iptables
限制每分钟的连接数,这会使暴力攻击效率低下且无效。
这是我正在使用的解决方案:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j LOG --log-prefix "SSH_brute_force "
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP
如上所述这里:这将允许在 60 秒内从任何给定 IP 地址进行三次 22 端口连接,并且要求 60 秒内没有后续连接尝试,然后才会再次允许连接。 --rttl 选项还会在匹配数据包时考虑数据报的 TTL,以尽力减轻对伪造源地址的攻击。
如上述指南所述,最好使用白名单将受信任的用户与这些规则分开:
iptables -N SSH_WHITELIST
然后添加受信任的主机:
iptables -A SSH_WHITELIST -s $TRUSTED_HOST -m recent --remove --name SSH -j ACCEPT
然后制定规则:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_WHITELIST
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j ULOG --ulog-prefix SSH_brute_force
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP
答案2
我的服务器每天会遭受 1 到 2 次暴力 ssh 攻击。我安装了拒绝主机(ubuntu 软件包:denyhosts)。这是一个非常简单但有效的工具,可用于此目的:本质上,它会定期扫描您的日志以检测暴力攻击,并将这些攻击的来源 IP 放入您的 /etc/hosts.deny 文件中。您不会再收到这些攻击,并且您的负载应该会大大减少。它可通过其配置文件 /etc/denyhosts.conf 进行配置,以调整问题,例如多少次错误尝试构成一次攻击等。
由于其透明的工作原理,您可以轻松了解正在发生的事情(电子邮件通知:“啊哈,另一次卑鄙的攻击被挫败了!”)并撤消由于用户反复输入错误密码而导致的错误。
当然,之前关于切换到其他身份验证方法的所有内容都适用,但有时您的要求与用户的要求不一致。
此外,iptables 中的新连接速率限制可能比通过 hosts.deny 拒绝访问更好。因此,也请查看 fail2ban。但如果你知道 ssh 暴力破解是你的主要担忧(手动查看 /var/log/auth.log 来确定这一点),请使用这个非常简单且影响较小的工具。
答案3
- 将 sshd 端口更改为非标准端口
- 使用
knockd
来实现端口敲击系统 - 使用 iptables 的
recent
andhashlimit
匹配来限制连续的 SSH 尝试 - 不要使用密码,而是使用 SSH 密钥
答案4
服务器在网络上暴露的范围有多广?也许你可以和网络管理员谈谈,看看是否可以监控和限制对服务器的网络访问。即使账户登录是安全的,服务器似乎也可能遭受简单的 DoS / DDoS 攻击。