iptables阻止来自php的传出请求

时间:2015-12-10 09:07:03

标签: php ubuntu iptables

我们有一个托管php服务器和游戏服务器的Ubuntu服务器。 最近,我们得到了很多dos和洪水攻击。所以我发现iptables的一些规则可以保护http和游戏端口免受攻击。

这是我的规则:

iptables -F
iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m state --state NEW -m limit --limit 5/sec -m connlimit --connlimit-upto 15 --connlimit-mask 32 --connlimit-saddr -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state RELATED,ESTABLISHED -m connlimit --connlimit-upto 15 --connlimit-mask 32 --connlimit-saddr -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state RELATED,ESTABLISHED -m connlimit --connlimit-upto 15 --connlimit-mask 32 --connlimit-saddr -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 443 -m state --state RELATED,ESTABLISHED -m connlimit --connlimit-upto 15 --connlimit-mask 32 --connlimit-saddr -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3724 -m state --state RELATED,ESTABLISHED -m connlimit --connlimit-upto 15 --connlimit-mask 32 --connlimit-saddr -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 25 -m state --state RELATED,ESTABLISHED -m connlimit --connlimit-upto 15 --connlimit-mask 32 --connlimit-saddr -j ACCEPT

但是,当php想要将Soap WebService等请求打开到另一台服务器时,会出现问题。和iptables阻止此连接。

我认为这个问题就在这一行:

iptables -P INPUT DROP

但是没有这一行,所有其他端口的请求都是允许的。

这是php Soap错误:

object(SoapClient)#48 (2) { ["_soap_version"]=> int(1) ["sdl"]=> resource(97) of type (Unknown) }

感谢你的评论。感谢。

1 个答案:

答案 0 :(得分:0)

问题是传出连接使用随机本地端口来侦听回复。因此,例如,如果您在端口53上请求DNS条目,则您的计算机将在端口42316上侦听数据。如果后一个端口被阻塞,就像上面的设置一样,连接将失败。

通常允许状态为ESTABLISHED和RELATED连接的数据包,这很容易解决。

iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

此外,更改其他规则以使用状态NEW,因为这很可能是您想要限制的。否则它只会削弱服务器的连接性。