本文面向使用 Ubuntu Server 24 LTS 进行生产环境部署的团队。 目标是帮助你建立系统化、可执行、可审计的服务器安全策略,让入侵更难发生,让故障更容易排查。
目录
- 安全原则概述
- 基础系统安全
- SSH 访问与账户安全
- 网络访问控制(UFW / Fail2ban)
- 服务与进程安全
- 跳板机:运维安全的统一入口
- 应用与数据安全
- 日志监控与告警
- 备份与恢复策略
- 一页安全核对清单(Checklist)
一、安全原则概述
在开始具体操作前,需要先理解安全的三大原则:
1. 最小权限原则(Least Privilege)
用户与服务只应该拥有完成任务所需的最小权限。
2. 减少暴露面(Reduce Attack Surface)
关闭不需要的端口、服务和账户。攻击面越小,风险越小。
3. 全量审计(Traceability)
操作可回溯、日志可查询,才能在事故时快速定位问题。
服务器安全不是堆命令,而是一个“最小暴露 + 可控访问 + 可追踪行为”的体系。
二、基础系统安全
1. 保持系统更新(最高优先级)
sudo apt update
sudo apt upgrade -y
开启自动安全更新:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
2. 禁用不必要的软件与服务
列出已启用服务:
systemctl list-unit-files --type=service
关闭:
sudo systemctl disable --now servicename
3. 使用 LTS 版本与官方软件仓库
避免第三方未知源:
sudo add-apt-repository --remove ppa:xxx
第三方源越多,安全风险越大。
三、SSH 访问与账户安全
1. 禁止 root 直接登录
编辑 SSH 配置:
sudo nano /etc/ssh/sshd_config
设置:
PermitRootLogin no
2. 禁用密码登录(强烈建议)
SSH 改为密钥认证:
PasswordAuthentication no
生成密钥:
ssh-keygen -t ed25519
上传密钥:
ssh-copy-id user@server
3. 管控服务器用户
查看所有用户:
cut -d: -f1 /etc/passwd
删除不再需要的用户:
sudo deluser username
4. sudo 权限最小化
创建普通用户,再赋予 sudo 权限:
sudo usermod -aG sudo devuser
与此同时避免:
sudo su -
这样的 root 长时间工作模式。
5. 使用 SSH 登录速率限制
在 SSH 配置中加入:
MaxAuthTries 3
MaxSessions 5
四、网络访问控制(UFW / Fail2ban)
1. 启用 UFW 防火墙
启用防火墙:
sudo ufw enable
仅开放必要端口:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
默认拒绝其他端口:
sudo ufw default deny
查看状态:
sudo ufw status numbered
2. 防暴力破解:Fail2ban
安装:
sudo apt install fail2ban
启用:
sudo systemctl enable --now fail2ban
查看封禁状态:
sudo fail2ban-client status
Fail2ban 能阻止大量扫描和破解行为,是 SSH 最重要的保护措施之一。
五、服务与进程安全
1. 不要让服务以 root 运行
为服务创建独立用户:
sudo adduser --system --no-create-home webuser
在 systemd 中配置:
User=webuser
Group=webuser
2. 限制服务权限(文件与目录)
例如 Web 目录:
chmod -R 750 /var/www/app
chown -R www-data:www-data /var/www/app
3. 使用 AppArmor 控制服务行为
查看 AppArmor 状态:
sudo aa-status
启用规则:
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
4. 控制开放端口
查看端口监听:
sudo ss -tulnp
关闭不必要端口能显著减少攻击面。
六、跳板机/堡垒机:运维安全的统一入口
跳板机(Bastion Host / Jump Server)是企业安全体系中的标配。
它的作用包括:
1. 统一入口:减少暴露面
所有服务器 SSH 都关闭公网,只暴露跳板机。
2. 强身份认证
- 密钥登录
- MFA
- LDAP/AD 企业认证
3. 权限精细化控制
谁能访问哪台机器,谁能执行哪些命令一目了然。
4. 全量审计与录像
- 每条命令
- 敏感操作告警
- 可回放运维全过程
5. 推荐方案
- 开源:Jumpserver(功能最完善的开源堡垒机)
- 云厂商自带堡垒机(省心,安全合规)
跳板机不是可选项,而是:
安全访问控制体系的核心组件,应在中大型团队中强制使用。
七、应用与数据安全
1. 数据库不要暴露公网端口
例如 MySQL 只监听本地:
bind-address = 127.0.0.1
2. 使用 HTTPS(Let’s Encrypt)
自动颁发证书:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx
3. 严格控制配置与密钥
密钥文件设置权限:
chmod 600 id_rsa
私密配置(如 .env)不应向其他用户开放。
4. 版本控制不要上传敏感文件
Git 忽略:
.env
*.pem
*.key
八、日志监控与告警
1. 查看系统日志(systemd)
journalctl -xe
2. 服务级日志
journalctl -u nginx
3. 登录行为审计
last
lastb
4. 建立实时告警系统
选择其一:
- Netdata
- Prometheus + Grafana
- Zabbix
- 云监控告警
监控指标:
- CPU 异常升高
- 磁盘将满
- SSH 登录异常
- 服务 down 后自动告警
九、备份与恢复策略
备份是安全的最后一道防线。
1. 采用 3-2-1 原则
- 3 份数据
- 2 种不同介质
- 1 份异地备份
2. 常用备份方案
- rsync(简单高效)
- BorgBackup / Restic(加密备份)
- 云盘快照(极高恢复速度)
3. 定期演练恢复
没有演练的备份 = 假备份。
十、一页安全核对清单(Checklist)
你可以用它快速检查服务器是否合规。