刚收到机器就直接跑服务,SSH 端口很快就会被扫爆。下面是我每次开新机都会做的几步,照着复制粘贴就行,老鸟可以直接跳过~
1. 更新系统
apt update && apt upgrade -y
2. 新建普通用户,别一直用 root
adduser seeker # 用户名自己改
usermod -aG sudo seeker
3. 改用 SSH 密钥登录
在本地电脑上执行:
ssh-keygen -t ed25519
ssh-copy-id seeker@你的IP
确认能用密钥登录以后,再编辑服务器上的 /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
然后重启 SSH:
systemctl restart ssh
⚠️ **重要:先别关当前窗口!**另开一个终端测试能不能登录,确认没问题了再关,不然可能把自己锁在外面。
(想改端口的话,在同一个文件里加一行 Port 你的端口。Ubuntu 22.10 及以上版本用 socket 启动 SSH,改完要执行 systemctl daemon-reload && systemctl restart ssh.socket 才能生效。)
4. 开防火墙
apt install ufw -y
ufw allow 22/tcp # 改过端口的话写新端口!
ufw allow 80,443/tcp # 用到网站再开
ufw enable
ufw status
⚠️ 一定要先放行 SSH 端口再 enable。
5. 装 fail2ban 防爆破
apt install fail2ban python3-systemd -y
cat > /etc/fail2ban/jail.local <<EOF
[sshd]
enabled = true
backend = systemd
maxretry = 5
bantime = 1h
EOF
systemctl restart fail2ban
fail2ban-client status sshd
Debian 12 默认没有 /var/log/auth.log,所以要加 backend = systemd,不然 fail2ban 起不来。
6. 自动安装安全更新
apt install unattended-upgrades -y
dpkg-reconfigure -plow unattended-upgrades
7.(可选)开启 BBR
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_congestion_control # 输出 bbr 就成功了
做完这些,绝大部分扫端口、爆破密码的脚本基本就拿你没办法了。大家还有什么开机必做的步骤,欢迎在评论区补充 🙌
自用一键SSH安全加固脚本
https://github.com/BeacherZ/key.sh
学习了
谢谢
请教下,运行中的机子能参照这个再做一遍吗?
厉害 投鸡腿
每个vps都单独一套密钥吗,感觉会很麻烦,我vps都是同一套
密钥登录是底线
我一直是SSH密钥非22端口登录,一直用root,让他们扫去吧
我基本就是改个端口。。
我不装fail2ban,改个SSH端口,禁密码登录,强制密钥登录,ufw只放行必要端口,基本就够了