静态网站防篡改核心是操作系统级权限+selinux+apache用户隔离协同:设目录属主为root、属组为apache,chmod 755/644;禁用allowoverride;selinux启用enforcing并设httpd_sys_content_t上下文;高安全场景可只读挂载。

静态网站部署后防止被恶意篡改,核心不是靠 Apache 自身“设为只读”,而是通过操作系统级文件权限 + SELinux(如启用)+ Apache 运行用户隔离三者协同实现。Apache 本身不提供“网站内容只读”开关,它只按配置读取文件;真正的防护来自让 web 服务进程(如 apache 或 www-data)**无权写入网站目录**。
1. 设置网站目录属主与基础权限
确保网站根目录(如 /var/www/html 或自定义路径)归属合理,且 Apache 进程用户仅有读和执行权限:
- 将目录属主设为管理员(如
root),属组可设为apache(CentOS/RHEL)或www-data(Ubuntu/Debian) - 运行命令:
sudo chown -R root:apache /var/www/htmlsudo chmod -R 755 /var/www/html(目录)sudo chmod 644 /var/www/html/*.html(HTML 文件) - 关键点:Apache 主进程通常以
root启动,但处理请求的子进程默认降权为apache用户(或www-data)。只要该用户对文件只有r--(4)或r-x(5),就无法修改或删除
2. 禁用 .htaccess 覆盖写入能力(防绕过)
攻击者可能试图上传恶意 .htaccess 文件来改变行为。应禁用其解析,除非你明确需要动态重写功能:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 编辑主配置文件
/etc/httpd/conf/httpd.conf(RHEL)或/etc/apache2/apache2.conf(Debian) - 定位到对应
<directory></directory>块(如<directory></directory>) - 将
AllowOverride设为None:AllowOverride None - 重启服务:
sudo systemctl restart httpd(或apache2)
3. 检查并加固 SELinux 上下文(仅限启用 SELinux 的系统)
SELinux 可强制限制进程对文件的访问类型,即使传统权限允许,SELinux 仍可拦截写操作:
- 确认 SELinux 处于 enforcing 模式:
getenforce应返回Enforcing - 确保网站目录有正确的安全上下文:
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"sudo restorecon -Rv /var/www/html - 若需脚本或上传功能,才考虑添加
httpd_sys_rw_content_t—— 静态站无需此标签
4. 额外建议:文件系统级只读挂载(可选高安全场景)
对极致安全要求(如发布镜像站、合规审计环境),可将网站目录所在分区以只读方式挂载:
- 例如,将静态内容放在单独分区
/dev/sdb1,在/etc/fstab中添加:/dev/sdb1 /var/www/html xfs defaults,ro 0 0 - 执行
sudo mount -o remount,ro /var/www/html即时生效 - 注意:此方式下连 root 也无法临时写入,更新网站必须先重新挂载为读写,操作需谨慎










