如何只允许PHP传出连接到特定的服务器?

在运行相当新的Apache和PHP 5.2的基于Red Hat的主机上,我们使用solr-php-client库连接到外部Solr服务器 。 这个库需要启用PHP指令allow_url_fopen 。 因此,我想禁用通过iptables传出的PHP连接,而不是连接到必要的服务器。

谷歌search适当的iptables规则导致许多错误的path。 什么规则将允许PHP通过CURL或fopen()连接到特定的服务器,但没有其他?

谢谢。

如何使用iptables的规则,不仅基于目的地址/端口,而且还基于源用户过滤?

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m owner --uid-owner uidForYourApacheUser -p tcp --dport 80 -d yourServerIp -j ACCEPT iptables -A OUTPUT -m owner --uid-owner uidForYourApacheUser -p tcp --dport 80 -j REJECT 

如果需要的话,你可以使用su-php来运行你的sorl脚本,而不是你的apache。

这不能工作。 您不能通过iptable禁用PHP连接。 iptables不知道哪个进程打开连接。

您可能想要做的是禁用除一个目标IP之外的所有传出连接。 但是你会打破任何合法的外向交通。

提示:一个安全的设置可能是安装一个过滤代理,并禁用除代理服务器之外的所有stream量,但这是很多工作。