你的服务器真的安全吗?给VPS上锁的12个必做动作

嘿,朋友!如果你以为买了VPS、搭了网站就能高枕无忧,那今天这篇文章可能会吓你一跳。让我告诉你一个事实:我的第一台VPS,在72小时内被尝试登录了2,847次。是的,你没看错,平均每分钟就有0.66个坏蛋在敲你的门。

今天,咱们不聊复杂的理论,就用最接地气的方式,给服务器加上12把“锁”。

🔐 我的第一次“被入侵”经历

那是我拥有第一台VPS的第三天。半夜两点,手机突然收到十几封邮件:“您的服务器有异常登录尝试”。我迷迷糊糊爬起来,手忙脚乱地登录服务器,一看登录记录——好家伙,从俄罗斯、美国、荷兰来的IP,像逛菜市场一样尝试登录我的root账户。

最可怕的是,其中一个IP差点成功了。原因?我用了默认的SSH端口22,密码虽然复杂,但……你猜怎么着?我居然开了密码登录!那一刻我后背发凉,感觉自己像个把家门钥匙放在地毯下的傻瓜。

第一章:理解“黑客”是怎么想的

在开始加固之前,咱们得先站在“坏人”的角度想想。他们不是电影里的那种黑客天才,大部分只是用自动化工具扫描整个互联网的“脚本小子”。

🤖 黑客的日常:

  • 用工具扫描全网开放22端口的服务器
  • 用常见密码字典暴力破解(admin/123456/root等)
  • 寻找未更新的软件漏洞
  • 入侵后挖矿、发垃圾邮件、当跳板

🎯 我们的对策:

  • 改变默认端口(让他们扫不到)
  • 禁用密码登录(让他们破不了)
  • 及时更新系统(堵住已知漏洞)
  • 设置监控警报(及时发现异常)

第二章:12个必做安全动作(手把手版)

1

动作一:告别默认端口 – SSH的“隐身术”

为什么重要? 全球有数百万台服务器,默认用22端口。黑客的自动化工具第一件事就是扫描所有IP的22端口。改个端口,就能避开90%的自动化攻击。

# 编辑SSH配置文件
nano /etc/ssh/sshd_config

# 找到这一行(大约在第13行):
# Port 22

# 去掉#号,改成你喜欢的端口(1024-65535之间)
Port 35282 # 示例端口,选个随机的

# 保存后重启SSH服务
systemctl restart sshd

⚠️ 重要提醒:

改端口前,一定要先开另一个终端窗口保持登录!万一改错了,你还有机会修复。重启SSH后,用新端口测试登录,确认OK再关闭旧连接。

选端口时避开常用端口(如80、443、3306等),选个冷门的随机数,比如我常用的35282。

2

动作二:跟root密码登录说再见

血泪教训: root是Linux的超级管理员账号,一旦被破解,你的服务器就彻底沦陷了。禁用root的密码登录,改用密钥登录,安全性提升100倍。

# 先生成SSH密钥对(在你的本地电脑上操作)
ssh-keygen -t rsa -b 4096 # 一路回车就行

# 把公钥上传到服务器
ssh-copy-id -p 你的端口号 root@你的IP

# 然后编辑服务器上的SSH配置
nano /etc/ssh/sshd_config

# 修改这几项:
PermitRootLogin prohibit-password # 只允许密钥登录root
PasswordAuthentication no # 完全禁用密码登录
PubkeyAuthentication yes # 启用公钥认证

# 保存并重启
systemctl restart sshd

🔑 密钥登录的好处:

1. 不用记复杂密码(密钥文件本身就很复杂)
2. 几乎无法暴力破解(每次尝试都需要对应的私钥)
3. 可以设置密钥密码再加一层保护
4. 不同服务器可以用不同密钥,一处被破不会殃及其他

3

动作三:请个“看门保安” – Fail2ban

Fail2ban是个智能防火墙,它会监控登录日志,发现多次失败尝试就自动封IP。就像一个严格的保安,看到有人连续输错密码就把他赶走。

# 安装fail2ban
apt install fail2ban -y # Ubuntu/Debian
yum install fail2ban -y # CentOS

# 复制配置文件
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# 编辑配置文件
nano /etc/fail2ban/jail.local

# 找到[sshd]部分,修改或添加:
[sshd]
enabled = true
port = 你的SSH端口 # 比如35282
maxretry = 3 # 3次失败就封
bantime = 3600 # 封禁1小时
findtime = 600 # 10分钟内失败3次

# 启动并设置开机自启
systemctl start fail2ban
systemctl enable fail2ban

效果: 配置好后,如果有人连续3次输错密码,他的IP会被自动封禁1小时。你可以用 fail2ban-client status sshd 查看被封的IP列表。

第三章:基础但重要的其他动作

4

动作四:系统更新 – 堵住已知漏洞

Linux系统的漏洞被发现后,官方会发布补丁。不更新就像房子有破洞却不修补。

# 更新软件包列表和系统
apt update && apt upgrade -y # Ubuntu/Debian
yum update -y # CentOS

# 可以设置自动安全更新(省心)
apt install unattended-upgrades -y # Ubuntu
dpkg-reconfigure unattended-upgrades # 选Yes
5

动作五:防火墙配置 – 只开必要的门

默认情况下,很多端口是开放的。用防火墙(UFW或firewalld)只开放你真正需要的端口。

# Ubuntu使用UFW(最简单)
ufw default deny incoming # 默认拒绝所有入站
ufw default allow outgoing # 允许所有出站
ufw allow 你的SSH端口/tcp # 开放SSH端口
ufw allow 80/tcp # 开放HTTP
ufw allow 443/tcp # 开放HTTPS
ufw enable # 启用防火墙
ufw status verbose # 查看状态
6

动作六:创建普通用户 – 别总用root

日常操作使用普通用户,需要root权限时用sudo。这样即使被入侵,破坏也有限。

# 创建新用户
adduser 你的用户名 # 会提示设置密码等信息

# 给用户sudo权限
usermod -aG sudo 你的用户名 # Ubuntu
usermod -aG wheel 你的用户名 # CentOS

第四章:进阶安全措施(可选但推荐)

7

动作七:禁用空密码 – 别留后门

# 确保SSH配置里有:
PermitEmptyPasswords no
8

动作八:限制SSH监听IP(如果你有固定IP)

# 在sshd_config中添加:
ListenAddress 你的服务器IP # 只监听特定IP
9

动作九:设置登录提醒

每次登录时显示警告信息,虽然不能阻止黑客,但有心理威慑作用。

# 编辑motd文件
nano /etc/motd

# 添加内容如:
警告:未经授权的访问将被追究法律责任!
所有登录活动均被记录。
10

动作十:定期查看日志

安全不是一劳永逸,要定期检查。

# 查看最近的登录尝试
lastb # 查看失败登录
last # 查看成功登录
grep “Failed password” /var/log/auth.log # 查看失败密码尝试
11

动作十一:禁用不必要的服务

用不到的服务就关掉,减少攻击面。

# 查看正在运行的服务
systemctl list-unit-files –type=service | grep enabled

# 禁用不需要的服务
systemctl disable 服务名
12

动作十二:定期备份!备份!备份!

这是最后的安全网。服务器可能被攻破,但有备份就能恢复。

# 简单的备份脚本示例
#!/bin/bash
tar -czf /backup/$(date +%Y%m%d).tar.gz /var/www/html /etc /home
# 然后设置cron定时任务
crontab -e
# 添加:0 2 * * * /path/to/backup.sh # 每天凌晨2点备份

✅ 安全加固检查清单

最后几句唠叨

我知道,上面这么多步骤看起来有点吓人。但说实话,你不需要一天内全部做完。可以这样安排:

  • 今天: 完成动作1-3(改端口、设密钥、装fail2ban)——这是最重要的三道防线
  • 本周内: 完成动作4-6(更新、防火墙、创建用户)
  • 本月内: 完成剩下的动作,并养成定期检查的习惯

安全不是追求100%不被攻破(那不可能),而是增加攻击成本,让黑客觉得“攻破这台服务器的代价太高,不如去找其他软柿子”。

我的那台被尝试登录2847次的服务器,在做了这些加固后,现在一周只有不到10次尝试,而且都被fail2ban自动封了。我从半夜被警报吵醒,到现在可以安心睡觉——这就是安全加固的意义。

记住,在互联网的世界里,你不是在跟天才黑客赛跑,而是在跟自动化脚本比谁更“麻烦”。只要你比隔壁的服务器更麻烦一点,你就安全了。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注