我有一个Debian挤压VPS配置为一个nginx web服务器。出于安全原因,我阻止了除Debian更新服务器之外的所有传出连接(这将阻止坏脚本调用home)。PHP也在单独的用户下运行。我的问题是:
各种CMS-s和PHP/Perl/Python应用程序需要访问其他服务器上的web服务(即进行传出HTTP连接)。我已经在相同的VPS上安装了squid,并且希望通过白名单允许的域来使用它作为透明的过滤器/代理。
我知道如何通过代理强制所有输出端口80连接,但这会导致代理自己的请求被重定向到自己(即无限循环)。我也不能为iptables使用ipt_owner模块,因为VPS公司明确地告诉我,他们不会安装它。
是否有另一种聪明的方法可以在同一台机器上强制所有其他HTTP传出请求通过squid代理,同时允许代理自己的请求退出?
如果有帮助的话,我还安装了csf。
谢谢!
发布于 2013-05-06 06:26:14
好吧,回答我自己的问题:
Squid允许您在其传出数据包上设置TOS。设置为tcp_outgoing_tos。因此,使用允许的IP或域创建acl并设置(例如,tcp_outgoing_tos 0x10 whitelist )。
来自其他应用程序的数据包通常具有TOS 0x0。
现在按照squid自己的教程http://wiki.squid-cache.org/ConfigExamples/Intercept/LinuxLocalhost#iptables_配置中的步骤进行操作,但是我们不匹配包的所有者,而是匹配TOS。
# handle connections on the same box (SQUIDIP is a loopback instance)
iptables -t nat -A OUTPUT -p tcp --dport 80 -m tos --tos 0x10 -j ACCEPT
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination SQUIDIP:3127在使用csf时,我们可能还需要在过滤器表的输出链上接受这些数据包。把规则放在链子的开头。
iptables -I OUTPUT -p tcp --dport 80 -m tos --tos 0x10 -j ACCEPThttps://serverfault.com/questions/501825
复制相似问题