Fail2Ban概述

Fail2Ban 是一种用于防止暴力破解攻击的安全工具,它通过监控系统的日志文件(如 /var/log/auth.log)来检测异常的登录尝试,并自动将可疑的 IP 地址加入黑名单,从而阻止其进一步的访问请求。

Fail2Ban的工作原理

  • 日志监控:Fail2Ban 持续监控指定的日志文件,寻找失败的登录尝试记录。
  • 规则匹配:根据预设的规则(如连续失败的次数和时间间隔),Fail2Ban 识别出潜在的恶意 IP 地址。
  • 自动封禁:一旦某个 IP 地址被判定为可疑,Fail2Ban 会更新防火墙规则,暂时禁止该 IP 地址的访问。
  • 解封机制:封禁通常是有时限的,过了设定时间后,Fail2Ban 会自动解除对该 IP 的封禁。

Fail2Ban的配置灵活性

  • 支持多种服务:Fail2Ban 默认支持多种常见服务的日志分析,如 SSH、Apache、FTP 等。
  • 自定义规则:用户可以根据需要自定义监控的日志文件和封禁规则,以适应特定的安全需求。

安装

  • 更新软件源(可选步骤)
Bash
sudo apt update && apt upgrade
  • 安装
Bash
sudo apt install fail2ban
  • 启动服务并设置开机自动启动
Bash
sudo systemctl start fail2ban
sudo systemctl enable fail2ban

配置

Fail2Ban 的主要配置文件位于 /etc/fail2ban 目录下。关键的配置文件包括:

  • jail.conf 或 jail.local 文件:这个是主要的配置文件,用于定义各种 jail 的设置,如 SSH、Apache、Nginx 等,并包含该服务的监控规则、封禁时间等参数。
  • action.d/:该目录包含各种定义的 action,这些 action 定义了在遇到攻击时需要采取的措施,如更新防火墙规则等。
  • filter.d/:该目录包含各种过滤器的定义文件,这些过滤器用于从日志文件中提取出攻击模式。

配置示例

  • 复制配置文件,避免直接修改默认配置文件 jail.conf
Bash
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vim /etc/fail2ban/jail.local
  • 找到对应的 [sshd] 部分,修改配置为如下内容
INI
[sshd]
enable  = true
port    = 22
maxretry= 5            # 在指定过滤时间内最大重试次数
findtime= 600          # 间隔时间,单位为 s
bantime = 43200        # 封禁时间,单位为 s
logpath = %(auth_log)s # 日志路径(Ubuntu 默认为 /var/log/auth.log)
backend = %(sshd_backend)s

重启并验证服务

  • 重新加载配置
Bash
sudo systemctl reload fail2ban
  • 通过 fail2ban-client 查看服务状态
Bash
sudo fail2ban-client status sshd
  • 监控日志位置:/var/log/fail2ban.log

fail2ban-client 常用指令

  • 查看 Fail2Ban 状态
Bash
sudo fail2ban-client status
  • 查看指定 jail 状态
Bash
sudo fail2ban-client status <jail-name>
  • 启动、停止、重启指定 jail
Bash
sudo fail2ban-client start <jail-name>
sudo fail2ban-client stop <jail-name>
sudo fail2ban-client restart <jail-name>
  • 添加、移除指定 IP 地址
Bash
sudo fail2ban-client set <jail-name> banip <ip-address>
sudo fail2ban-client set <jail-name> unbanip <ip-address>

感谢读到这里

日志还会继续,欢迎常来。

返回首页