首页 > Web开发 > 详细

在开启selinux时_增加规则_允许httpd_php-fpm执行iptables命令

时间:2020-01-04 21:00:44      阅读:173      评论:0      收藏:0      [点我收藏+]

在开启selinux时_增加规则_允许httpd_php-fpm执行iptables命令

转载注明来源: 本文链接 来自osnosn的博客,写于 2020-01-04.

起因

  • 写了个php的页面,经过一番验证之后,要调用iptables 添加或修改一条记录。
  • 我的环境是centos7,nginx+php7-fpm,开启了selinux。
  • nginx 和 php-fpm 都是以apache用户身份运行。且运行在 httpd_t 标签下。
  • 因为 iptables的命令比较固定。所以写了个简单的 C 程序,在 C 程序内用execl()执行iptables语句(为了安全,所有参数写死在程序中)。
    然后把这个 C 程序编译为执行文件myrule,设置myrule文件的ower为root,设置myrule可执行,并设SUID chmod u+s myrule
  • 在php程序中用 exec()调用这个myrule程序。

临时关闭selinux

  • setenforce 0
  • 测试,一切OK,php成功调用myrule程序,用 iptables -vnL 见到了加入的记录。

恢复selinux

  • setenforce 1
  • php执行失败,没看到有新记录加入到iptables表中。
  • /var/log/message 中出现 audit 错误。
  • 上网搜索,比较容易解决。通过 tail /var/log/message | audit2allow -M myrule-se 生成需要的规则。
    然后 semodule -i myrule-se.pp 导入这个规则即可。
  • 设置 chcon -t bin_t myrule 可以让message中少点错误,audit2allow就能少生成点规则。
  • 根据 tail /var/log/message | audit2why 提示,设置 setsebool -P httpd_execmem on
  • 生成规则,导入规则 的过程可能要搞好几次。
    semodule -i myrule-se.pp后,又会发现有新的错误。
    只好 semodule -r myrule-se 卸载这个规则。 然后重新从message中(新旧信息一起)生成一个更完整的规则。再导入试试。
  • 折腾的几次,终于把se的规则搞完整了。并且导入了这个规则。

发现新问题

  • /var/log/message 不再有错误信息,php-fpm的log中也无错误信息。
  • 从php程序中看,myrule程序调用成功,返回码也正常。
  • iptables -vnL 中,就是看不到新增的记录

解决问题

  • 上网搜索了好几个小时,包括度娘,bing,甚至去google搜英文。也没找到什么有用的。但多多少少总有一点点提示。
  • 解决过程不写了,试了好多办法。
  • 下面贴出最终结果,给大家参考。
    创建文件 myrule-se2.te
module myrule-se2 1.0;

require {
        type httpd_t;
        type iptables_exec_t;
        type iptables_t;
        class process transition;
        class process iptables_t;
}

#============= httpd_t ==============
allow httpd_t iptables_t: process transition;
type_transition httpd_t iptables_exec_t : process iptables_t;

执行以下命令:
checkmodule -m -M -o myrule-se2.mod myrule-se2.te
semodule_package -o myrule-se2.pp -m myrule-se2.mod
semodule -i myrule-se2.pp
再测试,成功。
---end---


转载注明来源: 本文链接 来自osnosn的博客.

在开启selinux时_增加规则_允许httpd_php-fpm执行iptables命令

原文:https://www.cnblogs.com/osnosn/p/12150119.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!