深色模式
安全基线初查
摘要:新接手一台服务器,先扫一遍最危险的项:空密码账户、root 能否远程登录、是否有异常监听端口。本文给一个可直接跑的初查脚本。前提:root/sudo。
适用环境
bash
id -u # 应为 0(root)才能读全量信息
cat /etc/os-release | head -11
2
2
一、检查空密码账户
bash
awk -F: '($2 == "" || $2 == "!") {print "空/锁密码账户:", $1}' /etc/shadow
# 重点看密码字段为空("")的,属高危1
2
2
二、检查 root 远程登录
bash
grep -E '^PermitRootLogin' /etc/ssh/sshd_config
# 若为 yes,表示允许 root 直接 ssh 登录(不推荐)
# 建议改为 PermitRootLogin no 后 systemctl restart sshd1
2
3
2
3
三、检查异常监听端口
bash
ss -lntp # 列出所有监听端口及进程
# 关注 0.0.0.0 上非预期的端口,或未知进程1
2
2
四、一键初查脚本
bash
cat > /tmp/security_check.sh <<'EOF'
echo "== 空密码账户 =="; awk -F: '($2==""){print $1}' /etc/shadow
echo "== root 远程登录 =="; grep -E '^PermitRootLogin' /etc/ssh/sshd_config
echo "== 监听端口 =="; ss -lntp | grep -E ':22|:80|:443'
EOF
bash /tmp/security_check.sh1
2
3
4
5
6
2
3
4
5
6
验证
- [ ] 脚本能列出空密码账户(应为空列表)
- [ ] 确认
PermitRootLogin不是yes - [ ] 监听端口都能对上已知服务
常见坑
- shadow 文件权限:普通用户读不了
/etc/shadow,需 sudo。 - 误杀必要账户:发现空密码先确认是否系统服务账户(如
nobody),别直接删。 - 仅靠脚本不够:初查只覆盖几项,正式基线应参照 CIS Benchmark。