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 20:09] – 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 18: | Ligne 24: | ||
===== IP sets ===== | ===== IP sets ===== | ||
- | Les **IP sets** (ou ensembles IP) permettent de répondre précisément à cette problématique. | + | Les **IP sets** (ou ensembles IP) permettent de répondre précisément à cette problématique. |
- | Une fois que l' | + | Une fois l' |
- | Installer via le gestionnaire de paquetage: | + | Installer |
<code bash> | <code bash> | ||
sudo apt-get install ipset | sudo apt-get install ipset | ||
</ | </ | ||
- | On commence par créer un nouvel ensemble, ici on le nomme "set_banished_ip": | + | ===== Créer l' |
+ | |||
+ | On commence par créer un nouvel ensemble, ici on le nomme "set_banished_net": | ||
<code bash> | <code bash> | ||
- | sudo ipset create | + | sudo ipset create |
</ | </ | ||
- | L' | + | 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: | Pour lister les ensembles définis: | ||
Ligne 41: | Ligne 57: | ||
</ | </ | ||
+ | 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:// |