公众号旧文

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 密码,也无法直接登录。

管理员应该:

  1. 用普通用户登录
  2. 再使用
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

绝大多数自动化攻击都会直接失效。