我们买了服务器后,最好立即修改ssh端口做好安全防护,避免被密码被暴力破解导致服务器被黑,接下来我以 Ubuntu 24 系统为例,跟着我的操作来加固服务器安全:

  1. 通过 last 命令查看登录成功日志,确认只有自己的ip登录
  2. 通过 lastb -n 30 命令可以看到很多ip在不停试错的登录失败记录
  3. 修改配置文件,将 #Port 22 改为高位端口,不建议改为 22222 这种常见 ssh 高位端口,也容易被不停试错,最好是随机一点,例如我这里改为 Port 20827
1
sudo vim /etc/ssh/sshd_config
  1. 写 ssh.socket 覆盖配置
1
2
3
4
5
6
7
8
sudo mkdir -p /etc/systemd/system/ssh.socket.d

sudo tee /etc/systemd/system/ssh.socket.d/override.conf > /dev/null <<'EOF'
[Socket]
ListenStream=
ListenStream=0.0.0.0:20827
ListenStream=[::]:20827
EOF
  1. 重新加载 systemd
1
sudo systemctl daemon-reload
  1. 检查 SSH 配置语法, 如果没有输出,就是正常
1
sudo sshd -t
  1. 重启 ssh.socket
1
sudo systemctl restart ssh.socket
  1. 重启 ssh
1
sudo systemctl restart ssh
  1. 确认是否切到高位端口 20827
1
2
sudo systemctl status ssh.socket --no-pager -l
sudo ss -lntp | grep ssh
  1. 安装 ufw 防火墙
1
2
sudo apt update
sudo apt install -y ufw
  1. 放行需要的端口, 一定要放行刚才配的ssh端口
1
2
3
sudo ufw allow 20827/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
  1. 启用防火墙, 提示确认按 y
1
sudo ufw enable
  1. 查看防火墙状态, 此时记得新开一个 ssh 连接查看是否能连上
1
sudo ufw status verbose
  1. 安装 fail2ban 防止暴力破解 ssh 密码
1
2
sudo apt update
sudo apt install -y fail2ban
  1. 写入本地配置 (10分钟内试错3次锁 ip 一年, 可以在 ignoreip 后加空格自己的 ip 设置白名单)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo tee /etc/fail2ban/jail.local > /dev/null <<'EOF'
[DEFAULT]
bantime = 1y
findtime = 10m
maxretry = 3
backend = systemd
banaction = ufw
ignoreip = 127.0.0.1/8 ::1

[sshd]
enabled = true
port = 20827
logpath = %(sshd_log)s
EOF
  1. 测试语法是否有误, 启动并设置开机自启
1
2
3
4
sudo fail2ban-client -t

sudo systemctl enable fail2ban
sudo systemctl restart fail2ban
  1. 检测配置是否生效
1
2
3
sudo systemctl status fail2ban --no-pager -l
sudo fail2ban-client status
sudo fail2ban-client status sshd

做完这些你的服务器基本不会被暴力试错破解密码了,但是你的密码信息仍可能通过社工手段被偷走,如果希望更加安全,可以通过禁用密码登录,通过密钥凭证登录等的手段来保证服务器安全