首页 / 资讯中心 / 文章详情

SSH安全防护:从暴力破解到密钥登录实战指南

SSH安全防护:从暴力破解到密钥登录实战指南 ★ FEATURED ARTICLE
1. 事件背景与问题定位去年夏天我们团队的一台测试服务器突然出现异常流量暴增最终导致整个测试环境瘫痪。经过排查发现这台CentOS 7.9系统的测试机由于使用默认SSH端口22和弱密码Test123在开放公网3天后就遭到暴力破解攻击。攻击者不仅获取了root权限还植入了挖矿程序。这个真实案例让我深刻认识到SSH安全配置的重要性。2. SSH暴力破解攻击原理剖析2.1 攻击实施流程典型的SSH暴力破解攻击通常遵循以下步骤扫描探测攻击者使用nmap等工具扫描开放22端口的IP段用户枚举通过hydra等工具尝试枚举有效用户名密码爆破使用字典文件如rockyou.txt进行组合尝试权限提升获取普通用户权限后尝试提权到root后门植入在~/.ssh/authorized_keys写入攻击者公钥2.2 常见弱口令类型根据实际攻防演练经验最容易被破解的密码包括简单数字序列123456、111111等键盘相邻键组合qwerty、1qaz2wsx等默认密码admin、password等公司名年份Company2023等短密码8位任何短密码无论复杂度多高都容易被爆破3. 防御方案设计与实施3.1 基础防护措施3.1.1 密码策略强化强制使用12位以上密码要求包含大小写字母、数字和特殊字符定期90天更换密码禁止使用最近5次用过的密码3.1.2 SSH配置优化修改/etc/ssh/sshd_config关键参数Port 58222 # 修改默认端口 PermitRootLogin no # 禁止root直接登录 MaxAuthTries 3 # 限制尝试次数 LoginGraceTime 1m # 登录超时设置 PermitEmptyPasswords no # 禁止空密码 PasswordAuthentication no # 禁用密码登录密钥登录时3.2 高级防护方案3.2.1 密钥登录配置本地生成密钥对ssh-keygen -t ed25519 -C your_emailexample.com上传公钥到服务器ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 58222 userhost测试密钥登录ssh -i ~/.ssh/id_ed25519 -p 58222 userhost3.2.2 Fail2Ban部署安装配置sudo apt install fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local自定义SSH防护规则[sshd] enabled true port 58222 filter sshd logpath /var/log/auth.log maxretry 3 bantime 1h findtime 10m4. 应急响应与问题排查4.1 入侵检测方法检查以下日志和文件可以发现异常# 检查登录记录 lastb | head -50 grep Failed password /var/log/auth.log # 检查异常进程 ps auxf | grep -E (miner|xmrig|ddgs) # 检查定时任务 crontab -l ls -la /etc/cron.*/ # 检查SSH密钥 cat ~/.ssh/authorized_keys4.2 入侵后处理流程立即断开网络连接备份重要数据和日志分析入侵路径和时间线重装受影响系统修复所有安全漏洞更新所有账户凭证5. 安全加固检查清单5.1 新服务器部署检查项[ ] 修改SSH默认端口[ ] 禁用root远程登录[ ] 配置密钥登录[ ] 禁用密码登录[ ] 安装配置fail2ban[ ] 设置防火墙规则[ ] 配置日志监控5.2 定期维护事项[ ] 每月检查auth.log异常登录[ ] 每季度更新SSH密钥对[ ] 每半年进行安全审计[ ] 每年开展渗透测试6. 实战经验与技巧密钥管理建议为不同服务器使用不同密钥对密钥文件设置600权限使用passphrase保护私钥定期轮换密钥建议6个月日志分析技巧# 统计失败登录IP grep Failed password /var/log/auth.log | awk {print $11} | sort | uniq -c | sort -nr # 检查可疑登录时间 last | grep -v reboot | grep -v wtmp网络层防护使用iptables限制连接频率iptables -A INPUT -p tcp --dport 58222 -m conntrack --ctstate NEW -m recent --set iptables -A INPUT -p tcp --dport 58222 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 4 -j DROP通过这次事件我们团队建立了完整的SSH安全管理制度包括新服务器安全基线、定期审计机制和应急响应流程。特别提醒各位开发者测试服务器往往因为临时使用心理而忽视安全配置反而更容易成为攻击入口。安全无小事防患于未然才是最佳实践。
阅读完成 · 觉得有帮助?
咨询建站