fail2ban 是一个用于防止暴力破解的开源工具,它通过分析日志文件检测失败的登录尝试,并根据预设定的规则对可疑IP进行封禁。以下是安装、配置和管理 fail2ban 的指南。

1. 安装 fail2ban

对于Debian/Ubuntu

sudo apt update
sudo apt install fail2ban

对于CentOS/RHEL

sudo yum update
sudo yum install fail2ban

2. 基本配置

配置文件路径

fail2ban 的主配置文件是 /etc/fail2ban/jail.conf,为了不覆盖原文件,建议创建一个本地配置文件 /etc/fail2ban/jail.local 来进行自定义配置。

创建和编辑配置文件

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

jail.local 文件中,可以根据需要启用和配置不同的监控服务。

3. 配置 jail.local

定义默认配置

[DEFAULT] 部分中设置全局的默认参数。例如,可以定义封禁时间、最大尝试次数等。

[DEFAULT]

# "bantime" is the number of seconds that a host is banned.
bantime  = 10m

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 10m
maxretry = 5

# Default protocol (TCP)
protocol = tcp

# "ignoreip" can be a list of IP addresses, CIDR masks, or DNS hosts. Fail2ban
# will not ban a host which matches an address in this list. Several addresses can
# be defined using space separator.
ignoreip = 127.0.0.1/8 ::1

启用和配置具体的监控服务

SSH 服务示例

/etc/fail2ban/jail.local 中,找到 [sshd] 部分,取消注释并启用对SSH服务的监控。

[sshd]

enabled = true
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

如果没有找到 [sshd] 部分,可以手动添加:

[sshd]

enabled = true
port    = ssh
logpath = /var/log/auth.log
maxretry = 5

配置邮件通知

如果希望在某个IP被封禁时收到通知,可以配置邮件通知功能。

[DEFAULT] 部分中添加:

destemail = your-email@example.com
sender = fail2ban@example.com
mta = sendmail
action = %(action_mwl)s

4. 启动和管理 fail2ban

启动 fail2ban

sudo systemctl start fail2ban

设置开机自启动

sudo systemctl enable fail2ban

检查 fail2ban 状态

sudo systemctl status fail2ban

查看当前运行的监控服务(监控jails)

sudo fail2ban-client status

查看具体监控服务的状态

例如,要查看 sshd 的状态:

sudo fail2ban-client status sshd

手动封禁和解除封禁IP

封禁IP
sudo fail2ban-client set sshd banip <IP地址>
解除封禁IP
sudo fail2ban-client set sshd unbanip <IP地址>

5. 日志和问题排查

查看fail2ban日志

Fail2ban 的日志文件通常在 /var/log/fail2ban.log,通过检查这个文件可以帮助你排查问题。

sudo tail -f /var/log/fail2ban.log

通过上述步骤,可以有效的配置和管理 fail2ban 防止暴力破解,保障系统的安全性。


Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐