根据 ssh 尝试禁止整个系统

根据 ssh 尝试禁止整个系统

我已经设置了 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覆盖就足够了:banactionjail.local

[DEFAULT]
# banaction = iptables-allports
banaction = %(banaction_allports)s

# [sshd]
# # banaction = iptables-allports
# banaction = %(banaction_allports)s

一些多端口操作允许设置端口,例如0:65535,因此您也可以port = 0:65535在相应的监狱中使用(但所有端口也会在所有协议等中禁止)。

如果我禁止自己,我会被锁定吗(静态 IP)?

您可以将您的(动态?)IP 添加到ignoreipfail2ban 以避免在测试期间被禁止,也可以临时使用命令行:

# 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

相关内容