系统安全加固
安全基线清单
用户与权限
# 锁定不需要的系统账号
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: 如何快速对一台新服务器做安全加固?
答案:
- 系统更新:
apt update && apt upgrade(或yum update) - SSH 加固:密钥认证 + 禁止 root + 修改端口
- 防火墙:仅开放必要端口(22, 80, 443)
- 用户权限:删除/锁定无用账号,sudo 最小授权
- 内核参数:禁用 IP 转发、启用 SYN Cookie
- 审计:启用 auditd,监控关键文件和命令
- 自动化:用 Ansible 批量执行加固 Playbook
可参考 CIS Benchmark 作为标准加固清单,有针对各 OS 的详细指南。