toblerone

 tutoriel Sécurité - Quelques protections contre le DDOS

Recommended Posts

Niveau requis  Anvancé

Temps estimé :  20 minutes

Bonjour à tous,

 

Ce tutoriel a pour but de vous donner quelques astuces pour vous protéger un peu des attaques DDOS et d'alléger votre serveur.

 

Sachez qu'une attaque de type DOS ou DDOS visant à saturer la bande passante n'est pas vraiment dangereuse à partir du moment où l'attaque n'atteint pas votre limite de bande passante. Si vous avez un kimsufi à 100Mbits et que vous prenez un DOS/DDOS de 100Mbits, vous ne pourrez rien faire, même la plus grosse protection que je pourrai vous donner, n'y fera rien ! Je vais vous montrer les configurations que je préconise au niveau d'ipfw et du kernel.

 

Information. Ce tutoriel utilise IPFW mais vous pouvez facilement le retranscrire vers un autre type de firewall.

 

Pré-requis:

  • Nécessite d'ajouter / modifier votre firewall IPFW actuel

 

I. IPFW

Révélation

1. Dans le fichier rc.firewall, vous trouverez les règles suivantes :

${fwcmd} add 100 pass all from any to any via lo0
${fwcmd} add 200 deny all from any to 127.0.0.0/8
${fwcmd} add 300 deny ip from 127.0.0.0/8 to any

 

2. Juste avant, ajoutez :

${fwcmd} add 004 allow log tcp from any to me dst-port 80 limit src-addr 100
${fwcmd} add 005 allow log icmp from any to any out via re0 setup keep-state
${fwcmd} add 006 deny log icmp from any to $me any in via re0 setup keep-state

 

Vous remarquerez que sur la première règle,  j'ai mis une limite de 100 connexions simultanées, ça peut paraître énorme, mais au final, ça laisse beaucoup de marge pour les joueurs, et lors d'une attaque, 100 connexions ce n'est vraiment rien.

Cette règle vous protégera en partie des attaque SYN FLOOD, seulement sur le port 80.

 

La deuxième et troisième règles ont pour but de limiter le trafic icmp. J'en ai fait l'expérience pendant mes tests durant une attaque. Le pare feu faisait très bien son boulot, le problème c'est que le serveur répondait à chaque fois à l'attaquant. Le problème c'est que le kernel a une limite en icmp de 200 packets/s, et là c'est tout les processus qui foirent ! Avec ces règles le problème devrait être réglé. C'est une volonté de ma part de ne pas filtrer les autres ports, et ce pour garantir une disponibilité maximale. Rien ne vous empêche de rajouter le même type de règle sur un autre port si celui-ci ne tient pas la route. Sachez tout de même que le port 80 est le plus sensible et que votre site crash instantanément si vous n'avez pas ce genre de protection.

 

3. Pour les commandes ipfw, faites très attention, il ne faut pas le démarrer deux fois de suite! Si vous faites ça, vous crachez le dédié et vous n'aurez plus d'autre choix que de faire un reboot hardware ! Pour activer ipfw mettez ceci dans le rc.conf :

firewall_enable="YES"
firewall_type="open"

 

Succès ! Il vous manque plus qu'à redémarrer le dédié pour que les modifications soient prisent en compte.

 

 

II. Le kernel FreeBSD

Révélation

1. Le kernel de base de freebsd nécessite quelques modifications afin d'être optimal et de pouvoir absorber les attaques. Rendez-vous dans le fichier sysctl.conf et ajoutez-y ces lignes :

 

# Nombre maximum de sockets ouverts en même temps (Ca limitera une grosse partie de l'impact du syn flood)
kern.ipc.somaxconn=32768

# Utile pour les attaques de type SYN FLOOD
net.ipv4.tcp_syncookies = 1

# Augmente la limite de ports du système. Permet d'avoir le maximum de ports d'écoute de libre
net.ipv4.ip_local_port_range = 2000 65000

# Diminue le temps d'attente pour un ACK, les connexions se fermeront donc plus vite en cas de DOS / DDOS
net.inet.tcp.msl=7500

 

 

Pour continuer :

  • Vous trouverez de nombreux partages et de tutoriels sur Funky-Emu dans la section Metin2.
  • Cette FAQ pourra répondre à la plupart de vos questions.
  • Une catégorie support est disponible. Si vous avez un problème ou une question, n'hésitez pas à poster une demande !

 

  • Like 1

Share this post


Link to post
Share on other sites

Salut,

 

Merci pour le partage. Si tu as de l'argent c'est possible de passer par un service tiers qui va filtrer les connexion pour toi. Et du coup c'est possible de bloquer des plus grosses attaques que la bande passante de ton dédié. Sinon j'avais eu une idée de développer une sorte de proxy qui filtrerai les connexions et qui couperait le réseau avant que le débit soit trop puissant, bloque les IPs dans le firewall puis relance le réseau. Il faut que je fasse des tests, ça pourrait être intéressant à dév'

 

Bonne journée,

Sgt Fatality

Share this post


Link to post
Share on other sites

Pour être honnête la seule solution viable au dessus de ça, sans que ça coute une fortune c'est de mettre deux dédiés en frontal. Je m'explique, les paquets arrivent sur un dédié qui va servir de firewall. C'est lui qui va diriger les paquets en fonction de leur nature. En cas d'attaque, il va rediriger les paquets de l'attaque sur un dédié qui ne sert qu'à ça, et rediriger les paquets propres vers le dédié du jeu... Mais autant dire que y'en a pour minimum 450€ par mois... Et au final on en a pas forcément besoin, à part si on prend un SYN FLOOD de la mort qui tue mais bon, ça serait étonnant

Share this post


Link to post
Share on other sites

C'est super toblerone, merci beaucoup pour le partage et le tutoriel !

Comme le dit Viko, je testerais ça quand j'en aurais l'occasion !

Share this post


Link to post
Share on other sites