![可疑的 SELinux 审计日志条目 PHP-FPM 写入被拒绝 - 如何调查?](https://linux22.com/image/665026/%E5%8F%AF%E7%96%91%E7%9A%84%20SELinux%20%E5%AE%A1%E8%AE%A1%E6%97%A5%E5%BF%97%E6%9D%A1%E7%9B%AE%20PHP-FPM%20%E5%86%99%E5%85%A5%E8%A2%AB%E6%8B%92%E7%BB%9D%20-%20%E5%A6%82%E4%BD%95%E8%B0%83%E6%9F%A5%EF%BC%9F.png)
我发现一些 /var/log/audit/audit.log 条目让我有点担心。SEAlert 对此的解释如下:
SELinux is preventing /usr/sbin/php-fpm from write access on the directory wwwuserhome.
Raw Audit Messages
type=AVC msg=audit(1439921831.7:6232): avc: denied { write } for pid=10665 comm="php-fpm" name="wwwuserhome" dev="xvda1" ino=25877059 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=dir
type=AVC msg=audit(1439921831.7:6232): avc: denied { add_name } for pid=10665 comm="php-fpm" name=".pki" scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=dir
type=AVC msg=audit(1439921831.7:6232): avc: denied { create } for pid=10665 comm="php-fpm" name=".pki" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_home_dir_t:s0 tclass=dir
type=SYSCALL msg=audit(1439921831.7:6232): arch=x86_64 syscall=mkdir success=yes exit=0 a0=7f512952d040 a1=1f0 a2=ffffffffffffff60 a3=7fffc7beff00 items=0 ppid=12783 pid=10665 auid=4294967295 uid=1001 gid=1001 euid=1001 suid=1001 fsuid=1001 egid=1001 sgid=1001 fsgid=1001 tty=(none) ses=4294967295 comm=php-fpm exe=/usr/sbin/php-fpm subj=system_u:system_r:httpd_t:s0 key=(null)
Hash: php-fpm,httpd_t,user_home_dir_t,dir,write
并且:
SELinux is preventing /usr/sbin/php-fpm from write access on the directory .pki.
Raw Audit Messages
type=AVC msg=audit(1439921831.7:6233): avc: denied { write } for pid=10665 comm="php-fpm" name=".pki" dev="xvda1" ino=25167629 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_home_dir_t:s0 tclass=dir
type=AVC msg=audit(1439921831.7:6233): avc: denied { add_name } for pid=10665 comm="php-fpm" name="nssdb" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_home_dir_t:s0 tclass=dir
type=SYSCALL msg=audit(1439921831.7:6233): arch=x86_64 syscall=mkdir success=yes exit=0 a0=7f512952d040 a1=1f0 a2=ffffffffffffff60 a3=7fffc7beff00 items=0 ppid=12783 pid=10665 auid=4294967295 uid=1001 gid=1001 euid=1001 suid=1001 fsuid=1001 egid=1001 sgid=1001 fsgid=1001 tty=(none) ses=4294967295 comm=php-fpm exe=/usr/sbin/php-fpm subj=system_u:system_r:httpd_t:s0 key=(null)
Hash: php-fpm,httpd_t,user_home_dir_t,dir,write
我的看法是:
- 很高兴 SELinux 阻止了这一点,它正在发挥作用!
- 某些 PHP 脚本正在尝试写入 Web 用户的主文件夹。我不知道实际的脚本或插件应该执行此操作。当然与 PKI 或 NSSDB 无关。此服务器上没有 SSL/TLS 证书。
- 假设我有充分的信心(因为它都是今年构建的,保持最新,安全性相当高),这不是我为此目的安装的脚本,我只能假设某个脚本被利用来试图操纵我的系统。我当然不会自己使用 PHP 来创建目录。但是,Nginx 和 PHP-FPM 日志搜索这些审计日志时间戳周围的事件并没有发现任何奇怪的东西。
- 在文档根目录及更深层次上对 .pki 或 wwwuserhome 进行 grep 不会产生任何尝试这样做的硬编码 PHP,因此它可以通过 URL 参数输入,或者通过编码对我隐藏。
所以问题是,我能做些什么来更密切地监控这一切,并最终找到被操纵的文件甚至功能。当然,还有肇事者的 IP。
有没有办法告诉 PHP 在执行某些函数时更详细地记录?特别是系统调用和文件处理程序操作。
还有其他建议吗?