sla*_*213 7 iptables security networking fail2ban
当用户尝试以任何无效用户名登录时,有没有办法自动阻止 IP 地址?我已经有了:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 31536000
Run Code Online (Sandbox Code Playgroud)
在 /etc/fail2ban/jail.conf
首先,在 中定义无效用户的过滤器filter.d/sshd-invaliduser.conf:
[INCLUDES]
before = common.conf
[Definition]
_daemon = sshd
failregex = ^%(__prefix_line)s[iI](?:llegal|nvalid) user .*? from <HOST>(?: port \d+)?\s*$
ignoreregex =
[Init]
journalmatch = _SYSTEMD_UNIT=sshd.service + _COMM=sshd
Run Code Online (Sandbox Code Playgroud)
然后在jail.local:
[sshd-invaliduser]
enabled = true
maxretry = 1
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Run Code Online (Sandbox Code Playgroud)
这适用于 Debian 9 上的 fail2ban 0.9.6-2。
换句话说,无效用户可以尝试 2 次,而有效用户的无效密码可以尝试 5 次。如何在fail2ban 中做到这一点?
反对这样做的一个令人信服的论据是,它让攻击者知道用户名是否有效,从而大大减少了暴力攻击的搜索空间。
我在尝试做同样的事情时发现了你的问题,但现在我改变了主意。除了保密好处之外,为什么要提前切断攻击者的攻击来节省时间呢?
我无法帮助你处理fail2ban,但我正在非常成功地使用denyhosts来完成这件事。您可以调整很多参数,它还有一个分布式数据库,您可以在其中发送和接收其他 badhost。
这里有更详细的操作方法:
安装denyhosts包( sudo apt-get install denyhosts)
查看 中的默认配置,您可能会对和选项/etc/denyhosts.conf感兴趣。DENY_TRESHOLD_INVALIDDENY_TRESHOLD_VALIDDENY_TRESHOLD_ROOT
至于同步服务器,默认情况下它是禁用的,您需要通过取消注释SYNC_SERVER选项来启用它。
将选项设置为 1w 或类似的值也不错,PURGE_DENY以防万一您自己被封锁,因此该条目将在一周后被清除,您将能够再次登录。