在测试环境 Linux 主机上可直接执行的排查弱密码和漏洞步骤(尽量降低误报、同时覆盖 nacos/应用/数据库配置)
·
下面给你一套在测试环境 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*.yml、application*.properties、bootstrap*.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/password、spring.datasource.urlspring.data.mongodb.uri或mongodb://user:pass@...spring.redis.password、spring.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 只能找到“疑似密码字段”,弱口令通常需要你们定义规则。常见做法:
- 把命中的
password=...、pwd: ...提取出来(不要外传) - 对照弱口令字典:
123456、admin、root、password、qwerty、公司名、环境名、短长度(<8)等 - 检查是否同库同账号复用、是否明文、是否可被日志输出
如果你们要自动化一点,可以只做“长度过短/明显字典值”的本地统计,但建议由安全规范来定阈值。
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/第三方)、是否生产同源
- 建议:改用凭据中心/环境变量/加密配置/权限收敛/绑定内网等
更多推荐



所有评论(0)