Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
netadmin:blocage_adresses_ip [2021/09/02 15:24] – yoann | netadmin:blocage_adresses_ip [2024/06/08 12:18] (Version actuelle) – yoann | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
{{tag> | {{tag> | ||
- | ====== | + | : |
+ | |||
+ | < | ||
+ | Sur les distributions récentes, **nftables** remplace **iptables**. Voir la note [[netadmin/ | ||
+ | </ | ||
+ | |||
+ | ====== | ||
Il est parfois nécessaire de bloquer des adresses IP avec lesquelles le système Linux communique par défaut: on peut vouloir bannir certains hôtes ayant tenté des attaques contre le système par exemple. | Il est parfois nécessaire de bloquer des adresses IP avec lesquelles le système Linux communique par défaut: on peut vouloir bannir certains hôtes ayant tenté des attaques contre le système par exemple. | ||
Ligne 14: | Ligne 20: | ||
</ | </ | ||
- | + | Cependant si l'on cherche à bannir un millier d' | |
+ | ===== IP sets ===== | ||
+ | |||
+ | Les **IP sets** (ou ensembles IP) permettent de répondre précisément à cette problématique. Ce sont des groupes d' | ||
+ | |||
+ | Une fois l' | ||
+ | |||
+ | Installer le paquet **ipset** via le gestionnaire de paquetage: | ||
+ | <code bash> | ||
+ | sudo apt-get install ipset | ||
+ | </ | ||
+ | |||
+ | ===== Créer l' | ||
+ | |||
+ | On commence par créer un nouvel ensemble, ici on le nomme " | ||
+ | <code bash> | ||
+ | sudo ipset create set_banished_net hash:net | ||
+ | </ | ||
+ | |||
+ | L' | ||
+ | |||
+ | <code bash> | ||
+ | sudo ipset create set_banished_ip hash:ip | ||
+ | </ | ||
+ | |||
+ | Par défaut un ensemble compte 65536 éléments. Cette valeur peut être modifiée via l' | ||
+ | |||
+ | <code bash> | ||
+ | sudo ipset create set_banished_ip hash:ip maxelem 1000000 | ||
+ | </ | ||
+ | Pour lister les ensembles définis: | ||
+ | |||
+ | <code bash> | ||
+ | sudo ipset list | ||
+ | </ | ||
+ | |||
+ | Pour ajouter un élément dans un ensemble: | ||
+ | |||
+ | <code bash> | ||
+ | sudo ipset add set_basnished_net 1.1.1.1/32 | ||
+ | sudo ipset add set_basnished_net 1.1.2.0/24 | ||
+ | |||
+ | sudo ipset add set_banished_ip 93.186.198.153 | ||
+ | </ | ||
+ | |||
+ | Pour supprimer un élément de l' | ||
+ | <code bash> | ||
+ | sudo ipset del set_banished_ip 93.186.198.153 | ||
+ | </ | ||
+ | |||
+ | ===== Créer le filtre netfilter ===== | ||
+ | |||
+ | Maintenant que l' | ||
+ | |||
+ | <code bash> | ||
+ | sudo iptables -I INPUT -m set --match-set set_banished_ip src -p tcp -j LOG --log-level info --log-prefix=" | ||
+ | sudo iptables -I INPUT 2 -m set --match-set set_banished_ip src -p tcp -j DROP | ||
+ | </ | ||
+ | |||
+ | ==== Filtres avec Docker ==== | ||
+ | |||
+ | Si le serveur s' | ||
+ | |||
+ | <code bash> | ||
+ | sudo iptables -I DOCKER-USER -m set --match-set set_banished_ip src -p tcp -j LOG --log-level info --log-prefix=" | ||
+ | sudo iptables -I DOCKER-USER 2 -m set --match-set set_banished_ip src -p tcp -j DROP | ||
+ | </ | ||
+ | |||
+ | ===== Sauvegarde et restauration d'un ensemble ===== | ||
+ | |||
+ | Il est possible d' | ||
+ | |||
+ | <code bash> | ||
+ | sudo ipset save set_banished_ip -f banished_ip.txt | ||
+ | </ | ||
+ | |||
+ | |||
+ | Pour supprimer un set existant: | ||
+ | <code bash> | ||
+ | sudo ipset destroy set_banished_ip | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Un ensemble ne pourra pas être supprimé s'il est en cours d' | ||
+ | </ | ||
+ | |||
+ | Pour recréer un ensemble via le fichier d' | ||
+ | <code bash> | ||
+ | sudo ipset restore -f banished_ip.txt | ||
+ | </ | ||
+ | |||
+ | ===== Automatiser le bannissement ===== | ||
+ | |||
+ | |||
===== Références ===== | ===== Références ===== | ||
* https:// | * https:// |