开发运维 本文章已被<“小黑窗”命令合集>专题收录

【服务器安全】linux centos中锁定网站程序目录和文件防修改篡改的集中办法

本文阅读 3 分钟
首页 开发运维 正文

CentOS 7 上,为了锁定网站程序目录下的文件,防止修改、添加或创建,可以使用 chattr 命令、SELinux 或 ACL 来加强安全性。


方案 1:使用 chattr 锁定文件

chattr(change attribute,修改文件属性)可以防止文件被修改或删除,即使是 root 用户。

1.1 锁定整个网站目录

假设网站目录为 /var/www/html,可以执行:

chattr -R +i /var/www/html
  • -R:递归操作,对所有子目录和文件生效。
  • +i:加上 immutable(不可变)属性,任何用户(包括 root)都无法修改、删除、重命名或添加文件。

1.2 取消锁定

如果需要更新文件,可以先解锁:

chattr -R -i /var/www/html

方案 2:使用 SELinux 限制修改

如果你的系统启用了 SELinux,可以配置 SELinux 来防止目录中的文件被修改。

2.1 查看 SELinux 是否开启

getenforce

如果返回 Enforcing,说明 SELinux 已开启。

2.2 只允许 Web 服务器读取文件

semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
restorecon -Rv /var/www/html
  • httpd_sys_content_t 只允许 Apache/Nginx 读取文件,禁止修改。

2.3 禁止 PHP 脚本修改文件

setsebool -P httpd_unified 0
setsebool -P httpd_can_write 0
setsebool -P httpd_can_network_connect 0
  • httpd_unified 0:防止 Web 服务器修改自身文件。
  • httpd_can_write 0:禁止写入文件。
  • httpd_can_network_connect 0:防止 PHP 脚本发起外部连接(如 WebShell 下载木马)。

方案 3:使用 ACL 细粒度控制权限

如果网站有多个用户维护,可以使用 ACL(Access Control List,访问控制列表)进行更精细的权限管理。

3.1 确保 ACL 已安装

yum install -y acl

3.2 设置目录为只读

setfacl -R -m u:apache:rX /var/www/html
setfacl -R -m d:u:apache:rX /var/www/html
  • 只允许 Apache 读取文件,阻止写入。

3.3 限制 PHP-FPM 访问

setfacl -R -m u:nginx:rX /var/www/html

如果使用 Nginx + PHP-FPM,确保 PHP-FPM 用户无法修改文件。


方案 4:禁止网站目录的 chmodchown 操作

可以使用 Linux 进程监控 限制对 /var/www/htmlchmodchown 操作:

echo "chmod -R /var/www/html" >> /etc/rc.local
chmod 755 /etc/rc.local

这样,每次重启后,权限都会恢复。


推荐方案

  • 基础防护:使用 chattr +i 锁定目录,防止恶意篡改。
  • 进阶防护:开启 SELinux 并配置 httpd_sys_content_t,防止 WebShell 修改文件。
  • 精细控制:使用 ACL 设置不同用户的权限,防止开发人员误操作。

你可以根据实际需求选择合适的方案。如果你的服务器需要支持定期更新,可以配合 cron 定期解锁、更新后再重新加锁。

本文来自投稿,不代表本站立场,如若转载,请注明出处:
-- 展开阅读全文 --
windows安装ffmpeg方法(支持gpu加速版)
« 上一篇 03-01

热门文章

标签TAG