Se eu usar iptables para permitir conexões TCP somente de um IP específico, ele pode ser falsificado?

3

Uma regra iptables no meu servidor de banco de dados é:

-A INPUT -p tcp --dport 6432 -s 10.115.0.150 -j ACCEPT

Eu tenho outras regras (loopback, etc.), mas estou pensando se essa regra específica pode ser "hackeada". Alguém pode simplesmente "falsificar" o endereço IP (mesmo que seja um endereço de rede privada - também, seria diferente se fosse um endereço público)? Algo diferente?

    
por orokusaki 02.06.2013 / 18:58

2 respostas

6

A resposta de Iain é geralmente correta, mas precisa de um pouco de expansão para explicar por que o ataque seria difícil de executar.

O TCP usa uma combinação de sinalizadores baseados em bits e contadores de 32 bits, chamados de números de seqüência e confirmação, para acionar a máquina de estado que rastreia o progresso de uma conexão TCP durante sua vida útil. Entender como esses dois contadores de 32 bits atuam no handshake de três vias que precede a transferência de dados de carga útil em cada conexão TCP tornará a impraticabilidade de ataques que usam endereços IP de origem falsificados.

Quando um cliente inicia uma conexão TCP com um servidor remoto, ele envia um segmento TCP com o conjunto de bits SYN e um número de seqüência inicial escolhido aleatoriamente. O servidor remoto responde com um segmento TCP com o conjunto de bits SYN e ACK, um número de sequência inicial escolhido aleatoriamente e um número de confirmação igual ao número de sequência inicial do cliente mais 1. Por fim, o cliente responde com um segmento TCP com Conjunto de bits ACK, um número de sequência igual ao número de sequência inicial enviado mais 1 e um número de confirmação igual ao número de sequência inicial do servidor remoto mais 1.

Quando um invasor está forjando datagramas IP do endereço IP de origem de outro host, normalmente o invasor não recebe as respostas para nenhum pacote que possa enviar. Nesse cenário, o invasor tem, efetivamente, um canal de comunicação unidirecional para o servidor remoto. Observando o fluxo de pacotes no handshake TCP, seria necessário que o invasor preveja o número de sequência inicial que o servidor remoto vai gerar em sua resposta SYN / ACK para responder com o número de confirmação apropriado na resposta ACK. para completar o handshake de três vias. O invasor precisa adivinhar um número de 32 bits corretamente para que o ataque funcione.

Hoje, esse tipo de ataque é totalmente impraticável. No passado, no entanto, alguns ataques de alto perfil usavam esse mesmo método. Isso foi possível porque, no passado, alguns sistemas operacionais tinham números de seqüência inicial muito previsíveis. (Você pode encontrar o de Michal Zalewski paper Atrativos Estranhos e Análise do Número de Seqüência TCP / IP - Um Ano Depois uma leitura interessante, em termos de descrever a previsibilidade da sequência inicial números de vários sistemas operacionais.)

    
por 02.06.2013 / 19:35
4

Não em circunstâncias normais.

O protocolo TCP tem um handshake de 3 vias para configurar uma conexão

Host A sends a SYN packet to Host B
Host B sends a SYN ACK packet to host A
Host A sends an ACK packet to host B 

e a conexão é estabelecida

Agora, se introduzirmos um host C que falsifica o endereço do host A

Host C sends a spoofed SYN packet to Host B
Host B sends a SYN ACK packet to Host A 

O host A não está esperando um SYN ACK, então ele simplesmente o ignora.

    
por 02.06.2013 / 19:11