📌 目的
本文档旨在提供一套适用于常见 Linux 服务器(如 Ubuntu、CentOS)的主机安全加固方案,用于防止入侵、控制权限、保障生产环境稳定性。
🧱 基础安全配置
1. 禁用 Root 登录
sudo vim /etc/ssh/sshd_config
PermitRootLogin no PasswordAuthentication no
|
启用仅限密钥认证,并重启 SSH 服务:
sudo systemctl restart sshd
|
2. 创建普通用户并授予 sudo 权限
adduser deploy usermod -aG sudo deploy
|
3. 配置 SSH 公钥登录
mkdir -p /home/deploy/.ssh chmod 700 /home/deploy/.ssh vim /home/deploy/.ssh/authorized_keys chmod 600 /home/deploy/.ssh/authorized_keys chown -R deploy:deploy /home/deploy/.ssh
|
🔥 防火墙设置
Ubuntu (UFW)
sudo ufw default deny incoming sudo ufw allow ssh sudo ufw allow 80 sudo ufw allow 443 sudo ufw enable
|
CentOS (firewalld)
sudo firewall-cmd --add-service=ssh --permanent sudo firewall-cmd --add-service=http --permanent sudo firewall-cmd --add-service=https --permanent sudo firewall-cmd --reload
|
🔒 文件与权限保护
锁定关键系统文件
chattr +i /etc/passwd chattr +i /etc/shadow
|
设置目录权限
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
|
🧠 系统更新与补丁
Ubuntu
sudo apt update && sudo apt upgrade -y
|
CentOS
可选安装自动更新服务:
sudo apt install unattended-upgrades
|
🧪 入侵检测与日志审计
启用 auditd 审计
sudo apt install auditd sudo systemctl enable --now auditd
|
登录失败自动封禁(fail2ban)
sudo apt install fail2ban sudo systemctl enable --now fail2ban
|
🔍 日志审计命令
last
grep 'sudo' /var/log/auth.log
ss -tulnp
find /etc -type f -mtime -1
|
☁ 云服务建议
| 云平台 | 建议操作 |
|---|
| 阿里云 | 启用安骑士、安全组严格控制端口 |
| 腾讯云 | 启用云镜、设置访问白名单 |
| AWS | 配置 VPC、使用 GuardDuty |
✅ 总结
| 维度 | 措施建议 |
|---|
| 用户权限 | 禁用 root,使用 sudo 普通用户 |
| 网络控制 | 防火墙设置、安全组最小开放 |
| 文件安全 | chattr 加锁、目录限权 |
| 系统更新 | 启用定期补丁更新 |
| 审计与日志 | 配置 auditd,启用 fail2ban |
| 入侵防御 | 安装 AIDE、OSSEC 或其他 HIDS 工具 |
📎 参考资料