宝塔面板“安全检测”仅做一次性静态扫描,可发现弱口令、危险端口暴露(如22/3306/6379监听0.0.0.0)、可疑进程、web目录权限不当(如根目录777且属主www)、php配置缺陷(display_errors=on等),但不查0day、内存马、webshell、ssl证书或登录行为。

宝塔面板自带的“安全检测”功能能发现哪些风险
宝塔面板的「安全检测」不是杀毒软件,也不做实时监控,它只做一次性的静态扫描:检查常见弱口令、危险端口暴露、可疑进程、Web目录权限、PHP配置缺陷等。它不查0day漏洞,也不分析流量行为,所以别指望它发现被植入的隐蔽后门或内存马。
- 它会读取
/etc/passwd和/etc/shadow检查 root 或其他用户是否用空密码/简单密码 - 扫描
netstat -tuln输出,标记如22、3306、6379等端口是否监听在0.0.0.0(即对外暴露) - 检查网站根目录是否可写且属主为
www(典型越权上传风险) - 读取
/www/server/php/*/etc/php.ini,告警display_errors=On、expose_php=On等配置
点击“安全检测”按钮后没反应或卡住怎么办
这通常不是界面卡顿,而是后台脚本被系统限制或中断了。宝塔调用的是 bt_safe_check.sh 脚本,它依赖 python3 和部分系统命令,某些精简版 CentOS 或 OpenVZ 云主机可能缺依赖或被 SELinux 拦截。
- 先手动执行检测:
bash /www/server/panel/class/bt_safe_check.sh,看终端报什么错 - 常见报错
command not found: netstat→ 安装net-tools:yum install -y net-tools - 报错
Permission denied且路径含/proc/xxx/cmdline→ 关闭 SELinux 临时测试:setenforce 0 - 检测耗时超过 5 分钟没返回 → 很可能是某个网站目录过大(如含大量日志或备份文件),可在面板「网站」里临时停用非核心站点再试
检测报告里标红的“高危项”哪些必须立刻处理
不是所有红字都同等紧急。宝塔把“弱密码”和“端口暴露”列为高危,但实际风险等级取决于你的网络环境。
-
SSH端口(22)监听在0.0.0.0:如果你没配防火墙或没改端口,这就是真高危;但如果已用fail2ban+iptables严格限流,可暂缓 -
MySQL端口(3306)对外开放:几乎必须关——除非你明确需要外网连数据库,否则直接在宝塔「安全」页面关闭该端口或加 IP 白名单 -
PHP显示错误信息(display_errors=On):线上环境必须关,否则可能泄露路径、版本、SQL 片段;开发机可留着,但别放生产 -
网站目录权限为777:比你想象中更危险——尤其当运行用户是www时,攻击者上传一句话木马后可直接执行
安全检测不能替代什么
它不生成修复命令,不自动加固,也不更新规则库。每次升级宝塔版本,检测逻辑可能变,但不会自动同步 CVE 数据。
- 它不查 Webshell:比如
assert($_POST[1])这类混淆代码,得靠专业工具如linux-malware-detect或人工审计 - 它不验证证书有效性:SSL 配置错误(如用自签证书、过期、域名不匹配)不在检测范围内
- 它不跟踪登录来源:暴力破解尝试、异常 IP 登录记录,得看
/var/log/secure或宝塔「面板日志」 - 它不覆盖自定义配置:比如你手动在
nginx.conf里加了add_header X-Frame-Options DENY,检测不会提醒你这个头缺失——它只看宝塔管理的那部分
真正容易被忽略的是:检测结果里“建议操作”那一栏,很多是 Bash 命令片段,复制粘贴前务必确认当前用户权限和路径是否匹配,尤其是涉及 chown、chmod 的操作,手抖输错一个点就可能锁死网站。










