← 返回博客首页

关于新手小白拿到VPS之后,最应该做的安全防护问题!(近期疑似VMISS面板密码,黑客撞库爆破),上百台TRI停机!

✍️ 成也 • • 教程 • 👁️ 10 次阅读

拿到第一台VPS,最应该做的是这些…

这里强烈建议各位新手小白,一定不要偷懒,以为商家的面板绝对安全!通常将秘钥掌握在自己手中,才是绝对的安全!!!很多厂商都是默认root账号密码登录,例如:VMISS,berohost等等。

特别提醒:一定要备份生成后的秘钥,避免本地电脑重装导致秘钥丢失

接下来我会从拿到开机邮件一直到SSH秘钥登录成功结束,详细的操作流程

1. 当然是重装系统

如果你觉得商家提供的系统不安全不纯净,害怕对方留了后门,可以自行重装,但一定要对方使用规则允许的前提下,切勿触犯规则导致小鸡被强行停机!

2. 生成SSH秘钥

其实每个商家都在面板提供了SSH秘钥的功能,但如果是面板泄露的问题,那么SSH秘钥很有可能也会泄露,所以为了将安全掌握在自己手上,这里咱们就在本地电脑上生成自己的秘钥,更可以一套秘钥用在其他VPS上!

  1. 在本地windows电脑上执行命令生成SSH秘钥
# 在本地电脑生成秘钥
ssh-keygen -t ed25519 -C "秘钥备注"
# (linux或mac)自动写入公钥并配置好权限 
# 使用 ssh-copy-id 自动写入公钥并配置好权限(需输入最后一次 root 密码)
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@你的服务器IP
# (windows)
type .ssh\id_ed25519.pub | ssh root@你的服务器IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

# 手动操作
ssh-keygen -t ed25519 -C "秘钥备注"
# 如果你之前生成过秘钥
dir .ssh\*.pub
## 打印并查看公钥内容 通常是 id_ed25519.pub 或 id_rsa.pub
type .ssh\id_ed25519.pub
# 将打印出来的秘钥串复制,然后在服务器上执行
mkdir -p ~/.ssh
echo "这里粘贴你复制的ssh-ed25519开头的完整公钥" >> ~/.ssh/authorized_keys
chmod 700 /root ~/.ssh && chmod 600 ~/.ssh/authorized_keys

关于新手小白拿到VPS之后,最应该做的安全防护问题!(近期疑似VMISS面板密码,黑客撞库爆破),上百台TRI停机! 实测配图 Q: 这个原因是windows自带没有命令,可以选择下面的type…一步到位!

关于新手小白拿到VPS之后,最应该做的安全防护问题!(近期疑似VMISS面板密码,黑客撞库爆破),上百台TRI停机! 实测配图 Q: 这里意味着传输完成并且成功登录到了服务器

注意:如果已经修改过SSH端口,那么需要在IP 后面 或者 前面加上 -p SSH对应的端口

2.不要急着关闭密码登录,测试免登录

  1. 测试免登录
# 如果是默认端口 执行命令:
ssh root@你的服务器IP
# 如果是非默认端口执行命令:
ssh -p 22022 root@服务器ip

如果你前面的操作正常,是不会要输入密码的,但这里有可能会提示要输入密码,原因是服务器关闭了SSH秘钥登录

  1. 解决办法
# 在服务器上执行命令
sed -i 's/^#*PubkeyAuthentication.*/PubkeyAuthentication yes/' /etc/ssh/sshd_config
sed -i 's/^#*PermitRootLogin.*/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config.d/*.conf 2>/dev/null
systemctl restart ssh || systemctl restart sshd
# 执行完毕之后,CMD窗口输入免登录命令,就能正常连接了

关于新手小白拿到VPS之后,最应该做的安全防护问题!(近期疑似VMISS面板密码,黑客撞库爆破),上百台TRI停机! 实测配图 Q: 这里就意味着执行完成!

  1. 第二个办法:直接操作服务器配置文件
sudo nano /etc/ssh/sshd_config
# 找到并确保以下配置项处于取消注释(去掉开头的 #)且值如下的状态:
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password

PasswordAuthentication no 是全局关闭所有账号的密码登录;PermitRootLogin prohibit-password 代表允许root的SSH秘钥登录

注意:Ubuntu 22.04/24.04 或部分云服务器镜像会在/etc/ssh/sshd_config.d下存放额外的配置,建议运行 grep -rn "PasswordAuthentication" /etc/ssh/sshd_config.d/ 检查并同意修改为 no

  1. 配置完成之后
# 检查配置文件语法是否正确(无输出即为正常)
sudo sshd -t

# 重启 SSH 服务(Debian/Ubuntu 通常为 ssh,CentOS/RHEL/Rocky 通常为 sshd)
sudo systemctl restart ssh || sudo systemctl restart sshd
  1. 接下来验证登录
  • 运行 ssh root@你的服务器IP 此时不需要输入密码
  • 运行 ssh -o PubkeyAuthentication=no root@你的服务器IP 此时系统会直接拒绝

至此SSH秘钥登录,以及禁止root用户账号密码登录全部完成!


3.额外 部署安装fail2ban 自动封禁IP

正常情况下,如果修改为了SSH秘钥登录,默认的22端口已经非常安全!但避免不了公网上暴力扫描,如果希望彻底安静,可以选择安装fail2ban封禁IP

# Ubuntu / Debian 安装并启动
sudo apt update && sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban

默认情况下fail2ban会自动启动对SSH的基础保护,如果你的事Debian13,建议再生成一个本地配置文件

cat << 'EOF' > /etc/fail2ban/jail.local
[DEFAULT]
bantime  = 24h
findtime = 10m
maxretry = 3
backend  = systemd

[sshd]
enabled = true
mode    = aggressive
EOF

# 重启 Fail2ban 并查看当前拦截状态
systemctl restart fail2ban
fail2ban-client status sshd

不过很多成熟的厂商都会默认秘钥登录,而禁止root账户密码登录,例如: DMIT;其实条件允许的情况下,选择大厂是明智的选择,在解决问题和处理问题上更加的迅速有效!当然小厂是性价比的最佳选择,如果不遇到问题,那是万幸中的大幸!!!!

原创不易,感谢支持!!!!

📚

【VPS】专题连载目录 (共 8 篇)

查看专题全部 ➔

【VMISS】实时最受欢迎方案 TOP 3

完整大盘 ➔
TOP 1 CN.HK.INTL.Basic
在售 C$30/年 直达 ➔
TOP 2 US.LA.CN2.Elite
在售 C$38/月 直达 ➔
TOP 3 US.LA.TRI.Ultra
在售 C$98/月 直达 ➔

跨专题延伸阅读

相关推荐