基于 ipfw 的防火墙减慢了 Apache Web 服务器的速度

基于 ipfw 的防火墙减慢了 Apache Web 服务器的速度

我有一个在 FreeBSD 8.3 机器上运行的 Apache Web 服务器。
该机器有一个防火墙防火墙具有以下规则:

root@aigamedev:~# ipfw -a list
00005    0       0 deny ip from 67.212.xxx.xxx to any
00010  206   88422 allow ip from any to any via lo0
00015    0       0 deny ip from any to 127.0.0.0/8
00020    0       0 deny ip from 127.0.0.0/8 to any
00050    0       0 check-state
00060 5315 1358507 allow tcp from any to any established
00061    8     658 allow ip from any to any out keep-state
00070    0       0 allow icmp from any to any
00080    0       0 deny ip from me to me in recv re0
00085    0       0 deny tcp from any to any frag
00098    0       0 allow tcp from me to 83.64.xxx.xxx out established keep-state
00099    0       0 allow tcp from 83.64.xxx.xxx to me dst-port 22 in setup keep-state
00100    0       0 allow tcp from any to any dst-port 22 in setup keep-state
00110    0       0 allow tcp from any to any dst-port 22 out setup keep-state
00160    0       0 allow tcp from any to any dst-port 25 out setup keep-state
00180    0       0 allow tcp from any to any dst-port 53 out setup keep-state
00185    0       0 allow udp from any to any dst-port 53 out keep-state
00200 6750  661150 allow tcp from any to any dst-port 80,443 in setup keep-state
00210    0       0 allow tcp from any to any dst-port 80,443 out setup keep-state
00250    0       0 allow udp from any to any dst-port 123 out keep-state
00280    0       0 allow udp from any to any dst-port 67-68 out keep-state
00300    0       0 allow tcp from any to any dst-port 5222,5223,5269 in setup keep-state
00305    0       0 allow tcp from any to any dst-port 5222,5223,5269 out setup keep-state
00999   25    1716 deny ip from any to any
65535    0       0 deny ip from any to any

一旦我启用这些防火墙规则,同一台机器上的 Apache 服务器就会“变慢”,即许多连接挂起,页面需要几秒钟才能加载,而不是几毫秒。这可以从不同的源网络和客户端进行测试。server-status我可以看到许多(大多数)Apache 插槽处于读取状态并且什么也不做。

当我停止防火墙时,Apache 服务器立即恢复正常性能。

您知道这些防火墙规则可能存在什么问题吗?

答案1

您是否允许 tcp/80“新”连接?apache 正在监听哪个端口,应该从哪里接受连接?

这些规则不应该导致任何减速:

00200 allow tcp from any to any dst-port 80,443 in setup keep-state
00210 allow tcp from any to any dst-port 80,443 out setup keep-stat

也许这些端口会给监听这些端口的脚本/守护进程/应用程序带来负担,从而减慢机器的速度。

00300 allow tcp from any to any dst-port 5222,5223,5269 in setup keep-state
00305 allow tcp from any to any dst-port 5222,5223,5269 out setup keep-state

我的建议:每个服务配备一台物理机/虚拟机.....运行 ntop 来查看你实际推送的流量

答案2

听起来 Apache 依赖其他服务,而防火墙阻止了这些服务。如果不知道您正在运行哪些应用程序,很难提供更准确的信息,但您阻止了对本地主机上所有内容的访问,这似乎是错误的。

首先注释掉所有拒绝行,并确保其以相同的速度运行。然后慢慢地从末尾开始重新添加拒绝行。尽管这些规则声称不会被触发,但这并不总是那么可靠。

相关内容