有时,我控制下的一台 VPS 会受到 POP3 登录尝试的轰炸。它们都失败了,但大量生成的进程和活动连接几乎相当于 DoS 攻击。
当我看到这种情况时,我通常会进去并手动阻止 iptables 中的违规 IP 地址。我想要什么是在服务器上运行一个进程来监视系统日志(或其他适当的位置),并且如果存在与特定模式匹配的重复日志条目,则将它们传递给命令,然后该命令将提取相关部分(远程主机 IP地址,在本例中)并执行命令(向 iptables 添加 DROP 规则)。例如,如果具有相同消息部分的日志条目在一分钟内记录了五次,则执行此操作。
VPS 运行 syslog-ng 以防有帮助。我在 iptables 中设置了速率限制,这有所帮助,但肯定不是完美的,因为它阻止我自己的连接尝试,就像阻止攻击者的连接尝试一样(获得已建立连接的人会很幸运)。由于应该连接的客户端具有来自动态块的 IP 地址,因此很难在不限制速率的情况下仅添加覆盖规则。
由于 VPS 在 Virtuozzo 上运行,虽然我确实拥有来宾的 root 访问权限,但我无法加载自定义内核模块或自定义内核。所以它必须在用户空间中完成。
什么软件可以帮助我?
答案1
答案2
我使用 OSSEC (http://www.ossec.net/)。它进行日志分析,但也具有主动响应选项(动态添加和删除 iptables 和hosts.deny 条目),只需最少的设置。它有几个默认规则,但您可以添加自己的规则。我已经对其进行了测试,并在 CentOS、Ubuntu 和 Slackware 机器(物理机和 VPS)的生产中使用它。
安装非常简单(调整它,主要是将其配置为忽略某些规则,这需要更多时间)。如果您使用它并启用主动响应功能,默认值通常就足够了。
我建议保留默认的阻止时间(几分钟),使用您的 IP 添加白名单(或您信任的其他服务器的 IP,以防万一您的 IP 不是静态的并且服务器阻止您)。
此外,如果您需要更复杂的阻止管理,您可以将 OSSEC 配置为使用 bash(例如)脚本来检查和处理 IP 地址,然后再进行实际的主动阻止。