拿到新的Ubuntu VPS之后,很多人会急着安装应用程序,但这是个常见错误。在未经安全加固的服务器上运行应用,就像把贵重物品放在没有锁的房间里。本文整理了获得新Ubuntu VPS后必须立即完成的10个配置步骤,从创建安全用户到安装监控工具,帮您快速构建安全、稳定的服务器环境。
目录
1 创建非root用户
新VPS通常会提供root账户和IP地址。第一步是创建一个拥有sudo权限的普通用户,然后停止直接使用root。root用户拥有系统的完整权限,一个错误的命令(如 rm -rf /)可以毁掉整个服务器。
# 使用root登录
ssh root@YOUR_SERVER_IP
# 创建新用户(将username替换为您想要的名称)
adduser username
# 将用户添加到sudo组
usermod -aG sudo username
# 打开新终端,测试新用户登录
ssh username@YOUR_SERVER_IP
# 测试sudo权限
sudo whoami
# 应该输出: root
admin、user、ubuntu 等常见用户名,因为攻击机器人会自动尝试这些名称。选择不易被猜到的用户名可以提高安全性。
2 配置SSH密钥认证
SSH密钥比密码安全得多,因为它使用非对称加密技术,在实际操作中几乎无法被暴力破解。以下操作在您的本地机器上进行,而不是服务器上。
在本地机器上生成SSH密钥对
# macOS / Linux(在您的本地机器上)
ssh-keygen -t ed25519 -C "[email protected]"
# 按Enter接受默认设置,或设置密钥密码以增强安全性
# 将公钥复制到服务器
ssh-copy-id username@YOUR_SERVER_IP
# 或手动操作
cat ~/.ssh/id_ed25519.pub | ssh username@YOUR_SERVER_IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
Windows用户(PowerShell)
# PowerShell (Windows 10/11)
ssh-keygen -t ed25519 -C "[email protected]"
# 将密钥复制到服务器
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh username@YOUR_SERVER_IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
配置完成后,测试使用SSH密钥登录:
ssh -i ~/.ssh/id_ed25519 username@YOUR_SERVER_IP
3 禁用root登录和密码认证
确认SSH密钥可以正常工作后,立即禁用root登录和密码认证,防止暴力破解攻击。
# 编辑SSH配置文件
sudo nano /etc/ssh/sshd_config
# 找到并修改以下几行:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
# 重启SSH服务
sudo systemctl restart sshd
# ⚠️ 修改前务必在另一个终端测试SSH密钥登录!
4 配置UFW防火墙
UFW(简单防火墙)是iptables的前端工具,使用简单,可以有效限制进入服务器的流量,只允许必要的连接。
# 检查UFW状态
sudo ufw status
# 设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 允许SSH(重要:必须在启用UFW之前执行)
sudo ufw allow ssh
# 允许HTTP和HTTPS(如果是Web服务器)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 启用UFW
sudo ufw enable
# 查看已配置的规则
sudo ufw status verbose
按用途开放端口参考
| 用途 | 端口 | UFW命令 |
|---|---|---|
| SSH(默认) | 22/tcp | sudo ufw allow ssh |
| Web服务器 HTTP | 80/tcp | sudo ufw allow 80/tcp |
| Web服务器 HTTPS | 443/tcp | sudo ufw allow 443/tcp |
| MySQL(仅本地) | 3306/tcp | 无需开放(使用localhost) |
| 自定义SSH端口 | 例如2222 | sudo ufw allow 2222/tcp |
| Node.js应用 | 例如3000 | sudo ufw allow 3000/tcp |
5 更新系统软件包
新Ubuntu VPS通常包含可能存在安全漏洞的旧软件包,在完成基础安全配置后,立即更新系统是非常重要的。
# 更新软件包列表
sudo apt update
# 升级所有已安装的软件包
sudo apt upgrade -y
# 升级内核和关键依赖项
sudo apt full-upgrade -y
# 删除不再需要的软件包
sudo apt autoremove -y
sudo apt autoclean
# 如果有内核更新,重启服务器
sudo reboot
sudo apt full-upgrade 后如果看到"A reboot is required"提示,请立即重启服务器,以确保新内核生效,安全补丁真正发挥作用。
6 配置Swap交换空间
Swap空间是SSD上的一块区域,当内存不足时充当临时内存使用。虽然速度比真实RAM慢,但对于内存较小的VPS来说至关重要,可以防止系统崩溃。
建议的Swap大小
| VPS内存 | 建议Swap大小 | 说明 |
|---|---|---|
| 512MB - 1GB | 1-2GB | 频繁使用Swap — 考虑升级内存 |
| 2GB | 2-4GB | 适合WordPress、小型Node.js应用 |
| 4GB | 2-4GB | 很少使用 — 主要作为安全网 |
| 8GB以上 | 1-2GB(可选) | 通常不需要 |
# 检查当前Swap状态
sudo swapon --show
free -h
# 创建2GB的Swap文件
sudo fallocate -l 2G /swapfile
# 如果fallocate不支持,使用:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
# 设置正确权限
sudo chmod 600 /swapfile
# 激活Swap
sudo mkswap /swapfile
sudo swapon /swapfile
# 验证
free -h
# 设置开机自动挂载
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 调整swappiness(服务器建议设为10)
sudo sysctl vm.swappiness=10
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
7 设置时区和主机名
正确的时区设置确保日志文件时间戳、cron定时任务和SSL证书验证的准确性。主机名则帮助在管理多台服务器时快速识别。
# 查看当前时区
timedatectl
# 设置时区为曼谷(泰国服务器)
sudo timedatectl set-timezone Asia/Bangkok
# 查看所有可用时区
timedatectl list-timezones | grep Asia
# 设置主机名
sudo hostnamectl set-hostname my-server-name
# 更新/etc/hosts文件
sudo nano /etc/hosts
# 添加:127.0.1.1 my-server-name
# 验证设置
hostname
timedatectl
8 安装Fail2Ban
Fail2Ban监控日志文件并自动封锁多次登录失败的IP地址,有效防止SSH暴力破解攻击,无需人工干预。
# 安装Fail2Ban
sudo apt install fail2ban -y
# 创建自定义配置文件(不要直接修改.conf文件)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# 找到并修改[sshd]部分:
# enabled = true
# port = ssh
# maxretry = 5
# bantime = 3600
# findtime = 600
# 启动并设置开机自启
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# 检查状态
sudo fail2ban-client status
sudo fail2ban-client status sshd
查看和解封IP
# 查看所有被封锁的IP
sudo fail2ban-client status sshd
# 解封特定IP
sudo fail2ban-client set sshd unbanip YOUR_IP_ADDRESS
# 查看Fail2Ban日志
sudo tail -f /var/log/fail2ban.log
9 启用自动安全更新
每天手动更新安全补丁几乎不可行。启用unattended-upgrades让Ubuntu自动安装安全更新,在不影响正常运行的情况下保持系统安全。
# 安装unattended-upgrades
sudo apt install unattended-upgrades -y
# 启用自动更新
sudo dpkg-reconfigure --priority=low unattended-upgrades
# 选择"Yes"启用
# 查看配置
cat /etc/apt/apt.conf.d/50unattended-upgrades
# 测试运行(不实际安装)
sudo unattended-upgrades --dry-run --debug
10 安装基础监控工具
拥有能够实时查看资源使用情况的工具,可以让您在出现问题时更快地进行诊断和排查。这些是每个系统管理员必备的基础工具。
# 安装基础监控工具
sudo apt install htop ncdu tree curl wget git -y
# htop — 交互式进程查看器
htop
# ncdu — 磁盘使用分析工具
ncdu /
# 查看磁盘使用情况
df -h
# 查看内存使用情况
free -h
# 查看网络连接
ss -tulpn
# 查看CPU信息
lscpu
# 查看系统负载
uptime
必备工具汇总
| 工具 | 用途 | 命令 |
|---|---|---|
| htop | 实时查看进程、CPU、内存 | htop |
| ncdu | 找出占用磁盘最多的文件 | ncdu / |
| ss | 查看开放端口和连接 | ss -tulpn |
| fail2ban-client | 查看被封锁的IP | fail2ban-client status |
| ufw status | 检查防火墙规则 | sudo ufw status verbose |
总结:VPS部署后的10步检查清单
以下是获得新Ubuntu VPS后应完成的所有步骤的汇总检查清单:
| 步骤 | 操作 | 重要性 | 所需时间 |
|---|---|---|---|
| 1 | 创建非root sudo用户 | 🔴 必须 | 2分钟 |
| 2 | 配置SSH密钥认证 | 🔴 必须 | 5分钟 |
| 3 | 禁用root登录和密码认证 | 🔴 必须 | 2分钟 |
| 4 | 配置UFW防火墙 | 🔴 必须 | 3分钟 |
| 5 | 更新系统软件包 | 🔴 必须 | 5-10分钟 |
| 6 | 配置Swap空间 | 🟡 建议(低内存) | 3分钟 |
| 7 | 设置时区和主机名 | 🟡 建议 | 2分钟 |
| 8 | 安装Fail2Ban | 🟡 建议 | 5分钟 |
| 9 | 启用自动安全更新 | 🟡 建议 | 2分钟 |
| 10 | 安装监控工具 | 🟢 有时间就做 | 2分钟 |
完成前4个步骤(创建用户、SSH密钥、禁用root、防火墙配置)只需不到15分钟,但可以将被攻击的风险降低90%以上。在安装任何应用程序之前,请务必先完成这些基础安全配置。
需要开箱即用的VPS?
AsiaGB泰国VPS(CS Loxinfo)提供Ubuntu 22.04/24.04 LTS · SSD存储 · 99% Uptime保证 · 支持SSH密钥即时部署 · 全天候技术支持
查看泰国VPS套餐