在 ubuntu 22.04 中,通过源码安装 Fail2ban 服务
系统环境
标题 | 版本 | 备注 |
---|---|---|
系统版本 | ubuntu 22.04.3 LTS (Jammy Jellyfish) | - |
内核版本 | 5.15.0-88-generic #98-Ubuntu SMP Mon Oct 2 15:18:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux | - |
Python | v3.10.12 | - |
Fail2ban | v1.1.0.1 | - |
Fail2ban 简介
Fail2ban 项目地址:https://github.com/fail2ban/fail2ban
Fail2ban 是一个用于保护 Linux 服务器的安全工具,主要用于防范暴力攻击和恶意登录。它通过监视系统日志文件来检测恶意行为,并采取预防措施来阻止攻击者。以下是 Fail2ban 的一些主要功能和特点:
日志监控: Fail2ban 会监视系统日志文件(如
/var/log/auth.log
),以检测到来的登录尝试、密码错误等事件。检测恶意行为: 它使用配置文件中定义的规则和模式来识别恶意行为,比如重复的登录失败、SSH 访问尝试等。
自动封禁: 一旦检测到恶意行为,Fail2ban 会自动封禁攻击者的 IP 地址。默认情况下,它会将攻击者的 IP 地址添加到防火墙规则中(如 iptables 或 firewalld)以屏蔽进一步的访问。
可定制性: Fail2ban 允许用户根据自己的需求定制防护规则和行为。用户可以编辑配置文件,定义自己的监控规则、阈值和封禁动作。
日志记录: 它记录所有的封禁事件和解除封禁事件,以便管理员追踪安全事件并进行审计。
轻量级且高效: Fail2ban 是一个轻量级的程序,对系统资源的消耗很低,可以长时间运行而不会对服务器性能产生显著影响。
总的来说,Fail2ban 是一种强大的工具,可以帮助管理员保护他们的 Linux 服务器免受暴力攻击和恶意登录的威胁。
Fail2ban 安装
1.从 Fail2ban 项目地址将 Fail2ban 整个项目克隆到服务器的 /usr/local/src/
目录下:
$ sudo git clone https://github.com/fail2ban/fail2ban.git /usr/local/src/fail2ban |
2.进入克隆目录,执行 python3 install setup.py
安装 fail2ban:
$ cd /usr/local/src/fail2ban && sudo python3 setup.py install |
安装完成后,执行 fail2ban-client -V
看是否能正常输出 fail2ban 的版本号:
$ sudo fail2ban-client -V |
3.复制安装在 /usr/local/src/fail2ban/build/
目录下的 fail2ban 启动脚本文件到 /lib/systemd/system/
目录下:
$ sudo cp /usr/local/src/fail2ban/build/fail2ban.service /lib/systemd/system/ |
其脚本文件的内容为:
[Unit] |
4.执行命令 systemctl daemon-reload
加载下启动脚本:
$ sudo systemctl daemon-reload |
5.执行命令 systemctl enable --now fail2ban.service
启动 fail2ban 并将其设置为开机启动:
$ systemctl enable --now fail2ban.service |
6.执行命令 systemctl status fail2ban.service
查看其启动状态,如果 Active
为 running
,则说明启动成功:
$ sudo systemctl status fail2ban.service |
Fail2ban 配置
安装默认生成的配置文件都在 /etc/fail2ban
目录下,其中各文件或目录的作用如下:
$ sudo tree -L 1 /etc/fail2ban/ |
fail2ban.conf
fail2ban.conf 是 fail2ban 的主配置文件,其中包含了一些全局配置选项,如日志文件路径、pid 文件路径、socket 路径 以及数据库路径、清理等:
[DEFAULT] # 默认配置部分 |
jail.conf
Jail.conf 配置文件的作用
Jail.conf 是 Fail2ban 软件的核心配置文件,用于定义服务、过滤器和行为等配置项,控制 Fail2ban 如何监视和阻止可疑登录行为。
主要作用:
- 定义需要保护的服务,例如 SSH、FTP、Telnet 等。
- 配置针对每个服务的登录失败和攻击行为的检测规则。
- 设定封禁策略,例如封禁 IP 地址、限制登录尝试次数等。
- 配置通知策略,例如将可疑登录行为发送邮件通知管理员等。
配置文件结构:
- **[DEFAULT]**:默认配置项,适用于所有服务。
- **[服务名]**:针对特定服务的配置项,例如 SSH、FTP 等。
重要配置项:
- enabled: 是否启用该服务配置。
- port: 监听的端口号。
- filter: 使用的过滤器名称。
- maxretry: 最大登录尝试次数。
- bantime: 封禁时间长度。
- action: 采取的封禁动作,例如 iptables、nftables 等。
- logpath: 日志文件路径。
- backend: 日志后端,例如 syslog、email 等。
示例:
[DEFAULT] |
配置文件示例:
总结:
- Jail.conf 是 Fail2ban 的核心配置文件,用于配置服务、过滤器、行为等。
- 通过 Jail.conf 可以有效地监视和阻止可疑登录行为,提高服务器安全性。
注意:
- Jail.conf 配置文件的语法较为复杂,修改配置时请务必谨慎。
- 建议在修改配置之前备份配置文件。
参考资料: