1 votes

TCPDump et IPTables DROP par chaîne de caractères

En utilisant tcpdump -nlASX -s 0 -vvv port 80 Je reçois quelque chose comme :

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@.@....H.:
        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

Que dois-je tirer pour utiliser IPTables afin de bloquer via une chaîne de caractères. Ou existe-t-il un meilleur moyen de bloquer les attaques qui ont quelque chose en commun ?

La question est : Puis-je prendre n'importe quel morceau de ce paquet IP et l'appeler une chaîne ?

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

En d'autres termes : Dans certains cas, je peux interdire avec TTL=xxx et utiliser cela si une attaque a le même TTL. Bien sûr, cela va bloquer certains paquets légitimes, mais si cela signifie garder la boîte en place, cela fonctionne jusqu'à ce que l'attaque disparaisse, mais je voudrais APPRENDRE à TROUVER d'autres éléments communs dans un paquet à bloquer avec IPTables.

2voto

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

Il y a quelques problèmes avec cette idée.

Tout d'abord, vous devriez voir les documentation :

Veuillez utiliser cette correspondance avec prudence. Beaucoup de personnes veulent utiliser cette correspondance pour arrêter les vers, avec la cible DROP. Il s'agit d'une erreur majeure. N'importe quelle méthode d'évasion d'IDS pourrait la mettre en échec.

De la même manière, beaucoup de gens ont utilisé cette correspondance comme un pour arrêter des fonctions particulières de HTTP comme POST ou GET en abandonnant tout paquet HTTP contenant la chaîne POST. Veuillez comprendre que ce travail est mieux fait par un proxy de filtrage. De plus, tout contenu HTML contenant le mot POST serait abandonné avec la première méthode. Cette correspondance a été conçue pour pouvoir mettre en file d'attente vers userland les paquets intéressants pour une meilleure analyse, c'est tout. Abandonner un paquet basé sur cela serait vaincu par n'importe quelle méthode d'évasion IDS.

Qu'est-ce que le -string sert en fait à placer les paquets dans une file d'attente ou une chaîne séparée pour qu'ils soient traités par un système IDS. Il n'est pas conçu pour interpréter les informations de la couche 7, que ce soit de manière holistique ou comportementale, ou en utilisant la correspondance des signatures, puis en abandonnant le paquet une fois qu'il est considéré comme "mauvais". Ainsi, deuxièmement, le -string n'est pas assez sophistiquée pour votre cas d'utilisation et vous finirez probablement par abandonner des paquets que vous souhaitez conserver.

Vous remarquerez également qu'il n'y a pas de chaîne dans le paquet que vous pouvez envoyer à -string . Le paquet tel que montré par TCPDump est illisible une fois traduit en ASCI (probablement). Le site -string est vraiment conçu pour rechercher des éléments tels que les commandes HTTP Post, où le paquet contient des chaînes de caractères. Si vous voulez aller jusqu'au bout de votre idée d'utiliser iptables comme un système IDS à correspondance de signature, vous voudrez probablement utiliser l'argument U3 Capacité d'appariement pour rechercher des modèles de bits particuliers.

Troisièmement, et c'est le plus important, le temps que les paquets impliqués dans un déni de service atteignent votre machine et soient traités par votre pare-feu, le mal est déjà fait. Toute atténuation significative d'une attaque par déni de service implique de travailler avec votre fournisseur d'accès en amont pour bloquer le trafic. avant il atteint votre serveur.

-1voto

ScottB Points 1

Votre dernier commentaire semble indiquer que vous cherchez un moyen d'arbitrer les inondations syn. Les cookies syn sont conçus pour faire exactement cela. Vous pouvez activer les syncookies avec la commande suivante exécutée en tant que root.

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

Il existe d'autres paramètres que vous pouvez modifier pour changer le comportement des cookies de synchronisation. Consultez la documentation à l'adresse http://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X