400-915-1135
维护运营详细

宝塔面板服务器安全顶级设置

发表日期:2026-07-23 12:54:19   作者来源:众诚企业建站   浏览:2

# 宝塔锁定网站写入、只保留访问权限 4套方案(从简单到终极锁死) 核心目标:**游客正常浏览网页,网站无法新增/修改/删除任何源码、静态文件**,后台上传、缓存生成、日志写入按需放行白名单。 ## 方案一:宝塔官方「文件防篡改」(新手首选,图形化操作) *省心,内核级拦截写入,不影响网页访问,支持白名单放行必须写入的目录。 1. 宝塔左侧【软件商店】→ 搜索 **文件防篡改**,安装官方插件 2. 打开防篡改 → 【防护设置】   - 防护目录:勾选你的网站根目录 `/www/wwwroot/你的域名`   - 开启总开关 3. **关键:添加白名单(必须写入的文件夹)** 点击「添加排除目录」,把下面路径填进去,否则网站上传、缓存、日志全报错: ``` /www/wwwroot/你的域名/upload /www/wwwroot/你的域名/uploads /www/wwwroot/你的域名/runtime /www/wwwroot/你的域名/cache /www/wwwroot/你的域名/temp /www/wwwroot/你的域名/logs ``` 4. 保存配置,立即生效 ### 优缺点 ✅ 优点:不用敲命令、可随时开关、支持批量站点、防篡改能力*强 ❌ 缺点:需要手动梳理白名单,静态纯展示站可只排除`logs`日志目录 ## 方案二:Linux基础权限收紧(纯权限管控,无插件) 原理:把网站运行用户`www`的**写入权限全部收回**,仅保留读/执行,网站能正常解析访问,但无法修改、新建文件。 ### 操作步骤 1. 宝塔进入【文件】,定位网站根目录:`/www/wwwroot/你的域名` 2. 右上角【终端】,执行下面3条命令: ```bash # 修正所有者为www(宝塔web运行用户) chown -R www:www /www/wwwroot/你的域名 # 所有文件夹:555 → 仅读+执行,取消所有写入权限 find /www/wwwroot/你的域名 -type d -exec chmod 555 {} ; # 所有文件:444 → 只读,完全不可写 find /www/wwwroot/你的域名 -type f -exec chmod 444 {} ; ``` 3. **放行必须写入的目录**(上传/缓存/日志),单独给755权限: ```bash chmod -R 755 /www/wwwroot/你的域名/upload chmod -R 755 /www/wwwroot/你的域名/runtime chmod -R 755 /www/wwwroot/你的域名/cache chmod -R 755 /www/wwwroot/你的域名/logs ``` ### 权限说明 - `555`目录:所有人**只能浏览、进入文件夹,不能新建/删除/改名** - `444`文件:所有人**只能读取,不能编辑、覆盖、删除** - 网站PHP/HTML正常读取解析,访问完全不受影响 ### 恢复写入(后续要改源码/更新) ```bash find /www/wwwroot/你的域名 -type d -exec chmod 755 {} ; find /www/wwwroot/你的域名 -type f -exec chmod 644 {} ; ``` ## 方案三:终极锁死:设置不可变属性 `chattr +i`(*强只读) 上面权限可以被root改回来,`i`不可变属性:**哪怕root管理员都不能修改、删除、重命名文件**,网页正常访问。 1. 进入网站目录终端,执行: ```bash # 全局加不可变锁 chattr -R +i /www/wwwroot/你的域名 # 给需要写入的目录取消锁 chattr -R -i /www/wwwroot/你的域名/upload chattr -R -i /www/wwwroot/你的域名/runtime chattr -R -i /www/wwwroot/你的域名/cache chattr -R -i /www/wwwroot/你的域名/logs ``` 2. 验证锁状态: ```bash lsattr /www/wwwroot/你的域名 ``` 看到文件前面有`----i-----`代表锁定成功。 ### 解锁(要改代码时执行) ```bash chattr -R -i /www/wwwroot/你的域名 ``` > 适用:纯静态展示站、源码定型不再修改,彻底防挂马、防篡改。 ## 方案四:Nginx/Apache层面拦截写入请求(补充防护) 在权限/防篡改之外,用web服务器拦截上传、PUT/DELETE请求,双重保险: ### Nginx配置(宝塔→网站→设置→配置文件) 在`server{}`内添加: ```nginx # 禁止PUT/DELETE写入类HTTP方法 if ($request_method !~ ^(GET|POST|HEAD)$ ) {    return 403; } # 禁止上传目录执行PHP(防木马) location ~* /(upload|uploads)/.*.php$ {    return 403; } ``` 保存,重载Nginx即可。 --- ## 不同网站选型建议(直接照抄) 1. **静态HTML纯展示站(无后台、不上传图片)** 优先:**方案三 chattr +i**,仅排除`logs`日志目录,完全锁死 2. **有后台、需要上传图片/生成缓存(CMS/博客/企业站)** 优先:**方案一 宝塔文件防篡改**,配置好upload、runtime白名单 3. **临时锁定,后续还要改源码** 优先:**方案二 权限收紧555/444**,解锁简单 4. **高危站点,怕被上传木马篡改** 组合:**防篡改 + 权限555/444 + Nginx拦截写入方法** ## 关键避坑 1. 无论用哪种方案,**必须放行upload、runtime、cache、logs**,否则网站报错:写入失败、无法上传、页面空白 2. 不要全局设`777`,权限放开等于白锁 3. `chattr +i`锁死后,**宝塔文件管理器也删不掉文件**,改代码前务必先`chattr -i`解锁 4. 数据库写入不受以上操作影响:上面只锁**网站文件写入**,MySQL数据库读写完全正常,符合你“只锁网站写入、不影响访问”需求 ## 快速验证是否生效 1. 前台正常打开网页、浏览页面 = 访问没问题 2. 后台尝试上传图片/修改模板,提示**写入失败/权限不足** = 锁定成功 3. 宝塔文件管理器尝试编辑php文件,保存报错 = 锁定成功

如没特殊注明,文章均为众诚网络原创,转载请注明来自https://www.94zc.com/weihu/349.html