本文目录导读:

服务器漏洞自查是一项系统性工作,通常结合自动化工具扫描与人工安全配置检查,以下是分步骤的自查指南,适用于Linux/Windows服务器:
第一阶段:资产与信息收集
在进行扫描前,需要明确你管理的是“什么”。
- 明确服务器角色:是Web服务器、数据库服务器、邮件服务器还是API网关?不同角色风险点不同。
- 盘点开放端口与服务:
- Linux:
ss -tuln或netstat -tulpn - Windows:
netstat -ano | findstr LISTENING - 重点:检查是否有意料之外的端口开放(如 Redis 6379、MongoDB 27017 暴露在外)。
- Linux:
- 确认操作系统与软件版本:
cat /etc/os-release(Linux)systeminfo | findstr /B "OS"(Windows)- 关键:记录所有关键软件版本(如 Nginx, OpenSSL, Tomcat, MySQL)。
第二阶段:自动化漏洞扫描(最有效手段)
建议使用开源免费工具或商业版试用进行快速自查。
使用 OpenVAS / Greenbone (全面深度扫描)
- 特点:开源漏洞评估系统,类似Nessus,包含数万条漏洞插件。
- 操作:安装后配置目标IP(如你的线上服务器),运行“Full and Fast”扫描。
- 查看结果:重点关注 Critical(严重) 和 High(高危) 漏洞,特别是“远程代码执行”、“未授权访问”、“SQL注入”。
使用 Nikto (Web服务器专项)
- 适用:仅用于HTTP/HTTPS服务。
- 命令:
nikto -h https://你的IP或域名 -ssl -Format html -o report.html - 查什么:敏感文件(/phpinfo.php, /backup.sql)、过期组件、不安全的HTTP方法(PUT, DELETE开启)。
使用 Nuclei (基于PoC的快速验证)
- 特点:社区维护的PoC模板库,速度快,误报率低。
- 命令:
nuclei -u https://你的域名 -severity critical,high -o results.txt - 优势:能直接验证特定CVE(如Log4j, Shiro反序列化)。
使用 WPScan / JoomScan (CMS专用)
- 场景:网站使用WordPress, Joomla, Drupal。
- 命令:
wpscan --url https://你的域名 --api-token YOUR_TOKEN --plugins-detection aggressive
第三阶段:核心安全配置检查(人工排查)
自动化工具可能无法发现配置逻辑漏洞。
弱口令与默认凭据(高危!)
- 检查项:
- 所有SSH/RDP密码是否是
root/123456、admin/admin? - 数据库(MySQL, Redis, MongoDB)是否设有强密码?或者是否开启了“无密码访问”?
- Tomcat Manager页面是否使用了默认密码(
tomcat/tomcat)?
- 所有SSH/RDP密码是否是
- 自查:尝试手动用上述默认密码登录。
Web中间件配置错误
- 目录遍历:访问
https://你的域名/../../etc/passwd是否返回内容? - 备份文件泄露:访问
https://你的域名/xxx.bak或xxx.sql是否存在? - 不安全HTTP方法:使用
curl -X OPTIONS https://你的域名检查是否允许PUT、DELETE、TRACE。
操作系统与内核漏洞
- 脏牛(Dirty Pipe)等本地提权漏洞:
- Linux: 检查内核版本(
uname -a),对比已知CVE(如CVE-2022-0847)。 - Windows:
wmic qfe list查看补丁KB编号,搜索对应漏洞(如 PrintNightmare)。
- Linux: 检查内核版本(
权限与文件系统安全
- 敏感文件权限:
find / -perm -4000 -type f(查找SUID文件,过多或异常文件可能被用于提权)。 - 目录权限:
ls -la /home/检查是否存在其他用户目录泄露。
第四阶段:日志与行为审计(应对后门)
如果怀疑服务器已被攻破,需要检查异常行为。
- 系统日志:
- Linux:
journalctl -xe或grep "Failed password" /var/log/auth.log - Windows: 检查“安全”日志ID 4625(登录失败)和ID 4624(登录成功),关注非工作时间登录。
- Linux:
- 计划任务/自启动:
- Linux:
crontab -l和ls -la /etc/cron* - Windows:
schtasks和reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run
- Linux:
- Webshell扫描:使用河马Webshell查杀(
sudo ./hm scan /website/)。
如何量化风险并优先处理?
| 严重等级 | 典型漏洞 | 处理时限 |
|---|---|---|
| P0-紧急 | 远程代码执行(RCE)、弱口令被爆破、数据库未授权访问、存在已知公开PoC的0day。 | 立即下线或隔离,1小时内修复。 |
| P1-高危 | SQL注入、XSS、敏感信息泄露、服务端请求伪造(SSRF)、目录遍历。 | 24小时内完成修复或WAF规则封禁。 |
| P2-中危 | SSL/TLS弱加密(CVE-2016-2183)、HTTP响应头缺失、Cookie未设置Secure/HttpOnly。 | 本周内修复。 |
| P3-低危 | 信息泄露(如Server版本号)、默认信息、不必要的开放端口。 | 下个维护窗口处理。 |
完整自查清单速查表(建议逐一勾选)
- [ ] 所有默认密码是否已修改?(重点:数据库、SSH、ROOT、CMS后台)
- [ ] 系统是否打了最新安全补丁?(
apt update && apt upgrade或yum update) - [ ] 是否只开放了必要的端口?(
iptables -L或firewall-cmd --list-all) - [ ] 是否启用了自动安全更新?(如
unattended-upgrades,automatic updates) - [ ] Web目录是否有写入权限给非必要用户?(如
chmod -R 755 /var/www/html) - [ ] 是否配置了WAF(如ModSecurity)或云防火墙?
- [ ] 是否启用了Fail2ban (防止暴力破解)?
- [ ] SSH配置是否禁用Root直接登录?(
PermitRootLogin no) - [ ] 日志是否上传到远程服务器进行集中监控?
最后的警告:若在生产服务器上执行高强度扫描或验证性攻击,请务必确保:
- 已获取领导或安全负责人的书面授权。
- 使用的扫描工具(如OpenVAS)已配置“安全”模式,避免发送可能导致服务崩溃的畸形数据包。
- 最好先在预发布环境或快照副本上进行测试。
如果自查后发现无法解决的高危漏洞,建议立即联系专业安全团队或使用云平台自带的“主机安全”服务(如阿里云安骑士、腾讯云主机安全、AWS Inspector)。