三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

OpenVAS扫不动了?别慌,用这3个Linux命令5分钟定位问题(附日志分析实战)

OpenVAS扫不动了?别慌,用这3个Linux命令5分钟定位问题(附日志分析实战)

OpenVAS扫不动了?别慌,用这3个Linux命令5分钟定位问题(附日志分析实战)

凌晨三点,安全运维工程师小李被警报声惊醒——OpenVAS扫描任务卡在87%已经两小时没有进展。这种场景对安全团队来说如同噩梦,不仅影响漏洞修复周期,更可能让攻击者有机可乘。本文将分享一套经过实战检验的快速诊断方法,仅需toptail -fgrep三个基础命令,就能像老中医把脉一样精准定位扫描停滞的症结所在。

1. 症状速诊:三阶排查法

当OpenVAS扫描异常时,资深工程师会像急诊医生一样执行标准检查流程:

第一阶段:生命体征检查

  • 使用top -c -u openvas命令查看专属用户资源占用
  • 重点关注%CPU超过80%或%MEM持续增长的进程
  • 观察RES内存值是否接近系统可用内存上限

第二阶段:进程行为分析

ps auxf | grep -A 5 openvas

这个命令组合能显示进程树结构,特别留意:

  • 是否有僵尸进程(状态为Z)
  • 子进程数量是否异常膨胀
  • 命令行参数是否包含异常目标地址

第三阶段:实时日志追踪

tail -f /var/log/openvas/gsad.log | grep -E 'WARNING|ERROR'

通过管道符组合过滤关键错误信息,常见问题信号包括:

  • Connection timed out(网络策略拦截)
  • No route to host(目标主机失联)
  • Memory allocation failed(资源耗尽)

2. 深度解剖:典型故障场景处理

2.1 案例一:CPU被"吸血鬼"进程榨干

某次渗透测试中,扫描进程占用CPU达300%却无进展。通过以下步骤定位问题:

  1. 定位异常进程
top -b -n 1 | awk '/openvas/ && $9>80 {print $1,$9,$12}'

输出显示openvas-nasl进程持续高负载

  1. 分析插件行为
strace -p 进程ID -c 2>&1 | head -20

发现大量时间消耗在nanosleep系统调用

  1. 解决方案
sudo -u openvas greenbone-nvt-sync --force

更新NASL插件库后,CPU占用降至正常水平

经验提示:定期执行greenbone-feed-sync可避免插件兼容性问题

2.2 案例二:内存泄漏导致OOM

凌晨批量扫描时系统频繁崩溃,排查过程:

  1. 监控内存变化
watch -n 5 'free -m | awk "/Mem:/ {print \$3/\$2*100}"'

内存使用率呈线性增长

  1. 捕获泄漏进程
valgrind --leak-check=full /usr/sbin/openvassd --foreground

发现NVT插件未正确释放XML解析缓冲区

  1. 临时缓解措施
sysctl -w vm.overcommit_memory=2 echo 80 > /proc/sys/vm/overcommit_ratio

2.3 案例三:网络策略暗礁

扫描跨机房目标时频繁超时,诊断方法:

  1. 连通性测试
tcptraceroute 目标IP 9390 | tee /tmp/trace.log

发现第三跳路由器丢包率37%

  1. 带宽检测
iperf3 -c 目标IP -p 5201 -t 30 -J > iperf.json

JSON输出显示带宽波动在2-50Mbps之间

  1. 优化方案
openvasmd --modify-scanner=默认 --value="max_hosts=10" openvasmd --modify-scanner=默认 --value="max_checks=5"

3. 高阶技巧:日志分析三板斧

3.1 时间轴重建术

当问题涉及多个服务时,需要关联分析日志:

paste <(cat /var/log/openvas/gsad.log) <(cat /var/log/openvas/openvassd.log) | awk -F'\t' '{print $1,$2}' | sort -k1 | less

3.2 错误模式统计

快速识别高频错误:

awk '/ERROR/{a[$5]++} END{for(i in a) print a[i],i}' /var/log/openvas/*.log | sort -nr | head -5

3.3 智能日志监控

使用mlocate加速日志检索:

updatedb locate *.log | grep openvas | xargs -I{} sh -c 'echo "监控 {}"; tail -f {} | grep --color=auto -E "CRITICAL|SEGFAULT"'

4. 防御性运维:构建安全网

4.1 资源隔离方案

通过cgroups限制资源用量:

cgcreate -g cpu,memory:/openvas_group cgset -r cpu.shares=512 openvas_group cgset -r memory.limit_in_bytes=8G openvas_group systemctl set-property openvas-scanner.service CPUShares=512 MemoryLimit=8G

4.2 自动化监控脚本

定时检测关键指标:

#!/bin/bash ALERT_LEVEL=90 CPU=$(top -bn1 | grep openvas | awk '{sum+=$9} END{print sum}') MEM=$(free | awk '/Mem:/ {print $3/$2*100}') [ ${CPU%.*} -ge $ALERT_LEVEL ] && echo "CPU告警:${CPU}%" | mail -s "OpenVAS异常" admin@example.com [ ${MEM%.*} -ge $ALERT_LEVEL ] && echo "内存告警:${MEM}%" | mail -s "OpenVAS异常" admin@example.com

4.3 扫描策略优化

推荐配置参数对照表:

参数名默认值生产环境建议值作用域
max_hosts3010-15并发目标数
max_checks105-8并发插件数
plugins_timeout03600插件超时(秒)
auto_enabletruefalse新插件自动启用

在深度扫描800+节点的金融网络时,调整以下参数使稳定性提升60%:

openvasmd --modify-scanner=默认 --value="max_hosts=12" openvasmd --modify-scanner=默认 --value="plugins_timeout=7200"
← 返回列表