跳到主要内容

系统安全加固

安全基线清单

用户与权限

# 锁定不需要的系统账号
usermod -L bin daemon adm lp sync shutdown halt mail

# 检查 UID=0 的账号(只应有 root)
awk -F: '$3==0 {print $1}' /etc/passwd

# 设置密码策略
cat > /etc/security/pwquality.conf << 'EOF'
minlen = 12
minclass = 3
maxrepeat = 3
EOF

# sudo 精细化授权(避免 ALL=(ALL) ALL)
visudo
# deploy ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx, /bin/systemctl restart app

文件权限

# 关键文件权限
chmod 600 /etc/shadow /etc/gshadow
chmod 644 /etc/passwd /etc/group
chmod 700 /root

# 查找 SUID/SGID 文件(潜在提权风险)
find / -type f \( -perm -4000 -o -perm -2000 \) -ls 2>/dev/null

# 查找全局可写文件
find / -type f -perm -0002 -ls 2>/dev/null

内核安全参数

/etc/sysctl.d/99-security.conf
# 禁用 IP 转发(非路由器)
net.ipv4.ip_forward = 0

# 防 SYN Flood
net.ipv4.tcp_syncookies = 1

# 禁用 ICMP 重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

# 禁用源路由
net.ipv4.conf.all.accept_source_route = 0

# 启用地址随机化(ASLR)
kernel.randomize_va_space = 2
sysctl --system   # 应用

审计日志

auditd 关键规则
# 监控 /etc/passwd 变更
-w /etc/passwd -p wa -k passwd_changes
-w /etc/shadow -p wa -k shadow_changes

# 监控 sudo 使用
-w /var/log/sudo.log -p wa -k sudo_log

# 监控敏感命令
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/wget -k download
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/curl -k download
systemctl enable --now auditd
ausearch -k passwd_changes # 搜索审计日志
aureport --auth # 认证报告

常见面试问题

Q1: 如何快速对一台新服务器做安全加固?

答案

  1. 系统更新apt update && apt upgrade(或 yum update
  2. SSH 加固:密钥认证 + 禁止 root + 修改端口
  3. 防火墙:仅开放必要端口(22, 80, 443)
  4. 用户权限:删除/锁定无用账号,sudo 最小授权
  5. 内核参数:禁用 IP 转发、启用 SYN Cookie
  6. 审计:启用 auditd,监控关键文件和命令
  7. 自动化:用 Ansible 批量执行加固 Playbook

可参考 CIS Benchmark 作为标准加固清单,有针对各 OS 的详细指南。

相关链接