公众号旧文
SSH 蜜罐观察(2):如何防止服务器被攻破
在上一篇文章服务器开机后,很快就会被攻击吗?中,我通过 Cowrie 蜜罐记录了一段真实攻击日志。
短短几个小时内,服务器就遭遇了大量自动化攻击:
- SSH 弱密码爆破
- 自动植入
authorized_keys后门 - 收集系统信息
这些攻击几乎全部来自自动化脚本。
所以现在,面对攻击,问题就变成了:
如何让你的服务器对这些自动化攻击免疫?
下面是几个有效的防护方法。
一、禁止密码登录
绝大多数攻击依赖的就是:
密码爆破。
如果服务器完全不允许密码登录,这类攻击就会全部失效。
修改 SSH 配置文件:
/etc/ssh/sshd_config
找到:
PasswordAuthentication
yes
改成:
PasswordAuthentication
no
然后重启 SSH:
systemctl
restart ssh
之后服务器只允许:
SSH Key 登录。
攻击者即使尝试几百万次密码也没用。
二、关闭 root 直接登录
很多攻击脚本都会尝试:
root
/ admin / ubuntu
其中 root 是最危险的。
在 SSH 配置里关闭 root 登录:
PermitRootLogin
no
这样攻击者即使知道 root 密码,也无法直接登录。
管理员应该:
- 用普通用户登录
- 再使用
sudo
提升权限。
三、使用 Fail2Ban 自动封禁爆破
如果你查看服务器日志,很可能会看到:
同一个 IP 每秒尝试很多密码。
工具 Fail2Ban 可以自动检测这种行为。
当某个 IP:
- 连续登录失败
- 超过设定次数
就会自动封禁。
简单安装:
apt
install fail2ban
默认规则就能拦住绝大多数爆破攻击。
四、更换 SSH 端口
互联网扫描器会优先扫描 22 端口。
如果你把 SSH 改成 2222,攻击量会瞬间减少 90%。
修改:
/etc/ssh/sshd_config
Port 2222
然后重启 SSH。
注意:一定先打开防火墙端口,否则可能把自己锁在服务器外面。
五、限制登录 IP(如果条件允许)
如果服务器只需要你自己登录,可以在防火墙里限制:
只允许固定 IP:
iptables -
A
INPUT
-
p
tcp
--dport
22
-s YOUR_IP -j ACCEPT
其他全部拒绝。
这样攻击者即使扫描到端口,也无法连接。
六、监控 .ssh/authorized_keys
``
上一篇文章提到过,攻击脚本一旦登录成功,就会:
echo
"ssh-rsa ..."
>> ~/.ssh/authorized_keys
所以管理员应该定期检查:
~
/.ssh/
authorized_keys
是否存在:
- 不认识的 key
- 可疑用户
如果发现异常,需要立即删除。
七、定期更新系统
很多攻击并不只是爆破密码。
还可能利用:
- SSH 漏洞
- Linux 内核漏洞
- 提权漏洞
所以服务器应该定期更新:
apt
update
apt upgrade
或者对应发行版的包管理器。
总结
防护 SSH 攻击其实并不复杂,只要做好几件事:
1️⃣ 禁止密码登录
2️⃣ 关闭 root 登录
3️⃣ 使用 SSH Key
4️⃣ 安装 Fail2Ban
5️⃣ 修改 SSH 端口
6️⃣ 定期检查 authorized_keys
绝大多数自动化攻击都会直接失效。