新服务上线前安全配置 checklist(Ubuntu 22.04)

2026-05-24

以下是个人生产环境新服务器上线前必须做的安全加固步骤,按顺序执行,建议全部完成后再部署需要的 Docker 服务。

第一阶段:基础系统加固

  1. 更新系统并安装必要工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget vim git ufw fail2ban unattended-upgrades apt-listbugs apt-listchanges
sudo apt autoremove -y
  1. 创建普通管理用户(强烈推荐,不要直接用 root)
# 创建用户(把 zen 改成你的用户名)
sudo adduser zen

# 加入 sudo 组
sudo usermod -aG sudo zen

# 可选:加入 docker 组(如果已安装 Docker)
sudo usermod -aG docker zen
  1. 配置 SSH 密钥登录
# 在本地电脑生成密钥(如果还没有)
ssh-keygen -t ed25519 -C "your_email@example.com"

# 把公钥传到服务器
ssh-copy-id zen@你的服务器IP
  1. 禁止 Root 用户 SSH 登录
sudo sed -i 's/#PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sed -i 's/#PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart ssh

第二阶段:防火墙与访问控制

  1. 配置 UFW 防火墙
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 允许 SSH(推荐改端口)
sudo ufw allow 22/tcp          # 先用22,后面可改
# sudo ufw allow 2222/tcp      # 推荐改成非标准端口

# 如果部署 Web 服务,开放对应端口
sudo ufw allow 80/tcp
sudo ufw allow 8080/tcp
sudo ufw allow 443/tcp

sudo ufw --force enable
sudo ufw status verbose
  1. 安装并配置 Fail2Ban(防暴力破解)
sudo systemctl enable --now fail2ban

# 可选:自定义 SSH 保护规则
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

在 [sshd] 段落中设置:

ini[sshd]
enabled = true
maxretry = 5
bantime = 1h
findtime = 10m

第三阶段:自动安全更新

  1. 配置自动安全更新
sudo dpkg-reconfigure --priority=low unattended-upgrades

编辑配置文件:

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

取消注释以下内容:

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
    "${distro_id}:${distro_codename}-updates";
};
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";

第四阶段:Docker 安全配置(非常重要)

  1. Docker 安全最佳实践
# 1. 使用非 root 用户运行容器(推荐)
# 2. 限制容器资源
# 3. 不使用 --privileged 模式

# 创建 docker 专用安全配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "icc": false,
  "no-new-privileges": true,
  "userland-proxy": false
}
EOF

sudo systemctl restart docker
  1. 使用 Docker Rootless(更高安全,可选,较复杂)

如果服务对安全性要求极高,建议研究 Docker Rootless 模式。

第五阶段:其他重要安全措施

  1. 额外加固
# 禁用不必要的服务
sudo systemctl disable --now bluetooth 2>/dev/null || true

# 设置时区
sudo timedatectl set-timezone Asia/Singapore

# 安装 Lynis 安全审计工具(检查)
sudo apt install lynis -y
sudo lynis audit system
  1. 设置服务器监控(推荐)

安装 htop, iotop, netdata 或 prometheus + grafana