firewall baseado em ipfw desacelera o servidor web Apache

2

Eu tenho um servidor web Apache rodando em uma máquina FreeBSD 8.3.
Essa máquina tem um firewall ipfw com estas regras:

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

Assim que habilito essas regras de firewall, o servidor Apache na mesma máquina fica "lento", ou seja, muitas conexões ficam suspensas, as páginas demoram segundos para serem carregadas em vez de ms. Isso pode ser testado em diferentes redes e clientes de origem. Em server-status eu posso ver muitos (a maioria) dos slots Apache no estado de leitura e não fazer nada.

Quando eu paro o firewall, o servidor Apache retorna imediatamente ao desempenho normal novamente.

Alguma idéia do que poderia estar errado com essas regras de firewall?

    
por Matthias 21.11.2013 / 23:18

2 respostas

1

você está permitindo tcp / 80 "novas" conexões? qual porta o apache está ouvindo e de onde as conexões devem ser aceitas?

essas regras não devem causar lentidão:

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

talvez essas portas estejam sobrecarregando os scripts / dameons / applicaitions que estão ouvindo essas portas e estão diminuindo a velocidade da caixa.

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

meu conselho: tenha uma máquina física / virtual por serviço ..... execute ntop para ver quanto tráfego você está realmente enviando

    
por 22.11.2013 / 05:02
1

Parece que o Apache tem uma dependência de outros serviços que o firewall está bloqueando. Sem saber quais aplicativos você está executando, é difícil fornecer informações mais exatas, mas você está bloqueando o acesso a tudo no host local, o que parece errado.

Comece comentando todas as linhas de negação e verifique se ela funciona na mesma velocidade. Então lentamente comece a adicionar novamente as linhas de negação, começando pelo final. Embora essas regras afirmem não estar sendo acionadas, isso nem sempre é tão confiável quanto poderia ser.

    
por 16.12.2013 / 01:20