我已经设置了 fail2ban 来禁止任何没有我的证书尝试通过 .ssh 进行连接的人。
我目前有 1886 个被禁地址(并且还在增加),其中大多数来自中国。中国不是我的 nginx 网络服务器的目标受众,因此我可以使用 封锁整个国家geoip_country
,但我还想明确拒绝那些被禁名单上的用户访问 http/https/git。
我有这两种配置:
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = %(nginx_error_log)s
maxretry = 3
bantime = -1
和
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 3
findtime = 600
bantime = -1
有没有办法将这两者结合起来?禁止任何地方,在任何地方应用阻止?
我不太清楚如何进行任何测试,因为如果我禁止自己,我就会被锁定(静态 IP)?
答案1
有什么方法可以把这两者结合起来吗? 禁止任何地方,在任何地方应用拦截?
Fail2ban 有几种*-allports
操作(默认是多端口),因此您可以简单地将其设置为banaction
。还有一个默认替换变量banaction_allports在你的,所以通常用你的监狱或默认部分中的内容jail.conf
覆盖就足够了:banaction
jail.local
[DEFAULT]
# banaction = iptables-allports
banaction = %(banaction_allports)s
# [sshd]
# # banaction = iptables-allports
# banaction = %(banaction_allports)s
一些多端口操作允许设置端口,例如0:65535
,因此您也可以port = 0:65535
在相应的监狱中使用(但所有端口也会在所有协议等中禁止)。
如果我禁止自己,我会被锁定吗(静态 IP)?
您可以将您的(动态?)IP 添加到ignoreip
fail2ban 以避免在测试期间被禁止,也可以临时使用命令行:
# add 192.0.2.1 to be ignored in sshd:
fail2ban-client set sshd addignoreip 192.0.2.1
# remove 192.0.2.1 to be ignored in sshd:
fail2ban-client set sshd delignoreip 192.0.2.1