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:// | ||