
随着Linux服务器的广泛使用,SSH暴力破解攻击成为了运维团队需要面对的常见威胁。攻击者通过暴力尝试用户名和密码的组合,试图非法访问服务器。一旦成功,服务器的所有数据和功能将面临严重威胁。本文将从技术角度出发,探讨应对SSH暴力破解的高效解决方案。
修改默认SSH端口
默认情况下,SSH服务运行在22端口。攻击者通常会针对这一默认端口发起攻击。通过修改SSH的默认端口,可以有效降低被扫描和攻击的概率。运行以下命令修改端口:
# 编辑SSH配置文件
vim /etc/ssh/sshd_config
# 修改Port配置为任意高位端口,例如
Port 2222
注意: 修改后需通过防火墙开放新端口,并重启SSH服务:
# 重启SSH服务
systemctl restart sshd
禁用Root用户登录
禁止使用Root账户直接通过SSH登录能够大幅提升安全性,因为Root账户被破解后,攻击者可以立即获得系统最高权限。编辑
/etc/ssh/sshd_config
文件:
# 禁用Root登录
PermitRootLogin no
之后,创建普通用户并通过该用户登录:
# 创建新用户
adduser username
passwd username
并赋予必要的sudo权限。
实施基于密钥的登录
较弱的密码是暴力破解的突破口,因此建议完全禁用密码登录,改用SSH密钥认证。这不仅能杜绝密码攻击,还能提升登录效率。生成SSH密钥对指令如下:
ssh-keygen -t rsa -b 4096
复制公钥到远程服务器:
ssh-copy-id user@server_ip
然后编辑SSH配置文件禁用密码登录:
PasswordAuthentication no
部署自动拦截工具
DenyHosts和Fail2Ban是两款常用的防爆破软件。它们通过监控SSH日志,自动屏蔽频繁尝试密码的IP地址。例如,在CentOS中安装和配置DenyHosts:
# 安装DenyHosts
yum install -y denyhosts
编辑其配置文件/etc/denyhosts.conf
,修改关键参数:
SECURE_LOG = /var/log/secure
DENY_THRESHOLD_INVALID = 5
HOSTS_DENY = /etc/hosts.deny
启动服务即可:
systemctl start denyhosts
systemctl enable denyhosts
设置IP访问白名单
限制SSH访问仅允许特定的IP,可以从根源上杜绝大多数攻击。配置防火墙规则,例如通过
iptables
设置白名单:
iptables -A INPUT -p tcp -s trusted_ip --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
定期分析日志
定期查看SSH日志能够帮助发现潜在威胁。通过命令查看失败的登录尝试:
grep "Failed password" /var/log/secure
发现异常IP时可以手动将其加入黑名单,或进一步优化防护策略。
SSH暴力破解并不可怕,但不加防范则会产生灾难性的后果。通过修改端口、禁用Root登录、使用密钥认证、部署拦截工具以及设置白名单,可以显著提升服务器防护能力。运维人员还需保持对服务器访问的关注,通过日志分析及时响应异常情况,确保系统安全性。