有没有简单的方法可以阻止对我的 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
另一种选择fail2ban
是DenyHosts
它进行更新/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,我转到“高级设置”选项卡并选择“入站过滤器”页面。