开始服务器运营后,您将面对众多外部攻击。SSH暴力破解攻击、针对Web应用程序的任意登录尝试、端口扫描等都是日常威胁。如果忽视这些威胁,最终可能导致系统入侵。Fail2Ban是一个轻量级且强大的基于Linux的入侵防御解决方案,能够解决这些问题。
Fail2Ban会自动检测并阻止可疑的IP地址。通过这个,管理员可以轻松保护服务器,而无需额外的麻烦。
Fail2Ban安装方法
Fail2Ban几乎在所有Linux发行版中都有提供,安装非常简单。
Ubuntu/Debian系列
sudo apt update
sudo apt install fail2ban
安装完成后,启动服务并设置为开机自动启动。
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
Fail2Ban基本设置方法
Fail2Ban以/etc/fail2ban/jail.conf
文件作为基本配置文件,建议不要直接修改该文件,而是创建/etc/fail2ban/jail.local
文件进行定制。
创建jail.local文件:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
主要设置项: - bantime:阻止时间(以秒为单位) - findtime:被视为攻击尝试的时间范围(以秒为单位) - maxretry:允许的最大失败尝试次数
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
实际应用案例示例
1. 阻止SSH暴力破解
如上所述,设置[sshd]
监狱后,如果登录失败超过5次,该IP将被阻止1小时。
2. 阻止Apache登录攻击
[apache-auth]
enabled = true
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
对Web服务器的认证失败发生3次时,将被阻止。
Fail2Ban监控方法
监控Fail2Ban是否正常工作的方式有多种。
1. 通过fail2ban-client检查状态
您可以检查特定监狱(例如:sshd)的状态。
sudo fail2ban-client status sshd
输出示例:
状态对于监狱:sshd
|- 过滤器
| |- 当前失败:2
| |- 总失败:15
| `- 文件列表: /var/log/auth.log
`- 行动
|- 当前被禁止:1
|- 总被禁止:3
`- 被禁止的IP列表:192.168.1.100
2. 日志文件监控
Fail2Ban的操作日志记录在/var/log/fail2ban.log
文件中。
tail -f /var/log/fail2ban.log
您可以通过此实时监控阻止和解除事件。
Fail2Ban工作原理
-
日志监控: Fail2Ban持续监控指定的日志文件。(例如:
/var/log/auth.log
,/var/log/apache2/error.log
) -
应用过滤器: 检测特定模式(登录失败、认证错误等)。
-
执行操作: 如果超过设定的
maxretry
,将通过iptables阻止该IP或执行如firewall-cmd、nftables等防火墙命令。 -
自动解除: 当
bantime
到期后,将自动解除阻止。
Fail2Ban采用模块化结构,可以针对不同服务(监狱)进行独立的监控和阻止设置,从而不仅保护SSH,还能增强对多种服务的安全性。
对SSH攻击的永久阻止设置方法
必须果断应对SSH攻击者。通过将Fail2Ban的bantime
设置为-1
,可以永久阻止。
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
bantime = -1
findtime = 600
maxretry = 5
这样设置后,SSH认证失败超过5次的IP将永久阻止,无法访问服务器。
[高级提示] 理解Fail2Ban的基本阻止操作
Fail2Ban不需要单独定义action
即可基本工作。这是因为基本设置中包含使用iptables的阻止命令。
- 如果没有单独指定
action
,将应用[DEFAULT]
部分的action = %(action_)s
设置。 %(action_)s
将在内部使用iptables
命令阻止恶意IP。- 因此,即使不单独编写
action
,也会通过iptables进行IP阻止。
基本阻止命令示例(action_.conf参考)
iptables -I INPUT -s <ip> -j REJECT
也就是说,Fail2Ban将自动控制iptables来阻止攻击IP。
注意:
- 如果想使用UFW、firewalld等其他防火墙工具,则需要明确设置action
。
- 此外,阻止规则在服务器重启时可能会消失,因此建议设置为在启动时自动启动Fail2Ban服务。
另外,也可以直接创建并应用各种过滤器,或进行电子邮件警告设置等高级设置。
从服务器暴露于互联网的那一刻起,安全就不再是选择,而是必需。
一瞬间的疏忽可能会导致致命的后果。
Fail2Ban将成为有效拦截这些威胁的坚固屏障。
请记住,现在就有某人对您的服务器虎视眈眈。
댓글이 없습니다.