A eliminação apenas dos pacotes SYN melhora ou diminui o desempenho do firewall?

1

Estou configurando ipfw, e o seguinte foi sugerido para mim: Se eu fizer a regra apenas para descartar pacotes SYN para TCP, nenhuma conexão poderá ser estabelecida e o firewall não precisará nem olhar para outros pacotes. / p>

Parece contra-intuitivo para mim. Eu acho que o firewall funcionará melhor se eu bloquear toda a comunicação na porta especificada (menos inspeção de pacote envolvida), e como nenhuma conexão pode ser estabelecida de qualquer forma, o número de pacotes recebidos será o mesmo.

Existe realmente diferença?

Editar: problema concreto, bloqueando o SSH de algum host:

ipfw add deny tcp from somehost to any port 22 via em0 tcpflags syn

vs.

ipfw add deny tcp from somehost to any port 22 via em0
    
por Barnaba 16.05.2012 / 17:52

3 respostas

1

Existe um propósito em descartar somente pacotes syn, mas não é (principalmente) o desempenho; é uma maneira fácil de criar uma regra de negação padrão que será aplicada a conexões de entrada, mas não retorna pacotes para uma conexão de saída. Uma regra como esta:

deny tcp from any to any in setup

(note que "setup" é uma abreviação de "tcpflags syn,! ack") irá bloquear todas as conexões TCP de entrada (que não foram permitidas por uma regra de prioridade mais alta).

Pode haver um argumento de desempenho para isso, porque a alternativa - usando regras de estado de manutenção para permitir pacotes de retorno em conexões de saída - envolve regras dinâmicas (e criando, gerenciando e verificando todos os pacotes contra elas), presumivelmente, ter algum impacto no desempenho.

Lembre-se, isso não é relevante no caso de uma regra bloquear uma porta específica de baixa numeração (por exemplo, 22 no seu exemplo), porque você pode ter certeza de que nenhuma porta abaixo de 1024 será alocada para uma conexão de saída. / p>     
por 17.05.2012 / 01:08
4

Bloquear todo o tráfego globalmente para a porta especificada parece ser mais eficaz do que bloquear determinados tipos de tráfego, como você disse, menos a inspeção de pacotes. Isso realmente depende da sua intenção. Se você quiser que o serviço esteja aberto e disponível, mas não queira que alguém faça a varredura de SYN nessa porta, existem outros métodos para detectar esse tipo de atividade. Se você não quiser que o serviço esteja disponível todos juntos, feche a porta.

Eu acho engraçado, "Se eu fizer a regra apenas para descartar pacotes SYN para o TCP, nenhuma conexão pode ser estabelecida e o firewall não precisará nem olhar para outros pacotes."

Bem ... se você não quiser que o firewall veja qualquer pacote, negue tudo! Se você quiser ter um log (por algum motivo) de pacotes SYN para a porta especificada, então você pode fazer isso, mas honestamente eu vejo o benefício.

Quem sugeriu o bloqueio de pacotes SYN e o aumento de desempenho precisa estudar em seu Net +

    
por 16.05.2012 / 18:29
2

É minha teoria não testada que descartar todos os pacotes para uma porta é mais rápido do que descartar apenas os pacotes syn . Aqui está o porquê:

  • Pacotes inesperados normalmente podem gerar uma mensagem de redefinição de TCP ou de porta ICMP inacessível. Apenas escrever uma regra para pacotes SYN fará com que outros pacotes sejam acionados no SO.
  • A regra ainda precisa ser correspondida. Ambas as regras estão verificando a porta 22, mas outra verificação deve ser feita se existe um SYN ou não na segunda regra.

Para ser eficaz, o firewall precisa examinar todos os pacotes de qualquer maneira. Como um firewall stateful, ele também pode queimar algum tempo procurando combinar pacotes não-SYN com fluxos permitidos existentes de outros conjuntos de regras também.

Se você for desconectar uma conexão TCP com uma porta, elimine todos os pacotes TCP para a porta.

    
por 16.05.2012 / 18:23