Linux-Tutorial网络安全:fail2ban与sshguard防非法访问尝试
非法访问尝试防护现状
服务器管理员常面临SSH(安全外壳协议)非法访问尝试,攻击者通过自动化脚本尝试大量用户名密码组合,可能导致服务器资源耗尽或被非法访问。传统防护手段如复杂密码策略虽有效,但需配合主动防御机制形成完整安全体系。
Iptables基础防护
Iptables(防火墙)是Linux系统基础防护工具,可通过规则限制SSH端口访问频率。配置示例:
# 允许已建立连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 限制SSH端口每分钟最多6次新连接
iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --rcheck --seconds 60 --hitcount 6 -j DROP
iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --set -j ACCEPT
完整Iptables配置可参考Iptables.md。
fail2ban实时监控防护
工作原理
fail2ban通过监控日志文件(如/var/log/secure)识别异常登录模式,自动调用Iptables封禁恶意IP。
安装部署
# CentOS系统
yum install -y fail2ban
# Ubuntu系统
apt-get install -y fail2ban
核心配置
创建/etc/fail2ban/jail.local:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 5
bantime = 3600
findtime = 600
maxretry:允许失败次数bantime:封禁时长(秒)findtime:检测窗口(秒)
sshguard轻量级防护方案
特性对比
| 工具 | 资源占用 | 日志分析 | 支持服务 | 自动解封 |
|---|---|---|---|---|
| fail2ban | 中 | 全面 | SSH/FTP/Web等 | 支持 |
| sshguard | 低 | 高效 | SSH/SMTP等 | 支持 |
安装与启动
# CentOS需EPEL源
yum install -y epel-release
yum install -y sshguard
# 启动服务
systemctl start sshguard
systemctl enable sshguard
防护效果验证
攻击模拟测试
使用nmap工具测试防护规则有效性:
nmap -p 22 --script ssh-brute <目标IP>
正常情况下,连续失败5次后IP将被封禁。
日志审计
# fail2ban日志
tail -f /var/log/fail2ban.log
# sshguard日志
tail -f /var/log/messages | grep sshguard
综合防护策略
多层防御架构
- 基础层:Iptables端口过滤 [Iptables.md]
- 监控层:fail2ban/sshguard异常检测
- 审计层:定期检查
/var/log/secure登录日志
安全加固建议
- 修改默认SSH端口(
/etc/ssh/sshd_config) - 启用密钥登录,禁用密码认证
- 配合Crontab定时任务自动备份防火墙规则
常见问题解决
误封处理
# fail2ban解封IP
fail2ban-client set sshd unbanip <被封IP>
# sshguard解封IP(临时)
iptables -D sshguard <规则编号>
服务冲突
当同时运行fail2ban和sshguard时,需确保:
- 监控不同日志文件
- 封禁时长设置差异化
- 使用独立Iptables链(如
fail2ban-ssh和sshguard)
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




