SSH 爆破攻击分析与防御指南
一、SSH爆破攻击概述
SSH爆破(Brute Force Attack)是指攻击者通过自动化工具尝试大量用户名和密码组合,试图暴力破解SSH服务器的登录凭证。这是最常见的网络攻击方式之一。
二、攻击特征识别
从您之前提供的日志来看,典型的SSH爆破攻击特征包括:
- 大量无效用户尝试:
Invalid user postgres from 115.241.228.34 port 48582 Invalid user dbadmin from 165.154.105.89 port 43696 - 短时会话:
session opened for user root(uid=0) by (uid=584788) session closed for user root(实际攻击中可能没有成功登录) - 来自不同IP的频繁连接:
- 多个IP地址短时间内尝试连接
- 使用随机端口发起连接
三、防御措施
1. 禁用密码认证(推荐)
修改/etc/ssh/sshd_config:
PasswordAuthentication no
PermitRootLogin no
ChallengeResponseAuthentication no
然后重启SSH服务:
bashbash复制sudo systemctl restart sshd
2. 使用密钥认证
- 生成密钥对: bashbash复制
ssh-keygen -t rsa -b 4096 - 将公钥上传到服务器: bashbash复制
ssh-copy-id user@server
3. 限制登录用户
在sshd_config中添加:
AllowUsers your_username
DenyUsers root postgres dbadmin
4. 修改默认SSH端口
修改sshd_config:
Port 2222
然后重启服务。
5. 安装Fail2Ban
安装并配置Fail2Ban自动封禁恶意IP:
bashbash复制sudo apt install fail2ban
编辑/etc/fail2ban/jail.local:
[sshd]
enabled = true
port = 22,2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
6. 使用防火墙限制访问
只允许特定IP访问SSH:
bashbash复制sudo ufw allow from 192.168.1.100 to any port 2222
sudo ufw enable
四、攻击检测与响应
1. 监控SSH日志
定期检查/var/log/auth.log:
bashbash复制sudo tail -f /var/log/auth.log | grep sshd
2. 设置入侵检测
安装并配置OSSEC或AIDE进行实时监控。
3. 定期审计账户
检查无效用户:
bashbash复制sudo awk '/Failed password/ {print $(NF-5)}' /var/log/auth.log | sort | uniq -c | sort -nr
五、应急响应
如果发现正在进行的爆破攻击:
- 立即更改SSH端口: bashbash复制
sudo nano /etc/ssh/sshd_config # 修改Port行后重启服务 sudo systemctl restart sshd - 临时封禁可疑IP: bashbash复制
sudo iptables -A INPUT -s 115.241.228.34 -p tcp --dport 22 -j DROP - 启用只读模式(如果可能): bashbash复制
sudo mount -o remount,ro /
六、高级防护建议
- 双因素认证:为SSH添加TOTP或U2F认证
- 端口敲门:配置端口敲门机制
- 网络隔离:将SSH服务放在DMZ或专用子网
- 日志集中管理:将SSH日志发送到SIEM系统分析
通过以上措施,可以显著降低SSH爆破攻击的风险。建议定期审计安全配置,并保持系统和安全工具更新。
注意ubuntu的ssh重启命令是
sudo systemctl restart ssh
发表回复