« LINUX:DDOS » : différence entre les versions

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 72 : Ligne 72 :




 
=Utilisation=
=Fonctionnalités=
 
Il a deux modes d'utilisation: en mode démon pour la contre-attaque automatique et en mode ligne de commandes pour la consultation de son état.  
Il a deux modes d'utilisation: en mode démon pour la contre-attaque automatique et en mode ligne de commandes pour la consultation de son état.  


Ligne 83 : Ligne 81 :
donne une explication succincte.
donne une explication succincte.


 
La commande:
 
ddos -b
liste les adresses IP bloquées.


Les fichiers de gestion se trouvent dans le répertoire "/var/lib/ddos". Dans mon cas, c'est le fichier "bans.list" qui est concerné. Quand une machine distante est bloquée, un entrée est ajoutée. Chaque ligne comporte une date exprimée en secondes qui définit l'échéance du blocage. Elle est suivie de l'adresse IP de la machine distante et en fin, le nombre de connexions concomitantes effectuées lors de sa détection. Dès que la date limite est atteinte, le blocage est éliminé ainsi que son entrée dans ce fichier.
Les fichiers de gestion se trouvent dans le répertoire "/var/lib/ddos". Dans mon cas, c'est le fichier "bans.list" qui est concerné. Quand une machine distante est bloquée, un entrée est ajoutée. Chaque ligne comporte une date exprimée en secondes qui définit l'échéance du blocage. Elle est suivie de l'adresse IP de la machine distante et en fin, le nombre de connexions concomitantes effectuées lors de sa détection. Dès que la date limite est atteinte, le blocage est éliminé ainsi que son entrée dans ce fichier.


 
Dans le cas d'une machine bloquée, par exemple "95.214.27.19", l'entrée suivante a été ajoutées au FireWall, via IPTABLES dans notre cas:
iptables -A INPUT -s 95.214.27.19 -DROP
Elle sera éliminée par une commande analogue:
iptables -D INPUT -s 95.214.27.19 -DROP
le temps de blocage écoulé.





Version du 12 novembre 2024 à 22:28


retour au menu pour contrer les attaques


But

Les attaques DOS et DDOS sont de plus en plus fréquentes. On ne peut pas nécessairement s'en prémunir complètement mais on peut en atténuer les effets.


Une première solution est d'établir des règles dans FireWall telles celles présentées dans l'article sur IPTABLES: XTABLES-ADDONS. On complète cette approche par l'activation d'un HIDS tel Wazuh.


Une seconde approche est la surveillance active des journaux du système et des messages d'alertes envoyés par un HIDS tel Wazuh. Si une recrudescence d'attaques provenant d'un sub-net ou d'un pays survient, on ajoute rapidement une règle dans notre FireWall. Ceci m'est arrivé trois fois, ces attaques ralentissant l'accès au serveur.


Je n'ai pas subit jusqu'à présent d'attaque massive. Mon site étant très anecdotique, non stratégique. Mais j'ai quand même ajouté un produit simple dans sa conception mais qui bloque quelques tentatives.

Au début j'ai utilisé un logiciel nommé No-More-DDos; je me suis tourné ensuite sur le logiciel DDoS-Deflate. Les deux ont une conception très proches et ont une base commune.


Installation

En premier, on télécharge le produit:

wget https://github.com/jgmdev/ddos-deflate/archive/master.zip -O ddos.zip

On le décompresse ensuite:

unzip ddos.zip

Son contenu se retrouve dans le sous-répertoire "ddos-deflate-master". On s'y rend:

cd ddos-deflate-master

Notons qu'il a besoin d'un certain nombre d'autres logiciels dont on peut découvrir la liste dans le fichier "README.md" et dans le fichier "config/dependencies.list". Normalement ils sont installés lors de la phase d'installation qui suit:

make install

Dans mon cas, la gestion des services est assurée par le système "Systemd". Le service "ddos.service" est ajouté et lancé automatiquement.

Ce logiciel est un simple script "sh" qui se trouve dans le répertoire "/usr/local/ddos". Ce script se nomme "ddos.sh".


Configuration

Les trois fichiers de configuration se trouvent dans le répertoire "/etc/ddos".

  • Le fichier "ddos.conf" reprend tous les paramètres de configuration du logiciel. Nous avons modifié certains paramètres.

Nous avons choisi de ne vérifier que les connexions entrantes sans analyser l'importance du trafic. Au début nous surveillions le trafic dans les deux sens mais lors le le mise à jour de WordPress, nous avons été confrontés à un blocage. D'où notre changement. Nous avons aussi allongé le temps de blocage.

Voici quelques paramètres importants dans notre cas.


# How many connections define a bad IP per user? Indicate that below.
NO_OF_CONNECTIONS=150
# Only count incoming connections to listening services, which will
# prevent the server from banning multiple outgoing connections to
# a single ip address. (slower than default in/out method)
ONLY_INCOMING=true
# The firewall to use for blocking/unblocking, valid values are:
# auto, apf, csf, ipfw, and iptables
FIREWALL="auto"
# Number of seconds the banned ip should remain in blacklist.
BAN_PERIOD=18000
# An email is sent to the following address when an IP is banned.
# Blank would suppress sending of mails
EMAIL_TO="root"
# Connection states to block. See: man ss
# each state should be separated by a colon (:), for example:
# "established:syn-sent:syn-recv:fin-wait-1:fin-wait-2"
# by default it blocks all states except for listening and closed
CONN_STATES="connected"

  • Le fichier "ignore.ip.list" reprend la liste blanche des machines sous forme d'adresses IP ou d'ensemble de machines sous forme de de sub-net IP.

On édite ce fichier pour l'adapter à notre contexte. On laisse l'adresse de localhost et on ajoute par exemple le sub-net de notre réseau local ou si on se veut plus restrictif, les adresses IP des machines de confiance. Par exemple:


127.0.0.0/8
192.168.1.0/24

  • Le fichier "ignore.host.list" reprend la liste blanche des machines sous forme de son nom. Nous ne l'avons pas modifié. Aucune n'est active.


Utilisation

Il a deux modes d'utilisation: en mode démon pour la contre-attaque automatique et en mode ligne de commandes pour la consultation de son état.

Un fichier d'aide existe:

man ddos

ou la commande:

ddos -h

donne une explication succincte.

La commande:

ddos -b

liste les adresses IP bloquées.

Les fichiers de gestion se trouvent dans le répertoire "/var/lib/ddos". Dans mon cas, c'est le fichier "bans.list" qui est concerné. Quand une machine distante est bloquée, un entrée est ajoutée. Chaque ligne comporte une date exprimée en secondes qui définit l'échéance du blocage. Elle est suivie de l'adresse IP de la machine distante et en fin, le nombre de connexions concomitantes effectuées lors de sa détection. Dès que la date limite est atteinte, le blocage est éliminé ainsi que son entrée dans ce fichier.

Dans le cas d'une machine bloquée, par exemple "95.214.27.19", l'entrée suivante a été ajoutées au FireWall, via IPTABLES dans notre cas:

iptables -A INPUT -s 95.214.27.19 -DROP

Elle sera éliminée par une commande analogue:

iptables -D INPUT -s 95.214.27.19 -DROP

le temps de blocage écoulé.





retour au menu pour contrer les attaques