Ubuntu VPS 入门设置:15 分钟完成基础安全加固
VPS 一旦拥有公网 IP,各种机器人就会开始尝试通过 SSH 登录。在安装任何应用之前,先按以下步骤加固你的 Ubuntu 服务器。适用于任何服务商:Hostinger、Contabo、Hetzner、Vultr、DigitalOcean 或 Oracle。
开始之前:在另一个窗口测试修改时,保持当前的 SSH 会话不要关闭。这样即使 SSH 或防火墙配置出错,你仍然可以修正。大多数服务商的控制面板也提供应急控制台。
1. 登录 VPS 并更新系统
使用服务商发给你的 IP 和密码:
ssh root@VPS-IP
apt update && apt upgrade -y
如果内核有更新,用 reboot 重启后重新连接。
2. 创建自己的用户
一直用 root 操作很危险。创建一个有管理员权限的用户:
adduser yourname
usermod -aG sudo yourname
3. 配置 SSH 密钥登录
在你自己的电脑上(Windows PowerShell、macOS 或 Linux),如果还没有密钥对,先生成一个:
ssh-keygen -t ed25519
把公钥复制到 VPS。macOS 和 Linux:
ssh-copy-id yourname@VPS-IP
Windows 上,复制 C:\Users\你的用户名\.ssh\id_ed25519.pub 的内容,然后在 VPS 上粘贴到 /home/yourname/.ssh/authorized_keys 文件中:
sudo -u yourname mkdir -p /home/yourname/.ssh
sudo -u yourname nano /home/yourname/.ssh/authorized_keys
chmod 700 /home/yourname/.ssh
chmod 600 /home/yourname/.ssh/authorized_keys
在新窗口中测试:ssh yourname@VPS-IP 应该无需输入服务器密码就能登录。
4. 禁用 root 登录和密码登录
确认密钥可用之后再做这一步。创建一个配置文件:
sudo nano /etc/ssh/sshd_config.d/99-security.conf
内容如下:
PermitRootLogin no
PasswordAuthentication no
应用配置,并在另一个窗口测试登录:
sudo systemctl restart ssh
部分服务商的系统镜像会在 /etc/ssh/sshd_config.d/ 中自带配置文件,重新启用密码登录。如果密码登录仍然有效,用 sudo sshd -T | grep -i passwordauthentication 检查这些文件。
5. 启用防火墙(UFW)
只开放你用到的端口。以 Web 服务器为例:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
部分服务商的面板里也有防火墙(Hostinger、Hetzner、Oracle)。例如在 Oracle Cloud 上,还需要在网络的 Security List 中开放端口。
注意 Docker:用 docker run -p 发布的端口会绕过 UFW。内部服务只发布到 127.0.0.1(例如 -p 127.0.0.1:5678:5678),再通过反向代理在 443 端口对外提供。
6. 安装 Fail2ban
它会封禁多次登录失败的 IP:
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
7. 启用自动安全更新
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
8. 创建 swap(建议 4 GB 及以下内存的 VPS 使用)
swap 可以避免内存突然耗尽时系统杀掉进程:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
9. 设置时区
换成你自己的时区(可用 timedatectl list-timezones 查看列表):
sudo timedatectl set-timezone Asia/Shanghai
10. 配置备份
开启服务商的备份或快照功能;重要数据还要在服务器之外另存一份。没有备份,安全措施的意义就大打折扣。
完成了,接下来呢?
你的服务器已经具备基础安全防护。现在可以安装 Docker、CloudPanel 之类的面板,或者按照我们的指南在 VPS 上运行 n8n。