最近,我的 FreeBSD 8.0 (GENERIC) 盒子收到了来自台湾 IP 的大量请求,试图猜测密码和所有这些东西。总之,长话短说,我注意到在某个时候我无法 ssh 进入盒子。直接登录后,我注意到巨大的密码猜测的次数,以及指的是我的有线以太网连接的消息msk0: watchdog timeout
.msk0。
我使用 恢复了接口ifconfig msk0 up
,并成功 ping 了该接口的地址。但是,当我尝试 ping 盒子直接连接到的主路由器时,它挂了。尝试 ping 我的外部 IP 地址返回了一大堆sendto: no buffer space available
。
问题通过重启得到解决,但显然这不是理想的解决方法。如果再次发生类似情况,我应该采取什么步骤来恢复连接?我读到有时可以使用 来预防watchdog -t 0
,但我不确定是否要走这条路。
说到预防,有没有办法拒绝在一定时间内登录失败次数达到一定数量的 IP 的连接?例如,15 次登录失败会导致在接下来的 12 小时内拒绝连接?
答案1
我不知道 msk0 支持的芯片;但我在很多其他卡/芯片/驱动程序上看到过类似的问题。99.9% 的时间都是由于固件实现存在缺陷(通常是由于制造成本低廉)无法正确处理看门狗定时器。
此外,这是 Marvel 芯片,而 Marvel 并不支持开源;这可能是驱动程序本身的问题。无论哪种方式,最好的起点是底部有关 NIC 故障排除的手册页面。
我已经遇到过很多这类问题;我发现最简单的解决办法是切换到更昂贵的 NIC(尽管你可以在 eBay 上以极低的价格找到旧款 NIC;这是我购买家用设备的首选)。
如果故障排除不能解决问题,还有更多故障排除专家FreeBSD 论坛也。
答案2
我在另一个答案中遗漏了您问题的最后一部分,因此我将在这里快速添加它。
我使用并强烈推荐给每个拥有面向公众的 *nix 服务器的人:失败禁止
它位于 security/py-fail2ban 下的 ports 树中,因此很容易上手。
构建完成后,/usr/local/etc/fail2ban/jails.local
在您最喜欢的编辑器中打开它。如果您使用 IPFW,这是一个快速入门指南。如果您使用 pf,情况会略有不同。
[DEFAULT]
maxretry = 10
[auth-bsd-ipfw]
enabled = true
filter = bsd-sshd
action = bsd-ipfw
logpath = /var/log/auth.log
启用服务echo 'fail2ban_enable="YES"' >> /etc/rc.conf
并启动它/usr/local/etc/rc.d/fail2ban start
监视 IPFW 中表 1 的内容一段时间,以确保您不会因 而将自己锁定ipfw table 1 list
。一旦它按预期工作,添加防火墙规则以阻止表 1 中的 IP:ipfw add 00030 deny ip from "table(1)" to me
。确保将其添加到您的启动规则集中,以便在重新启动时加载它。
Fail2Ban 可用于监控几乎任何日志文件。大多数服务已将失败的登录记录到日志文件中,大多数其他服务也可以这样做;并且通过 Google 也可以找到大量示例(或在此处询问)。