📌 目的
本文档旨在提供一套适用于常见 Linux 服务器(如 Ubuntu、CentOS)的主机安全加固方案,用于防止入侵、控制权限、保障生产环境稳定性。
🧱 基础安全配置
1. 禁用 Root 登录
# 编辑 SSH 配置文件
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 yum update -y
可选安装自动更新服务:
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
# 查看最近使用 sudo 的记录
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 工具 |