Iptables protege contra SYN FLOOD?
Uma das técnicas de negação de serviço mais conhecidas é a técnica de Syn Flood. Mas se encontra em diversos lugares "receitas" e regrinhas iptables para se defender dela. Funciona? É eficaz? Se não é, qual é realmente a defesa necessária?
Parte 6: Limitar o número de requisições no iptables funciona?
Esta "solução", do qual sou crítico, é fartamente encontrada na Internet em scripts receitas de bolo, por vezes até com comentários:
Foi a motivação que encontrei para escrever este artigo. A idéia é nobre: como eu limitei as entradas de SYN a uma taxa de apenas 10 por segundo, logo é impossível qualquer um de meus servidores TCP sofrer um SYN flood.
Ok, está certo, realmente o é! Meus servidores não sofrerão o SYN flood.
Mas um atacante não quer realmente realizar um SYN Flood, certo? O que ele quer é causar uma negação de serviço, ou seja, torná-lo indisponível? Estou certo?
Bom, agora a tarefa do atacante ficou ainda mais fácil: basta ele manter uma taxa de requisições do tipo SYN a, no mínimo, 10 por segundo. O que vai acontecer com o décimo primeiro SYN que chegar no mesmo segundo? Será DROPADO? Ótimo, o décimo primeiro, décimo segundo, etc, pode ser um cliente legítimo! Percebam, não é uma solução, é um engodo! Agora o próprio iptables é quem tira meu serviço do ar!
E não adianta querer usar outras variações do limit, como o hashlimit, limitando por IP de origem, pois como mencionei, o atacante pode mudar o número de IP a cada nova tentativa.
Podemos até comentar que alguma vantagem esta regra teria: o servidor ficaria disponível na rede Interna, mas de qualquer maneira, realmente não é nada agradável usar tal regra.
# Protege contra os ataques do tipo Syn-flood
iptables -A FORWARD -p tcp --syn -m limit --limit 10/s -j ACCEPT
iptables -A FORWARD -p tcp --syn -j DROP
iptables -A FORWARD -p tcp --syn -m limit --limit 10/s -j ACCEPT
iptables -A FORWARD -p tcp --syn -j DROP
Foi a motivação que encontrei para escrever este artigo. A idéia é nobre: como eu limitei as entradas de SYN a uma taxa de apenas 10 por segundo, logo é impossível qualquer um de meus servidores TCP sofrer um SYN flood.
Ok, está certo, realmente o é! Meus servidores não sofrerão o SYN flood.
Mas um atacante não quer realmente realizar um SYN Flood, certo? O que ele quer é causar uma negação de serviço, ou seja, torná-lo indisponível? Estou certo?
Bom, agora a tarefa do atacante ficou ainda mais fácil: basta ele manter uma taxa de requisições do tipo SYN a, no mínimo, 10 por segundo. O que vai acontecer com o décimo primeiro SYN que chegar no mesmo segundo? Será DROPADO? Ótimo, o décimo primeiro, décimo segundo, etc, pode ser um cliente legítimo! Percebam, não é uma solução, é um engodo! Agora o próprio iptables é quem tira meu serviço do ar!
E não adianta querer usar outras variações do limit, como o hashlimit, limitando por IP de origem, pois como mencionei, o atacante pode mudar o número de IP a cada nova tentativa.
Podemos até comentar que alguma vantagem esta regra teria: o servidor ficaria disponível na rede Interna, mas de qualquer maneira, realmente não é nada agradável usar tal regra.