在IDC运维中,Linux服务器的安全往往不是被攻破那一刻才出问题,而是长期"裸奔"积累的隐患。一套标准化的安全基线检查,能让你在几分钟内摸清一台服务器的安全底数。本文分享一套可直接落地的安全基线检查清单和加固方案。
一、账号与口令基线
检查的第一步永远是账号体系。执行cat /etc/passwd | awk -F: '$3==0{print $1}'找出所有UID为0的超级用户,正常情况下只应该有一个root。如果出现其他UID 0账号,说明存在权限后门,必须立即排查。
口令策略方面,查看/etc/login.defs和/etc/pam.d/system-auth,确认密码最小长度≥8位、密码过期时间90天、失败锁定5次锁定10分钟。很多IDC服务器默认是永不过期,这属于高风险项。
特别要检查空口令账号:awk -F: '($2==""){print $1}' /etc/shadow,一旦发现立即passwd设置密码。另外检查/etc/sudoers,确认sudo权限只授予必要用户,且包含Defaults requiretty和Defaults env_reset等安全选项。
二、SSH 服务基线
SSH是运维主通道,也是暴力破解的重灾区。检查/etc/ssh/sshd_config:
PermitRootLogin no—— 禁止root直接登录,改用普通用户+sudoPasswordAuthentication no—— 启用密钥登录后关闭密码认证Protocol 2—— 禁止老旧的协议1MaxAuthTries 3—— 限制认证尝试次数AllowUsers—— 白名单机制,只允许指定用户登录
改完配置必须sshd -t验证语法,然后systemctl reload sshd。生产环境建议先开一个备用会话,防止配置错误把自己锁在门外。
三、网络与端口基线
用ss -tlnp列出所有监听端口,逐一确认每个端口的用途。常见危险端口:23(telnet)、3306(MySQL裸奔)、6379(Redis无认证)、27017(MongoDB)。Redis和数据库默认不允许监听0.0.0.0,应改为内网IP或127.0.0.1。
检查防火墙规则:iptables -L -n或firewall-cmd --list-all。默认策略应该是DROP而非ACCEPT,只放行必要端口。对于云服务器,同步检查安全组规则,避免防火墙开了但安全组全放行。
四、文件系统与系统完整性
重点检查以下高风险文件权限:
ls -l /etc/shadow # 应为 000 或 600
ls -l /etc/passwd # 应为 644
ls -l /etc/sudoers # 应为 440
find / -perm -4000 -type f 2>/dev/null # SUID文件排查SUID文件是提权漏洞的高发区,正常系统的SUID文件数量是固定的,新出现的SUID文件必须警惕。可以用chkrootkit和rkhunter做一次rootkit扫描,虽然会有误报,但能发现明显异常的隐藏后门。
五、日志与审计基线
检查/etc/rsyslog.conf确保authpriv、cron、kern等关键日志都已记录。journalctl确认系统日志正常写入。生产环境建议开启auditd审计:auditctl -w /etc/passwd -p wa -k identity,监控关键文件的读写行为。
日志的保存周期建议至少180天,配合logrotate防止日志占满磁盘。有条件的话把日志集中到远程日志服务器,防止攻击者清理本地日志销毁痕迹。
六、一键检查脚本
把以上检查项写成脚本,方便日常巡检:
#!/bin/bash
# security_check.sh - 服务器安全基线一键检查
echo "=== 1. UID 0 用户 ==="
awk -F: '$3==0{print $1}' /etc/passwd
echo "=== 2. 空口令账号 ==="
awk -F: '($2==""){print $1}' /etc/shadow
echo "=== 3. 监听端口 ==="
ss -tlnp
echo "=== 4. SUID 文件 ==="
find / -perm -4000 -type f 2>/dev/null
echo "=== 5. SSH 配置 ==="
grep -E "^(PermitRootLogin|PasswordAuthentication|Protocol)" /etc/ssh/sshd_config
echo "=== 6. 最近登录 ==="
last -20七、加固落地顺序
安全加固不是一次性的,建议按优先级推进:
- 第一优先(当天完成):改SSH端口+密钥登录、关root远程登录、改所有默认口令、关危险端口外网暴露
- 第二优先(一周内):装fail2ban、配置防火墙默认DROP、开启auditd
- 第三优先(持续):定期基线复查、漏洞扫描、关注安全公告
总结:安全基线检查的意义在于"心中有数"。每台服务器上线前做一次基线检查,形成台账,之后每季度复查一次,就能把大部分安全风险消灭在萌芽状态。安全不是买来的,是查出来的。
评论