TCPDump e IPTables DROP por string

1

usando tcpdump -nlASX -s 0 -vvv port 80 eu recebo algo como:

14:58:55.121160 IP (tos 0x0, ttl 64, id 49764, offset 0, flags [DF], proto TCP (6), length 1480)
    206.72.206.58.http > 2.187.196.7.4624: Flags [.], cksum 0x6900 (incorrect -> 0xcd18), seq 1672149449:1672150889, ack 4202197968, win 15340, length 1440
        0x0000:  4500 05c8 c264 4000 4006 0f86 ce48 ce3a  E....d@[email protected].:
        0x0010:  02bb c407 0050 1210 63aa f9c9 fa78 73d0  .....P..c....xs.
        0x0020:  5010 3bec 6900 0000 0f29 95cc fac4 2854  P.;.i....)....(T
        0x0030:  c0e7 3384 e89a 74fa 8d8c a069 f93f fc40  ..3...t....i.?.@
        0x0040:  1561 af61 1cf3 0d9c 3460 aa23 0b54 aac0  .a.a....4'.#.T..
        0x0050:  5090 ced1 b7bf 8857 c476 e1c0 8814 81ed  P......W.v......
        0x0060:  9e85 87e8 d693 b637 bd3a 56ef c5fa 77e8  .......7.:V...w.
        0x0070:  3035 743a 283e 89c7 ced8 c7c1 cff9 6ca3  05t:(>........l.
        0x0080:  5f3f 0162 ebf1 419e c410 7180 7cd0 29e1  _?.b..A...q.|.).
        0x0090:  fec9 c708 0f01 9b2f a96b 20fe b95a 31cf  ......./.k...Z1.
        0x00a0:  8166 3612 bac9 4e8d 7087 4974 0063 1270  .f6...N.p.It.c.p

O que eu uso para usar o IPTables para bloquear via string? Ou existe uma maneira melhor de bloquear ataques que tenham algo em comum?

A pergunta é: Posso pegar qualquer peça desse pacote IP e chamar de string?

iptables -A INPUT -m string --alog bm --string attack_string -j DROP

Em outras palavras: Em alguns casos eu posso banir com TTL = xxx e usar isso se um ataque tiver o mesmo TTL. Claro que irá bloquear alguns pacotes legítimos, mas se isso significar manter a caixa ativa, até que o ataque desapareça, mas eu gostaria de APRENDER como ENCONTRAR outras coisas comuns em um pacote para bloquear com o IPTables

    
por Tiffany Walker 28.04.2013 / 21:15

2 respostas

2

iptables -A INPUT -m string --alog bm --string attack_string -j DROP


Há alguns problemas com essa ideia.

Primeiro, você deve ver a documentação relevante:

Please do use this match with caution. A lot of people want to use this match to stop worms, along with the DROP target. This is a major mistake. It would be defeated by any IDS evasion method.

In a similar fashion, a lot of people have been using this match as a mean to stop particular functions in HTTP like POST or GET by dropping any HTTP packet containing the string POST. Please understand that this job is better done by a filtering proxy. Additionally, any HTML content with the word POST would get dropped with the former method. This match has been designed to be able to queue to userland interesting packets for better analysis, that's all. Dropping packet based on this would be defeated by any IDS evasion method.


O objetivo da diretiva -string é colocar pacotes em uma fila ou cadeia separada para processamento por um sistema IDS. Ele não foi projetado para interpretar as informações da camada 7 de forma holística / comportamental ou usando a correspondência de assinatura e, em seguida, descartando-a depois que ela for determinada como "ruim". Então, em segundo lugar, a diretiva -string não é sofisticada o suficiente para o seu caso de uso e você provavelmente acabará descartando pacotes que deseja manter.

Você também notará que não há string no pacote que você pode alimentar para -string . O pacote mostrado pelo TCPDump é ilegível uma vez traduzido para (presumivelmente) ASCI. O argumento -string é realmente projetado para procurar por coisas como comandos HTTP Post onde você tem strings no pacote. Se você quisesse seguir com sua idéia de usar o iptables como um sistema de IDS correspondente a uma assinatura, você provavelmente desejaria usar o U3 Capacidade de correspondência para procurar padrões de bits específicos.

Terceiro, e mais importante, no momento em que os pacotes envolvidos em uma Negação de Serviço chegam à sua máquina e estão sendo processados pelo seu firewall, o dano já está feito. Qualquer atenuação significativa de um ataque de negação de serviço envolverá trabalhar com seu provedor de upstream para bloquear o tráfego antes atingir seu servidor.

    
por 29.04.2013 / 18:27
-2

Seu último comentário parece indicar que você está procurando uma maneira de mediar as inundações de sin. Os cookies Syn são projetados para fazer exatamente isso. Você pode ativar syncookies com o seguinte comando executado como root.

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

Existem outras configurações que você pode ajustar para alterar o comportamento dos cookies syn. Veja a documentação no link .

    
por 29.04.2013 / 19:19