安装fail2ban
更新软件仓库: sudo apt-get update
安装fail2ban: sudo apt-get install fail2ban
ssh服务器配置Fail2ban
新建配置文件:sudo vim /etc/fail2ban/jail.local
[DEFAULT]
# 忽略的IP列表,不受设置限制
ignoreip = 127.0.0.1/8
# 被封IP禁止访问的时间,单位是秒
bantime = 86400
# 检测时间,在此时间内超过规定的次数会激活fail2ban,单位是秒
findtime = 300
# 允许错误登录的最大次数
maxretry = 3
# 日志修改检测机制(gamin、polling和auto这三种)
backend = auto
# 定义日志级别,默认
loglevel = 3
# 定义 fail2ban 日志文件
logtarget = /var/log/fail2ban.log
# sock 文件存放位置,默认
socket = /var/run/fail2ban/fail2ban.sock
# pid 文件存放位置,默认
pidfile = /var/run/fail2ban/fail2ban.pid
# 邮件通知参数
sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"]
## 收件人地址 ## 发件人地址
[sshd]
# 激活
enabled = true
# 规律规则名,对应filter.d目录下的sshd.conf
filter = sshd
banaction = firewallcmd-new
# 检测的系统的登陆日志文件。这里要写sshd服务日志文件
logpath = /var/log/secure
# 禁止用户IP访问主机1小时
bantime = 3600
# 在5分钟内内出现规定次数就开始工作
findtime = 300
# 3次密码验证失败
maxretry = 3
[sshd-ddos]
enabled = true
port = 8888
重启服务: sudo systemctl restart fail2ban
测试 fail2ban
测试fail2ban是否能正常工作,尝试通过使用错误的密码来用ssh连接到服务器模拟一个暴力破解攻击。同时监控/var/log/fail2ban.log,该文件记录在fail2ban中发生的任何敏感事件
监控:tail -f -n 10 /var/log/fail2ban.log
解锁特定的IP地址
sudo fail2ban-client set ssh-iptables unbanip 192.168.1.8
注: 如果你停止了Fail2ban 服务,那么所有的IP地址都会被解锁。当你重启 Fail2ban,它会从/etc/log/secure(或 /var/log/auth.log)中找到异常的IP地址列表,如果这些异常地址的发生时间仍然在禁止时间内,那么Fail2ban会重新将这些IP地址禁止