Fail2ban是一种开源入侵检测和预防工具,可扫描访问日志中显示多次密码登录尝试失败迹象的恶意IP地址,该工具通过更新防火墙规则以拒绝IP地址来禁止IP。
Fail2ban可用于保护Linux系统上的不同服务,包括SSHD、WordPress访问、Postfix 等。在本文中,小编将简单介绍在 CentOS 8 | RHEL 8系统上安装和配置Fail2ban详细过程。
CentOS 8| RHEL 8安装Fail2ban
首先必须要在CentOS 8/RHEL 8系统上安装EPEL存储库才能获取Fail2ban包。
sudo dnf -y install epel-release
安装Fail2ban包:
sudo dnf -y install fail2ban
启动并启用Fail2ban:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
在CentOS 8| RHEL 8系统中配置Fail2ban
安装成功后,下一步就是配置fail2ban。
Fail2ban 配置文件驻留在该/etc/fail2ban/
目录中。
主要配置文件是/etc/fail2ban/jail.conf
. 过滤器存储在/etc/fail2ban/filter.d/
目录中。
不建议对jail.conf
文件进行任何更改,因为这些配置将被*.local文件中的配置覆盖。
因此,比较好的方法是创建一个单独的文件jail.local进行配置。
创建之后进行配置: /etc/fail2ban/jail.local
sudo vi /etc/fail2ban/jail.local
然后添加以下参数:
[DEFAULT]
bantime = 21600
findtime = 300
maxretry = 3
banaction = iptables-multiport
backend = systemd
banaction_allports = iptables-allports
以上参数的简要说明:
- Bantime – 以秒为单位禁止IP的时间长短
- maxretry – 主机被禁止前的重试次数
- Findtime – 如果主机在最后“ findtime ”秒内生成了“ maxretry ”,fail2ban会禁止该主机。
- banaction – 要实施的禁令行动的类型
- ignoreip – 可以指定将被fail2ban忽略的 IP 地址
- backend – 用于获取日志文件修改的后端。
- Banaction_allports – Fail2ban阻止每个端口上的远程IP地址
配置Jails以保护 SSH、Postfix 和Dovecot
接下来,小编将简单介绍如何为SSH、Postfix和dovecot配置 Fail2ban jail。
在/etc/fail2ban/jail.local
文件中,为要启用的服务添加参数。
对于SSH:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
对于Postfix:
[postfix]
enabled = true
port = smtp,465,submission
Dovecot:
[dovecot]
enabled = true
port = pop3,pop3s,imap,imaps,submission,465,sieve
Postfix-SASL
[postfix-sasl]
enabled = true
port = smtp,465,submission,imap,imaps,pop3,pop3s
在上面的配置中,使用了以下属性:
- Enabled– 可以设置为true或false以启用/禁用过滤器。
- Port– 运行服务的端口,如果使用的端口是默认端口,则可以使用服务名称,否则需要明确指定端口号。
- Filter– 位于/etc/fail2ban/filter.d/目录中的过滤器文件的名称,其中包含用于解析日志的fileregex信息。
- Logpath – 服务日志的路径
使用Fail2ban客户端
Fail2ban-client是用于从shell运行Fail2ban的命令行工具。
一般用法是 fail2ban-client <COMMAND>
以下是 Fail2ban-client 命令列表:
start
: 用于启动fail2ban服务器和jailsreload
: 用于重新加载 Fail2ban 配置stop
: 停止服务器status
: 用于检查服务器状态并启用 jailsstatus JAIL
: 显示监狱的状态和当前被禁止的 IP
例子:
- Fail2ban-client status
$ sudo fail2ban-client status
Status
|- Number of jail: 6
`- Jail list: dovecot, postfix, postfix-sasl, proftpd, sshd, webmin-auth
- 2. Fail2ban-client status sshd
$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 22
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 0
|- Total banned: 4
`- Banned IP list:
- 被禁止的IP地址:
要从jail中删除IP,则可以通过以下命令执行此操作:
$ sudo fail2ban-client set <jailname> unbanip <IP>
例子:
$ sudo fail2ban-client set sshd unbanip 192.168.100.11
在上面的例子中,已经从sshd jail中删除了IP地址192.168.100.11。
结论
Fail2ban该工具对于入侵检测和预防攻击(例如 RHEL/CentOS 8系统上的暴力破解)非常有用,可以有效保护系统的安全。
以上就是在CentOS/RHEL 8系统设置Fail2ban的详细过程,仅供参考。在租用国外服务器的时候,强烈建议大家安装Fail2ban,以保障网站的稳定性和数据安全性。