在 Ubuntu 服务器上部署时,安全配置是保障系统稳定和数据安全的核心环节。以下是从基础到进阶的关键安全设置建议,按优先级和逻辑分层整理:
🔒 一、基础系统加固
-
最小化安装与更新
- 仅安装必要软件包(避免
ubuntu-server默认镜像中多余服务)。 - 定期执行:
sudo apt update && sudo apt upgrade -y sudo unattended-upgrades install # 启用自动安全更新
- 仅安装必要软件包(避免
-
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" -
防火墙规则(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 # 锁定账户
📦 三、服务与安全工具
-
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 -
AppArmor / SELinux(Ubuntu 默认用 AppArmor)
- 检查状态:
aa-status - 自定义配置文件:
/etc/apparmor.d/ - 模式切换:
sudo aa-complain /path/to/profile→sudo aa-enforce
- 检查状态:
-
自动日志审计
- 安装
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 服务器、数据库集群、容器化部署)提供定制化加固方案吗?
PHPWP博客