折腾了半天终于弄好了,参考:
安装fail2ban
apt install fail2ban
配置文件:/etc/fail2ban/jail.d/defaults-debian.conf (和CENTOS的JAIL.LOCAL不同):
[DEFAULT]
# 用于指定哪些地址ip可以忽略 fail2ban 防御,以空格间隔。
#ignoreip = 127.0.0.1/8
# ssh客户端主机被禁止的时长(默认单位为秒)
bantime = 86400
# 过滤的时长(秒)
findtime = 600
# 匹配到的阈值(允许失败次数)
maxretry = 2
[ssh-iptables]
# 是否开启
enabled = true
# 过滤规则
port = 22
filter = sshd
# debian日志文件的路径
logpath = /var/log/auth.log
# centos7日志文件的路径
#logpath = /var/log/secure
# 匹配到的阈值(次数)
maxretry = 2
fail2ban启动命令:
sudo systemctl start fail2ban
发现不加SUDO不行,很奇怪。
启动发现fail2ban启动失败,原因是找不到日志文件,发现默认情况下,debian不再有/var/log/auth.log文件,解决办法是安装rsyslog,安装后就有auth.log文件了。
apt-get install rsyslog
systemctl restart fail2ban
systemctl status fail2ban
这次fail2ban启动正常了,也开始工作了。但发现ban的ip尽然还能访问,查了一圈发现是没有iptables,fail2ban依赖于iptables实现ban ip,好吧,安装iptables:
apt install iptables
现在一切正常了。
常用命令:
#查看当前被禁止登陆的ip
fail2ban-client status ssh-iptables
[root@debian]# fail2ban-client status ssh-iptables
Status for the jail: ssh-iptables
|- Filter
| |- Currently failed: 0 # 当前失败次数
| |- Total failed: 3 # 总失败次数
| `- File list: /var/log/auth.log # 日志文件路径列表
`- Actions
|- Currently banned: 1 # 当前禁止访问的IP数量
|- Total banned: 1 # 禁止IP总数
#取消ban某个ip
fail2ban-client set ssh-iptables unbanip 42.34.45.78
#如果修改了配置需要重启生效:
fail2ban-client reload