本文内容部分来自:https://www.howtoforge.com/tutorial/how-to-install-fail2ban-on-centos/

介绍

大多数 Linux 服务器通过端口 22 提供 SSH 登录以进行远程管理。该端口是众所周知的端口,因此经常受到暴力攻击。fail2ban 是一款实时扫描日志文件以进行暴力登录尝试并使用 firewalld 或 iptables 禁止攻击者的软件。fail2ban 在管理员设定的时间范围内识别对服务器的不必要访问或安全漏洞,并阻止显示暴力攻击或字典攻击迹象的 IP 地址。该程序在后台运行并持续扫描日志文件以查找异常登录模式和安全漏洞尝试。

fail2ban 是一个非常好用的防爆破工具,不仅仅可以针对 sshd 服务使用,其它服务也可以使用。

安装

  1. $ yum install epel-release
  2. $ yum install fail2ban fail2ban-systemd

如果安装了 SELinux,需要升级策略:

  1. $ yum update -y selinux-policy*

配置

安装后,我们必须使用 jail.local 配置文件配置和定制软件。jail.local 文件覆盖 jail.conf 文件,用于确保您的自定义配置更新安全。

拷贝 jail.conf,副本命名为 jail.local:

  1. $ cp -pf /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

编辑 jail.local:

  1. [DEFAULT]
  2. # ignoreip 可以是 IP 地址、CIDR 掩码或 DNS 主机。
  3. # fail2ban 不会禁止与此列表中地址匹配的主机。
  4. # 可以使用空格分隔符定义多个地址。
  5. ignoreip = 127.0.0.1/8
  6. bantime = 86400 # 封禁时间
  7. findtime = 10800 # 指定时间段内触发 maxretry 次失败即封禁IP
  8. maxretry = 5
  9. # 这里 banaction 必须用 firewallcmd-ipset,这是 firewalld 支持的命令,
  10. # 如果是用 iptables 请不要这样填写,所以该配置文件需要依赖开启 firewalld 服务
  11. banaction = firewallcmd-ipset
  12. action = %(action_mwl)s

创建一个配置文件 /etc/fail2ban/jail.d/sshd.local,写入以下内容:

  1. [sshd]
  2. enabled = true
  3. filter = sshd
  4. port = ssh # 或者直接写端口
  5. action = %(action_mwl)s
  6. logpath = /var/log/secure

启动

需启动 firewalld

  1. $ systemctl enable firewalld
  2. $ systemctl start firewalld

启动 fail2ban:

  1. $ systemctl enable fail2ban
  2. $ systemctl start fail2ban

常用操作

查看被禁的IP列表:

  1. $ fail2ban-client status sshd

解禁 IP:

  1. $ fail2ban-client set sshd unbanip 10.10.69.164