下面给你一套在测试环境 Linux 主机上可直接执行的排查步骤(尽量降低误报、同时覆盖 nacos/应用/数据库配置)。执行前建议用有权限但尽量不要用 root 直接扫业务盘以外的敏感目录;若必须 root,注意输出不要外发。

0) 先圈定重点目录(减少全盘误报)

优先扫这些(按你们栈):

  • Nacos:${NACOS_HOME}/conf/${NACOS_HOME}/data/(以及部署目录)
  • 应用:/opt//srv//data//home/*/ 下项目目录、config/conf/
  • 容器:/var/lib/docker/containers/(日志/环境变量)、docker-compose*.yml
  • Nginx:/etc/nginx/
  • Jenkins:/var/lib/jenkins/(注意里面可能有凭据,但别把敏感内容直接导出)
  • 常见配置:application*.ymlapplication*.propertiesbootstrap*.yml*.conf*.ini*.env

后面示例我用 SCAN_DIRS="..." 你按实际改。


1) 快速定位“疑似存密码的配置文件”

1.1 按文件名先筛(命中率高)

SCAN_DIRS="/opt /srv /data /etc /var/lib/jenkins /etc/nginx"
sudo find $SCAN_DIRS -type f \( \
  -iname "application*.yml" -o -iname "application*.yaml" -o -iname "application*.properties" -o \
  -iname "bootstrap*.yml" -o -iname "bootstrap*.yaml" -o -iname "bootstrap*.properties" -o \
  -iname "*.conf" -o -iname "*.ini" -o -iname "*.env" -o -iname "docker-compose*.yml" -o \
  -iname "nacos*.properties" -o -iname "config.*" \
\) 2>/dev/null | tee /tmp/suspect_files.list

1.2 在上述文件里 grep 关键词(避免“全盘扫二进制/大文件”)

sudo grep -RIn --binary-files=without-match --color=always \
  -E 'password|passwd|psw|pwd|passphrase|secret|token|access[_-]?key|secret[_-]?key|apikey|jdbc:|redis://|mongodb://|AKIA|BEGIN (RSA|OPENSSH) PRIVATE KEY' \
  $(cat /tmp/suspect_files.list) 2>/dev/null | tee /tmp/cred_hits_suspect_files.txt

这会把“疑似敏感项所在的文件:行号:内容”打印出来,后续你们再逐条确认是否明文、是否弱口令、是否测试数据。


2) 真的要“全盘扫描”怎么做(更稳、更可控)

全盘 grep -R / 很容易扫到 /proc、二进制、海量日志导致卡死/误报。推荐用 find + xargs grep,并排除明显无关目录。

sudo find / \
  \( -path /proc -o -path /sys -o -path /dev -o -path /run -o -path /tmp -o -path /var/cache -o -path /var/log -o -path /var/lib/docker/overlay2 \) -prune -o \
  -type f -size -20M -print0 2>/dev/null \
| sudo xargs -0 grep -nI --binary-files=without-match -E 'password|passwd|Psw|psw|pwd' 2>/dev/null \
| tee /tmp/cred_hits_fullscan.txt

说明:

  • -nI:忽略二进制文件、带行号
  • -size -20M:避免扫超大文件把机器拖死(可按需调大)
  • 排除 /proc/sys/dev/run 等虚拟文件系统与 docker overlay2

3) Nacos 重点怎么查

3.1 找到 Nacos 安装目录

常见在 /opt/nacos/usr/local/nacos、容器里。先定位:

sudo find /opt /usr/local /srv /data -maxdepth 3 -type d -iname "*nacos*" 2>/dev/null

3.2 查 Nacos 配置里是否有数据库账号密码等

NACOS_HOME=/opt/nacos   # 按实际改
sudo grep -RIn --color=always \
  -E 'password|passwd|user(name)?|jdbc\.url|db\.url|spring\.datasource|mysql|token|secret|key' \
  "$NACOS_HOME/conf" 2>/dev/null | tee /tmp/nacos_conf_hits.txt

3.3 查 Nacos data 目录(有时会落地配置/加密串/历史)

sudo grep -RIn --binary-files=without-match \
  -E 'password|passwd|Psw|psw|pwd|jdbc:|redis://|mongodb://' \
  "$NACOS_HOME/data" 2>/dev/null | tee /tmp/nacos_data_hits.txt

4) 应用配置(Spring Boot)重点项

application.yml/properties 里重点关注这些键:

  • spring.datasource.username/passwordspring.datasource.url
  • spring.data.mongodb.urimongodb://user:pass@...
  • spring.redis.passwordspring.redis.*
  • 第三方:accessKey/secretKey/token/appSecret

你可以直接:

sudo grep -RIn --color=always \
  -E 'spring\.datasource\.(url|username|password)|spring\.redis\.password|spring\.data\.mongodb\.(uri|username|password)|mongodb://|redis://|jdbc:' \
  /opt /srv /data 2>/dev/null | tee /tmp/app_config_hits.txt

5) “弱口令”怎么判断(排查思路)

grep 只能找到“疑似密码字段”,弱口令通常需要你们定义规则。常见做法:

  1. 把命中的 password=...pwd: ... 提取出来(不要外传)
  2. 对照弱口令字典:123456adminrootpasswordqwerty、公司名、环境名、短长度(<8)等
  3. 检查是否同库同账号复用、是否明文、是否可被日志输出

如果你们要自动化一点,可以只做“长度过短/明显字典值”的本地统计,但建议由安全规范来定阈值。


6) “第三方组件未授权漏洞”你们这台机上怎么自查(不做攻击)

你提到“未授权”,通常指组件对外开放且无认证/弱认证。测试环境自查建议做两件事:

6.1 盘点端口与进程

sudo ss -lntp

看是否有对外监听的组件端口(如 Nacos 8848、Redis 6379、Mongo 27017、Jenkins 8080、Nginx 80/443 等)。

6.2 检查是否绑定了 0.0.0.0 且未加鉴权/访问控制

  • Redis:是否 bind 127.0.0.1、是否 requirepass、是否有 ACL
  • Mongo:是否开启认证 authorization: enabled(或启动参数)
  • Nacos:是否启用鉴权(新版本有 auth 开关)、是否有公网/办公网可达
  • Jenkins:是否开启安全(禁止匿名、CSRF、矩阵权限等)

(你们公司如果只要求“grep 扫配置”,那也至少把这些配置文件命中项列出来给安全。)


最后:给你一个“交付给安全/运营”的输出格式

  • 文件路径
  • 命中行(遮罩敏感值,例如只留前后 2 位:pa****23
  • 说明:明文/疑似、用途(DB/Redis/Mongo/第三方)、是否生产同源
  • 建议:改用凭据中心/环境变量/加密配置/权限收敛/绑定内网等
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐