增加 Web 服务器的 NFS 客户端挂载点安全性 noexec、nosuid、nodev 选项
安装 -t nfs4 -o rw,intr,hard,proto = tcp rocknas02:/httproot/www /var/www/
我注意到由于我的应用程序中存在错误,用户有时可以上传可执行文件或其他设备文件以退出chrooted Apache 服务器。如何在基于 CentOS 或 RHEL 的 NFS 客户端和服务器设置上防止此类安全问题?
[不要打印]
教程详细信息 | |
---|---|
难度等级 | 中间的 |
Root 权限 | 是的 |
要求 | NFS 版本 4.x |
预计阅读时间 | 3 分钟 |
- noexec– 防止在已挂载的文件系统上执行二进制文件。这可防止远程用户在您的系统上执行不需要的二进制文件。
- nosuid– 禁用设置用户标识符或设置组标识符位。这可防止远程用户通过运行 setuid 程序获得更高的权限。
- nodev– 防止定义字符和块特殊设备,或如果存在,则防止将其用作字符和块特殊设备。这可以防止远程用户脱离 chrooted 服务器监狱。
修改您的挂载命令如下:
或者尝试重新挂载已挂载的 nfsv4.0 文件系统:
# mount -t nfs4 -o rw,intr,hard,proto=tcp,nodev,noexec,nosuid rocknas02:/httproot/www /var/www/
# mount -t nfs4 -o remount,rw,intr,hard,proto=tcp,nodev,noexec,nosuid rocknas02:/httproot/www /var/www/
测试一下
要验证新设置,请输入:
示例输出:
# mount
# mount | grep rocknas02
rocknas02:/httproot/www on /var/www type nfs4 (rw,noexec,nosuid,nodev,sync,intr,hard,proto=tcp,addr=192.168.1.10,clientaddr=192.168.1.100)
将 /bin/ls 复制到 rocknas02:/httproot/www,即在名为 rocknas02 的 nfsv4.0 服务器上键入以下内容
# cp /bin/ls /httproot/www
在客户端上,键入:
cd /var/www ## run /bin/ls ls -l # Run uploaded ls ./ls
示例输出:
图01:在nfs客户端上运行ls命令
以只读方式挂载文件系统
如果可能,请以只读模式挂载文件系统。修改挂载命令如下:
或者尝试重新挂载已挂载的 nfsv4.0 文件系统:
# mount -t nfs4 -o ro,intr,hard,proto=tcp,nodev,noexec,nosuid rocknas02:/httproot/www /var/www/
# mount -t nfs4 -o remount,ro,intr,hard,proto=tcp,nodev,noexec,nosuid rocknas02:/httproot/www /var/www/
推荐 Apache 的文件/目录权限
我建议采用以下模式:
以 Apache 用户和组身份运行 Apache
您必须首先以 root 身份运行 httpd,它将切换到 apache 用户和组:
# egrep -i '^(User|Group)' /etc/httpd/conf/httpd.conf
示例输出:
User apache Group apache
NFS 服务器文件/目录的 /var/www/ 权限
使用 useradd 命令创建一个名为 www-files 的用户:
# useradd -d /var/www -M -s /sbin/nologin www-files
确保使用 passwd 命令锁定 www-files 帐户:
# passwd -l www-files
对于 /var/www 目录,将文件所有者和组更改为 www-files,使用以下 passwd 命令:
# chown -R www-files:www-files /var/www/
最后根据模式更改每个给定文件和目录的文件模式位:
## By default all files & dirs permissions are set to read-only ### chmod -R 0444 /var/www ## Allow, apache/nginx/lighttpd to serve files from directory by settings others to x bit ### find /var/www -type d -print0 | xargs -0 -I {} chmod 0445 "{}" ## Optional certain directory may need additional permissions such as /var/www/uploads ### #chmod 0777 -R /var/www/uploads
使用 ls -l 命令验证文件权限:
示例输出:
# cd /var/www
# ls -l
total 32 -r--r--r--. 1 www-files www-files 606 Dec 21 2011 best_resources.php -r--r--r--. 1 www-files www-files 1068 Sep 4 2011 cdn_info_linux_unix_setup.php dr--r--r-x. 2 www-files www-files 4096 Aug 5 2012 data .... ... ... -r--r--r--. 1 www-files www-files 1550 Jun 22 2012 service-per-vm-guide.php
参见
- CentOS / Redhat:设置 NFS v4.0 文件服务器
- Debian / Ubuntu Linux:设置 NFSv4 文件服务器
- Mac Os X:挂载 NFS 共享/设置 NFS 客户端
- RHEL:如何启动和停止 NFS 服务?
- 当网络不可用时如何正确重启 Linux NFS 服务器
- Linux Iptables 允许 NFS 客户端访问 NFS 服务器
- Debian / Ubuntu Linux 禁用 / 删除所有 NFS 服务
- Linux:调整 NFS 性能
- 通过缓慢而繁忙的网络挂载 NFS 文件系统
- Linux 跟踪 NFS 目录/磁盘 I/O 统计信息
- Linux 禁用/删除所有 NFS 服务
- Linux:NFS4 挂载服务器给出的错误原因:没有此文件或目录
- Linux NFS 挂载:错误的 fs 类型、错误的选项、fs2:/data3 上的错误超级块错误和解决方案
- CentOS / RHEL CacheFS:加速网络文件系统 (NFS) 文件访问
- 提高 NFS 客户端挂载点的安全性