191 votes

Je suis sous DDoS. Que puis-je faire ?

Il s'agit d'un Question canonique sur l'atténuation des attaques DoS et DDoS.

J'ai constaté un pic de trafic massif sur un site web que j'héberge aujourd'hui ; je reçois des milliers de connexions par seconde et je vois que j'utilise les 100Mbps de ma bande passante disponible. Personne ne peut accéder à mon site parce que toutes les requêtes sont interrompues, et je ne peux même pas me connecter au serveur parce que SSH est également interrompu ! Cela s'est produit plusieurs fois auparavant, et à chaque fois, cela a duré quelques heures et a disparu tout seul.

De temps en temps, mon site web connaît un autre problème distinct mais connexe : la moyenne de charge de mon serveur (qui se situe généralement autour de 0,25) monte en flèche jusqu'à 20 ou plus et personne ne peut accéder à mon site, comme dans l'autre cas. Ce problème disparaît également au bout de quelques heures.

Le redémarrage de mon serveur n'aide pas ; que puis-je faire pour rendre mon site à nouveau accessible, et que se passe-t-il ?

Dans le même ordre d'idées, j'ai constaté une fois que, pendant un jour ou deux, chaque fois que je démarrais mon service, il obtenait une connexion à partir d'une adresse IP particulière, puis se plantait. Dès que je l'ai relancé, cela s'est reproduit et il s'est à nouveau arrêté. En quoi cela est-il similaire et que puis-je faire ?

0 votes

196voto

Falcon Momot Points 24815

Vous subissez une attaque par déni de service. Si le trafic provient de plusieurs réseaux (différentes adresses IP sur différents sous-réseaux), il s'agit d'un déni de service distribué (DDoS) ; s'il provient du même endroit, il s'agit d'un simple déni de service. Il peut être utile de vérifier, si vous le pouvez ; utilisez netstat pour vérifier. Cela peut être difficile à faire, cependant.

Le déni de service se divise généralement en deux catégories : le déni de trafic et le déni de charge. Le dernier élément (avec le service qui s'effondre) est un déni de service basé sur l'exploitation et est très différent.

Si vous essayez de déterminer le type d'attaque qui se produit, vous voudrez peut-être capturer du trafic (en utilisant wireshark, tcpdump ou libpcap). Vous devriez le faire, si possible, mais sachez également que vous capturerez probablement une grande quantité de trafic.

Le plus souvent, elles proviennent de réseaux de zombies (réseaux d'hôtes compromis placés sous le contrôle central d'un attaquant, dont ils exécutent les ordres). C'est un bon moyen pour l'attaquant d'acquérir (à très bon marché) la bande passante en amont de nombreux hôtes différents sur différents réseaux pour vous attaquer, tout en couvrant ses traces. Le site Canon à ions en orbite basse est un exemple de botnet (bien qu'il soit volontaire et non issu d'un logiciel malveillant) ; Zeus en est un plus typique.

Basé sur le trafic

Si vous êtes sous un DoS basé sur le trafic, vous trouvez que il y a juste tellement de trafic arrivant à votre serveur que sa connexion à Internet est complètement saturée. Le taux de perte de paquets est élevé lorsque vous envoyez une requête ping à votre serveur depuis un autre endroit et (selon les méthodes de routage utilisées), vous constatez parfois aussi une latence très élevée (le ping est élevé). Ce type d'attaque est généralement une attaque DDoS.

Bien qu'il s'agisse d'une attaque vraiment "bruyante" et que ce qui se passe soit évident, il est difficile pour un administrateur de serveur de l'atténuer (et pratiquement impossible pour un utilisateur d'hébergement partagé). Vous aurez besoin de l'aide de votre fournisseur d'accès Internet ; faites-lui savoir que vous subissez une attaque DDoS et il pourra peut-être vous aider.

Cependant, la plupart des FAI et des fournisseurs de transit se rendront compte de manière proactive de ce qui se passe et publieront une route du trou noir pour votre serveur. Cela signifie qu'ils publient une route vers votre serveur avec un coût aussi faible que possible, par le biais de 0.0.0.0 Ils font en sorte que le trafic vers votre serveur ne puisse plus être acheminé sur Internet. Ces routes sont généralement des /32 et elles finissent par être supprimées. Cela ne vous aide pas du tout ; le but est de protéger le réseau du FAI du déluge. Pendant ce temps, votre serveur perd effectivement l'accès à Internet.

Le seul moyen pour votre fournisseur d'accès (ou pour vous, si vous avez votre propre AS) de vous aider est d'utiliser des outils intelligents de gestion du trafic capables de détecter et de limiter le trafic DDoS probable. Tout le monde ne dispose pas de cette technologie. Cependant, si le trafic provient d'un ou deux réseaux, ou d'un seul hôte, ils peuvent aussi être en mesure de bloquer le trafic avant vous.

En bref, il y a très peu de choses que vous pouvez faire sur ce problème. La meilleure solution à long terme consiste à héberger vos services en de nombreux endroits différents sur Internet, qui devraient être soumis à des attaques DDoS individuelles et simultanées, ce qui rendrait l'attaque DDoS beaucoup plus coûteuse. Les stratégies à cet égard dépendent du service que vous devez protéger ; le DNS peut être protégé par de multiples serveurs de noms faisant autorité, le SMTP par des enregistrements MX de secours et des échangeurs de courrier, et le HTTP par un DNS round-robin ou un multihoming (mais une certaine dégradation pourrait être perceptible pendant la durée du service).

Les équilibreurs de charge sont rarement une solution efficace à ce problème, car l'équilibreur de charge lui-même est soumis au même problème et ne fait que créer un goulot d'étranglement. Les IPTables ou autres les règles du pare-feu ne sont d'aucune utilité parce que le problème est que votre tuyau est saturé. Une fois que les connexions sont vues par votre pare-feu, il est déjà trop tard. ; la bande passante vers votre site a été consommée. Peu importe ce que vous faites avec les connexions ; l'attaque est atténuée ou terminée lorsque le volume du trafic entrant revient à la normale.

Si vous êtes en mesure de le faire, envisagez d'utiliser une réseau de distribution de contenu (CDN) comme Akamai, Limelight et CDN77, ou utiliser un service d'élimination des DDoS comme CloudFlare ou Prolexic. Ces services prennent des mesures actives pour atténuer ce type d'attaques et disposent d'une bande passante disponible en tellement d'endroits différents qu'il n'est généralement pas possible de les inonder.

Si vous décidez d'utiliser CloudFlare (ou tout autre CDN/proxy), n'oubliez pas de cacher l'IP de votre serveur. Si un attaquant découvre l'adresse IP, il peut à nouveau lancer une attaque DDoS sur votre serveur directement, en contournant CloudFlare. Pour cacher l'IP, votre serveur ne doit jamais communiquer directement avec d'autres serveurs/utilisateurs, sauf s'ils sont sûrs. Par exemple, votre serveur ne doit pas envoyer d'e-mails directement aux utilisateurs. Cela ne s'applique pas si vous hébergez tout votre contenu sur le CDN et ne disposez pas de votre propre serveur.

En outre, certains fournisseurs de VPS et d'hébergement sont plus aptes à atténuer ces attaques que d'autres. En général, plus ils sont grands, plus ils seront performants dans ce domaine ; un fournisseur très bien desservi et disposant d'une grande largeur de bande sera naturellement plus résilient, et un fournisseur disposant d'une équipe d'exploitation de réseau active et complète sera en mesure de réagir plus rapidement.

Basé sur la charge

Lorsque vous subissez un DDoS basé sur la charge, vous remarquez que la la moyenne de charge est anormalement élevée (ou l'utilisation du processeur, de la mémoire vive ou du disque, en fonction de votre plate-forme et des spécificités). Bien que le serveur ne semble pas faire quoi que ce soit d'utile, il est très occupé. Souvent, les journaux contiennent un grand nombre d'entrées indiquant des conditions inhabituelles. Le plus souvent, cela provient d'un grand nombre d'endroits différents et il s'agit d'un DDoS, mais ce n'est pas nécessairement le cas. Il n'est même pas nécessaire qu'il y ait beaucoup d'hôtes différents. .

Cette attaque est basée sur le fait de faire faire à votre service beaucoup de choses coûteuses. Cela peut être quelque chose comme l'ouverture d'un nombre gargantuesque de connexions TCP et vous forcer à maintenir un état pour celles-ci, ou le téléchargement de fichiers excessivement grands ou nombreux vers votre service, ou peut-être des recherches très coûteuses, ou vraiment tout ce qui est coûteux à gérer. Le trafic se situe dans les limites de ce que vous avez prévu et de ce que vous pouvez supporter, mais les types de demandes formulées sont trop coûteux pour traiter un si grand nombre de demandes. .

Tout d'abord, le fait que ce type d'attaque soit possible est souvent le signe d'une problème ou bogue de configuration à votre service. Par exemple, il se peut que vous ayez activé une journalisation trop verbeuse et que vous stockiez les journaux sur un support dont l'écriture est très lente. Si quelqu'un s'en rend compte et fait quelque chose qui vous oblige à écrire de grandes quantités de journaux sur le disque, votre serveur va ralentir. Votre logiciel peut aussi faire quelque chose d'extrêmement inefficace pour certains cas d'entrée ; les causes sont aussi nombreuses qu'il y a de programmes, mais deux exemples seraient une situation qui fait que votre service ne ferme pas une session qui est autrement terminée, et une situation qui fait qu'il génère un processus enfant et le quitte. Si vous vous retrouvez avec des dizaines de milliers de connexions ouvertes avec un état à suivre, ou des dizaines de milliers de processus enfants, vous aurez des problèmes.

La première chose que vous pouvez faire est de utiliser un pare-feu pour supprimer le trafic . Ce n'est pas toujours possible, mais s'il existe une caractéristique que vous pouvez trouver dans le trafic entrant (tcpdump peut être utile pour cela si le trafic est léger), vous pouvez l'abandonner au niveau du pare-feu et il ne posera plus de problème. L'autre chose à faire est de corriger le bogue dans votre service (prenez contact avec le fournisseur et préparez-vous à une longue expérience de support).

Cependant, si c'est un problème de configuration, commencez par là. . Réduisez la journalisation sur les systèmes de production à un niveau raisonnable (selon le programme, il s'agit généralement de la valeur par défaut, et cela implique généralement de s'assurer que les niveaux de journalisation "debug" et "verbose" sont désactivés ; si tout ce que fait un utilisateur est enregistré dans les moindres détails, votre journalisation est trop verbeuse). En outre, vérifier les limites des processus et des demandes des enfants éventuellement papillon des gaz les requêtes entrantes, les connexions par IP, et le nombre de processus enfants autorisés, le cas échéant.

Il va sans dire que plus votre serveur est bien configuré et bien approvisionné, plus ce type d'attaque sera difficile. Évitez d'être avare en RAM et en CPU en particulier. Assurez-vous que vos connexions à des éléments tels que les bases de données dorsales et le stockage sur disque sont rapides et fiables.

Basé sur des exploits

Si votre service est mystérieusement se plante extrêmement rapidement après être apparu, en particulier si vous pouvez établir un schéma de requêtes qui précèdent le crash et que la requête est atypique ou ne correspond pas aux schémas d'utilisation attendus, vous pourriez être confronté à un DoS basé sur un exploit. Cela peut provenir d'un seul hôte (avec à peu près n'importe quel type de connexion Internet) ou de nombreux hôtes.

C'est similaire à un DoS basé sur la charge à bien des égards, et a fondamentalement les mêmes causes et atténuations. La différence est simplement que dans ce cas, le bogue ne provoque pas le gaspillage de votre serveur, mais sa mort. L'attaquant exploite généralement une vulnérabilité de plantage à distance, telle qu'une entrée déformée qui provoque une déférence nulle ou autre chose dans votre service.

Traitez cela de la même manière qu'une attaque d'accès à distance non autorisé. Pare-feu contre les hôtes d'origine et le type de trafic s'ils peuvent être identifiés. Utiliser des reverse proxies validants le cas échéant. Rassembler les preuves médico-légales (essayez de capturer une partie du trafic), déposez un ticket de bogue auprès du fournisseur, et envisagez de déposer une plainte pour abus (ou une plainte légale) contre l'origine également.

Ces attaques sont relativement peu coûteuses à mettre en place, si un moyen d'exploitation peut être trouvé, et elles peuvent être très puissantes, mais aussi relativement faciles à repérer et à arrêter. Cependant, les techniques qui sont utiles contre les attaques DDoS basées sur le trafic sont généralement inutiles contre les attaques DoS basées sur l'exploitation.

1 votes

En ce qui concerne votre dernier paragraphe, Et si vous êtes victime d'un exploit ? D DoS ? Comment le repérer et l'arrêter ?

8voto

Sarsaparilla Points 189

Si vous êtes une entreprise, vous avez de nombreuses possibilités. Si vous êtes un petit gars comme moi, qui loue un VPS ou un serveur dédié pour servir un petit site web, le coût peut rapidement devenir prohibitif.

D'après mon expérience, je pense que la plupart des fournisseurs de serveurs dédiés et de serveurs virtuels ne configureront pas de règles de pare-feu spéciales pour votre serveur. Mais aujourd'hui, vous avez quelques options.

CDN

Si vous utilisez un serveur web, envisagez de le placer derrière un CDN comme CloudFlare ou Amazon CloudFront.

Les CDN sont coûteux. Pour garder le coût sous contrôle, servez les gros fichiers (images, audio, vidéo) directement à partir de votre serveur au lieu de passer par le CDN. Cependant, cela peut exposer l'adresse IP de votre serveur aux attaquants.

Cloud privé

Les nuages privés sont généralement des solutions d'entreprise coûteuses, mais Amazon VPC ne coûte pratiquement rien à mettre en place. Cependant, la bande passante d'Amazon en général est chère. Si vous pouvez vous le permettre, vous pouvez alors configurer le groupe de sécurité et la liste de contrôle d'accès réseau d'Amazon VPC pour bloquer le trafic avant qu'il n'arrive à votre instance. Vous devez bloquer tous les ports, à l'exception du port de votre serveur TCP.

Notez qu'un attaquant peut toujours attaquer le port de votre serveur TCP. S'il s'agit d'un serveur web, envisagez d'utiliser quelque chose comme nginx qui utilise des entrées-sorties non bloquantes et peut gérer un grand nombre de connexions. En dehors de cela, il n'y a pas grand-chose que vous puissiez faire, à part vous assurer que vous utilisez la dernière version du logiciel du serveur.

Quand votre port TCP est attaqué et que tout le reste échoue

Il s'agit d'une solution que j'ai développée et qui s'applique aux serveurs non web qui ne peuvent pas se cacher derrière un CDN, comme les serveurs WebSocket, de contenu média/streaming. CloudFlare prend en charge WebSocket mais uniquement pour les entreprises pour le moment.

L'objectif est de modifier votre port d'écoute TCP suffisamment rapidement pour qu'un botnet ne puisse pas suivre, disons une fois toutes les 10 secondes. Pour ce faire, on utilise un simple programme proxy qui effectue le changement de port. La séquence des ports est pseudo-aléatoire, mais doit être basée sur l'heure du serveur. L'algorithme de calcul de l'heure et du port du serveur doit être caché dans le code javascript/flash de votre client. Le programme doit également modifier le pare-feu lorsqu'il change de port d'écoute, et le pare-feu doit être stateful. Si quelqu'un est intéressé, je vais télécharger mon node.js script qui fonctionne avec Amazon, sur GitHub.

4voto

John Fox Points 300

Changez votre domaine pour aller dans un trou noir comme 0.0.0.0 pendant une courte période.

Demandez à votre fournisseur de serveur s'il peut vous attribuer une autre adresse IP pour vous permettre d'accéder temporairement au serveur ou si le serveur dispose d'un accès à la console à distance (comme si vous étiez assis en face de lui). À partir de là, vous pourrez déterminer s'il s'agit d'une seule adresse IP et la bloquer à partir du site ou d'une attaque distribuée.

3 votes

Changer les DNS comme ça risque de faire plus de mal que de bien. Dans un premier temps, je réduirais la TTL de l'enregistrement A, mais je laisserais l'adresse IP inchangée - jusqu'à ce que je dispose d'une nouvelle IP vers laquelle la diriger.

1voto

Lorsque vous subissez une attaque DDoS, votre fournisseur d'accès Internet peut vous aider le plus, mais s'il n'a pas de protection DDoS, il est très probable que vous serez hors service jusqu'à ce que l'attaque cesse. En général, ils verront l'adresse IP attaquée et annuleront le réseau sur leur routeur en amont. Si vous n'avez pas beaucoup de trafic, il existe de nombreux services en ligne de protection contre les attaques par déni de service, dans lesquels votre trafic est rerouté, filtré et renvoyé vers votre serveur.

-1voto

sreejagaths Points 111

Nous avons déjà connu la même situation. Voici ce que nous avons fait.

Tout d'abord, débranchez le câble réseau de votre serveur. Vérifiez ensuite que les services de votre serveur ont retrouvé un comportement normal en consultant le moniteur de performance et le gestionnaire de tâches. Si ce n'est pas le cas, analysez votre serveur avec le logiciel malwarebytes pour vous assurer que votre serveur est nettoyé. Cette étape permet généralement à votre serveur déconnecté de revenir à la normale.

Ensuite, avez-vous mis en place un pare-feu ? Si oui, avez-vous renouvelé l'abonnement ? Assurez-vous d'activer la fonction d'intrusion IPS dans le pare-feu. Le simple fait de renouveler l'abonnement au pare-feu a résolu notre attaque DDOS.

Nous avons appris que nous devions renouveler nos abonnements de sécurité (ex. : firwall ou anti-virus) et ne pas les prendre à la légère. Les attaques DDOS se produisent tous les jours et peuvent également toucher les petites entreprises. J'espère que cela vous aidera.

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