我们有一个Ubuntu服务器,托管一个php服务器和游戏服务器。最近,我们遇到了很多的问题和洪水袭击。所以我发现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) }我很感谢你的评论。谢谢。
发布于 2015-12-10 10:59:34
问题是,传出连接使用随机本地端口侦听答复。因此,例如,如果您在端口53上请求DNS条目,您的计算机将在端口42316上侦听数据。如果后一个端口被阻塞,如上述设置所示,则连接将失败。
这很容易解决,通常允许建立状态包和相关连接。
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT另外,将其他规则更改为使用state,因为这很可能是您想要限制的内容。否则,它只会削弱服务器的连接性。
https://stackoverflow.com/questions/34197623
复制相似问题