使用Ubuntu作为服务器系统需要考虑哪些安全设置?

在 Ubuntu 服务器上部署时,安全配置是保障系统稳定和数据安全的核心环节。以下是从基础到进阶的关键安全设置建议,按优先级和逻辑分层整理:


🔒 一、基础系统加固

  1. 最小化安装与更新

    • 仅安装必要软件包(避免 ubuntu-server 默认镜像中多余服务)。
    • 定期执行:
      sudo apt update && sudo apt upgrade -y
      sudo unattended-upgrades install  # 启用自动安全更新
  2. SSH 强化配置(/etc/ssh/sshd_config)

    PermitRootLogin no          # 禁止 root 直接登录
    PasswordAuthentication no   # 禁用密码认证(强制密钥登录)
    PubkeyAuthentication yes    # 启用公钥认证
    AllowUsers your_user        # 限制允许登录的用户
    Port 2222                   # 修改默认端口(可选,防自动化扫描)
    MaxAuthTries 3              # 限制重试次数
    X11Forwarding no            # 关闭图形转发
    ClientAliveInterval 300     # 空闲超时断开
    ClientAliveCountMax 2       # 最多 2 次无响应后断开

    ✅ 操作前务必先用新会话测试配置,避免被锁!
    🔑 生成密钥对:ssh-keygen -t ed25519 -C "your_email"

  3. 防火墙规则(UFW)

    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    sudo ufw allow ssh port 2222/tcp      # 或自定义端口
    sudo ufw allow http/tcp               # Web 服务
    sudo ufw allow https/tcp
    sudo ufw enable
    sudo ufw status verbose

🛡️ 二、用户与权限管理

  • 创建普通用户并提权
    sudo adduser developer
    sudo usermod -aG sudo developer
  • 配置 sudoers 安全策略
    visudo  # 编辑 /etc/sudoers
    # 添加示例:
    developer ALL=(ALL) NOPASSWD: /usr/bin/apt, /usr/bin/systemctl restart nginx
  • 禁用无用账户
    sudo usermod -L lock_account_name  # 锁定账户

📦 三、服务与安全工具

  1. Fail2Ban 防暴力破解

    sudo apt install fail2ban
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    # 在 jail.local 中启用 sshd 防护:
    [sshd]
    enabled = true
    port = ssh
    maxretry = 3
    bantime = 3600
  2. AppArmor / SELinux(Ubuntu 默认用 AppArmor)

    • 检查状态:aa-status
    • 自定义配置文件:/etc/apparmor.d/
    • 模式切换:sudo aa-complain /path/to/profile → sudo aa-enforce
  3. 自动日志审计

    • 安装 auditd:
      sudo apt install auditd
      sudo systemctl enable --now auditd
    • 监控敏感文件(如 /etc/shadow):
      sudo auditctl -w /etc/shadow -p wa -k shadow_change

🔐 四、数据与加密

  • 全盘加密(LUKS):适用于云主机或物理服务器启动阶段。
  • 磁盘加密挂载点:对 /home 或数据库目录使用 ecryptfs 或 fscrypt。
  • 备份加密:使用 gpg 或 age 加密备份文件:
    tar czf backup.tar.gz /var/www && gpg --symmetric --cipher-algo AES256 backup.tar.gz

🧪 五、持续监控与响应

工具 用途
rkhunter / chkrootkit 检测 Rootkit
logwatch / swatch 日志实时监控
lynis 全面安全审计(运行 sudo lynis audit system)
cloud-init 安全模块 云环境初始化时注入安全策略

💡 推荐定期运行:sudo lynis audit system 生成报告并修复建议项。


⚠️ 重要提醒

  • 所有生产环境变更前先备份(快照 + 本地备份)。
  • 严禁在生产机直接测试高风险配置(如 SSH 重启前确认备用访问方式)。
  • 遵循“最小权限原则”:服务只开放必要端口,用户仅授予所需权限。
  • 定期渗透测试:使用 nmap, nikto, gobuster 等工具自查暴露面。

需要我针对具体场景(如 Web 服务器、数据库集群、容器化部署)提供定制化加固方案吗?