多次 SSH 登录尝试失败后禁止 IP?

多次 SSH 登录尝试失败后禁止 IP?

有没有简单的方法可以阻止对我的 sshd 进行暴力登录攻击的 IP?也许只是增加登录提示出现的时间。

我知道 fail2ban,但是我尝试的时候它确实挂了。另外它需要 semdmail,我不想在桌面上设置它。当发生某些事情时,我也不想通过互联网发送电子邮件。如果 fail2ban 可以使用桌面通知 (D-Bus),那就太好了。但我想知道为什么我必须为这样的事情安装一些单独的东西?为什么 sshd 不能这样做?(当同一个 IP 多次登录失败时增加等待时间。)

答案1

最好的方法是使用 netfilter 的内置功能。如果在给定时间内 TCP 端口被访问次数过多,则需要超时。

有一个最后一次露面每个主机的时间戳...

$ sudo iptables -A INPUT  -p tcp -m tcp --dport 22 -m state \
    --state NEW -m recent                                   \
    --update --seconds 60 --hitcount 4 --name DEFAULT --rsource -j DROP

点击此处阅读全文。 http://web.archive.org/web/20130510023127/http://blog.bigdinosaur.org/securing-ssh-with-iptables/

还有许多更复杂的 netfilter 插件可以实现这一功能。

不要使用hosts.deny,那已经过时了。那是 TCP Wrappers,已经过时了,需要编程支持。

我已在生产防火墙上使用过这种技术,效果很好。

答案2

另一种选择fail2banDenyHosts它进行更新/etc/hosts.deny而不是管理netfilter规则。

答案3

您应该创建自己的 fail2ban 操作和过滤器。让我举个例子

只需在 /etc/fail2ban/jail.conf 中为新的桌面通知操作添加行即可。

[ssh-with-desktop-notification]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
         ssh-with-desktop-notification[title=<Title Here>, content=<Content Here>]
logpath = /var/log/secure
maxretry = 3

创建一个新文件,文件名为/etc/fail2ban/actions.d/ssh-with-desktop-notification.conf并将任何命令添加到动作开始、动作停止事件。例如,我假设您使用 GNOME 作为桌面环境,

actionban =  `which notify-send` <content>

完成所有这些新行之后,不要忘记重新启动 fail2ban 服务。

/etc/init.d/fail2ban restart

总之,这个新的 fail2ban 操作检查/var/log/安全日志文件,记录中断尝试。3 次操作失败后,它将运行iptables带有三个参数(名称、端口和协议)。运行 iptables 后,fail2ban 将查找/etc/fail2ban/actions.d文件夹ssh-带桌面通知.conf文件。如果文件存在,则它将查找文件以查找行动禁令事件。然后,如果行动禁令事件存在fail2ban在禁止某个IP时执行带有参数(标题和内容)的actionban命令。

注意:请检查命令是否以 fail2ban 用户权限执行。

答案4

您没有提供太多有关配置的信息,但如果您使用的是路由器,通常可以使用入站过滤器对其进行编程,这将使其阻止来自指定 IP 或 IP 范围的任何内容。例如,使用我的 D-Link,我转到“高级设置”选项卡并选择“入站过滤器”页面。

相关内容