宝塔“一键安全扫描”仅做静态快照检查,可发现空密码root、mysql端口对外开放、网站目录777权限、php.ini开启display_errors等问题,但无法检测内存马、流量攻击或加密eval等动态威胁。

宝塔“一键安全扫描”到底能发现什么
它不是杀毒软件,也不防实时攻击,只做一次性的静态快照检查:比如 root 账户有没有空密码、MySQL 端口(3306)是不是监听在 0.0.0.0、网站目录权限是不是危险的 777、php.ini 里有没有开着 display_errors=On。它不查内存马、不分析流量、不碰数据库内容,更不会识别你手写的加密 eval——这些得靠人工+其他工具补位。
扫描卡住或没反应?先看后台脚本报什么错
点“一键安全扫描”没反应,大概率是 bt_safe_check.sh 脚本被系统拦住了。别急着重装面板,直接 SSH 登录后手动跑一遍:
- 执行
bash /www/server/panel/class/bt_safe_check.sh,看终端输出具体哪条命令失败 - 报
command not found: netstat→ 缺依赖,运行yum install -y net-tools(CentOS)或apt install -y net-tools(Ubuntu/Debian) - 报
Permission denied且路径含/proc/xxx/cmdline→ SELinux 在作祟,临时关掉测试:setenforce 0 - 扫了5分钟还不出结果 → 很可能是某个网站目录太大(比如日志堆满的
/www/wwwroot/xxx/log/),先在「网站」页面停用非核心站点再试
高危项标红≠马上要删,得看环境和上下文
宝塔把“SSH端口暴露”“MySQL对外开放”都标成高危,但风险等级其实取决于你的网络架构。比如:
-
3306对外开放:除非你明确需要外网连库,否则必须关——在「安全」页直接删掉该端口放行规则,或加 IP 白名单 -
display_errors=On:线上环境必须关;开发机可以留,但绝不能上生产 - 网站根目录属主是
www且权限为777:比看起来更危险——攻击者上传一句话木马后就能直接执行,建议改成755+ 属主www,上传目录单独设755或750
查完还得验证:Webshell 不只藏在 PHP 文件里
宝塔的「木马查杀」只扫文件特征,不查 Nginx 配置是否被劫持、不查 .user.ini 是否被篡改、更不查数据库里注入的 JS。所以扫描完务必补一步:
- 快速过一遍可疑小文件:
find /www/wwwroot -name "*.php" -type f -size -50k -exec grep -l "eval\|base64_decode\|gzinflate\|file_get_contents.*http" {} \; 2>/dev/null - 检查 Nginx 是否被暗改:运行官方检测脚本
curl -sSO https://www.php.cn/link/8dda4f8ad13f00fbc214ee90dbcd2665 && btpython w_check.py && rm -rf w_check.py - 重点盯死上传类目录:
/upload/、/cache/、/data/、/wp-content/uploads/——这些地方权限松、更新勤、审查少,90% 的 Webshell 都蹲在这儿
真正麻烦的不是扫不出来,而是扫出来一堆“低危”却不敢删——比如你自己写的加密函数也匹配了 base64_decode。这时候得点开每条结果,用 head -n 20 文件路径 看开头逻辑,而不是只信文件名。










