fail2ban,保护服务器安全

简介

fail2ban 是一个开源的入侵防御软件,主要用于保护 Linux 服务器和其他 Unix 系统免受暴力破解和其他恶意攻击。它通过监视日志文件来检测可疑活动,并自动采取措施(通常是禁止 IP 地址)来防止进一步的攻击。

主要功能

  1. 自动禁止 IP 地址: 当检测到特定服务(如 SSH、FTP、HTTP 等)中的多次失败登录尝试时,fail2ban 会自动使用防火墙(如 iptables)禁止这些 IP 地址。
  2. 日志监控: fail2ban 监控系统日志(如 /var/log/auth.log/var/log/secure),并根据预定义的规则(过滤器)分析日志内容。
  3. 可配置性: 用户可以根据需求自定义配置文件,设置不同的监控规则、禁止时间、允许的失败尝试次数等。
  4. 多种服务支持: fail2ban 支持多种服务的保护,包括 SSH、HTTP、FTP、SMTP 等。
  5. 邮件通知: 可以配置邮件通知功能,当 IP 被禁止时,系统会自动发送通知邮件给管理员。
  6. 可扩展性: 用户可以创建自定义过滤器和动作,以适应特定的需求。

工作原理

  1. 配置: 用户设置 fail2ban 的配置文件,定义需要监控的服务、日志文件路径、过滤规则等。
  2. 监控: fail2ban 定期扫描指定的日志文件,查找符合过滤器条件的日志条目。
  3. 触发: 如果在设定的时间窗口内,某个 IP 地址的失败尝试次数超过了允许的最大值,fail2ban 会执行相应的动作(如禁止该 IP)。
  4. 解除禁止: 被禁止的 IP 地址在设定的时间后会自动解除禁止,或者管理员可以手动解除。

安装

Debian / Ubuntu

1
2
sudo apt update
sudo apt install fail2ban

配置

配置文件所在的位置:

1
/etc/fail2ban

以下配置参考了:

新建 jail.local

1
sudo vim jail.local
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#DEFAULT-START
[DEFAULT]
bantime = 600
findtime = 300
maxretry = 5
banaction = iptables-allports
action = %(action_mwl)s
backend = systemd
#DEFAULT-END

[sshd]
ignoreip = 127.0.0.1/8
enabled = true
filter = sshd
port = 22
maxretry = 5
findtime = 300
bantime = 600
banaction = iptables-allports
action = %(action_mwl)s
logpath = /var/log/auth.log

启动

启动服务

1
sudo systemctl start fail2ban

常见语法

如果自己忘记了密码,被 fail2ban 阻止了,解除命令

1
sudo fail2ban-client set <jail_name> unbanip <ip_address>

例如

1
sudo fail2ban-client set ssh unbanip 192.168.1.100
页面浏览量Loading
网站总访客数:Loading
网站总访问量:Loading
使用 Hugo 构建
主题 StackJimmy 设计
-->