Linux服务器系统安全基线检查
安全基线检查是什么?为什么重要?
Linux服务器系统安全基线检查是一套标准化的安全检视流程,用来发现潜在风险点,比如弱密码、开放端口过多、日志缺失等。
对于刚接触运维的新手来说,按基线手册逐项检查,能避免“凭感觉调配置”带来的安全隐患。
本文以CentOS 7/8和Ubuntu 20.04为例,带你从零完成一次完整的基线检查。
检查前要做哪些准备
- 使用具有sudo权限的账号登录服务器,建议先备份关键配置文件:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak和cp /etc/login.defs /etc/login.defs.bak。 - 如果服务器已在线提供服务,请提前在非业务时段操作,或先在测试环境演练。
- 确保服务器连接正常,避免在修改SSH配置时断开连接(建议保留一个备用会话)。
核心检查项一:账户与密码策略
- 检查当前密码过期设置:
sudo cat /etc/shadow | grep -v '^$',观察每行第5个字段(密码最大天数)是否为0(表示过期)。 - 修改密码策略文件
/etc/login.defs,设置如下值:
PASS_MAX_DAYS 90(90天过期)PASS_MIN_DAYS 7(7天后才能改密码)
保存后使用 sudo chage -l <用户名> 验证单个用户策略。
- 检查是否存在空口令或默认账户(如root直接登录),使用
sudo awk -F: '($2==""){print $1}' /etc/shadow查看。如果发现空口令,立即用sudo passwd <用户名>设置强密码。
核心检查项二:SSH与网络服务加固
- 编辑
/etc/ssh/sshd_config,确保以下配置存在(若不存在则添加):
PermitRootLogin no(禁止root直接登录)MaxAuthTries 3(最大认证尝试次数)Protocol 2(仅使用SSHv2)Port 2222(可选,修改默认端口降低扫描风险)
保存后执行 sudo systemctl restart sshd 或 sudo service ssh restart 生效。
- 查看当前开放端口:
sudo netstat -tulpn或sudo ss -tulpn,关闭不必要的服务,如未使用的FTP、Telnet。使用sudo systemctl disable <服务名>禁止开机自启。 - 安装并启用防火墙:
sudo systemctl enable firewalld && sudo systemctl start firewalld。添加规则放行SSH端口:sudo firewall-cmd --permanent --add-port=2222/tcp后sudo firewall-cmd --reload。
核心检查项三:文件权限与系统审计
- 检查关键系统文件权限:
/etc/passwd应为-rw-r--r--(644)/etc/shadow应为-rw-------(600)或-r--------(400)/etc/sudoers应为-r--r-----(440)
如果权限错误,使用 sudo chmod 644 /etc/passwd 等命令修正。
- 启用系统审计(auditd)记录关键事件:
sudo systemctl enable auditd && sudo systemctl start auditd。添加规则监控/etc/passwd修改:sudo auditctl -w /etc/passwd -p wa -k passwd_changes。
验证与常见问题
- 验证密码策略:
sudo chage -l youruser确认 Max Days 为90。 - 验证SSH配置:尝试用root密码登录(应被拒),或用新端口连接
ssh -p 2222 user@host。 - 常见问题1:修改sshd_config后重启失败。排查:先运行
sudo sshd -t测试语法,确认无误再重启。 - 常见问题2:修改防火墙规则后无法连接。修复:通过云服务商控制台的VNC/串口或带外管理恢复,或提前添加临时规则允许当前IP访问。
完成以上检查后,你的Linux服务器系统安全基线水平已经大幅提升。
建议每月重复一次检查,并配合漏洞扫描工具(如Lynis)做全面评估。
遇到异常时,优先回看备份文件并恢复。