Ceci est une ancienne révision du document !
La présentation détaillée des ipsets est proposée dans le wiki bloquer des adresses IP indésirables.
On cherche ici à créer une règle autorisant le trafic en sortie sur un port particulier (8000) vers un groupe d'adresses IP seulement.
# Création d'une groupe contenant au maximum 256 adresses sudo ipset create canon_mfc hash:ip maxelem 256 # ajout de quelques adresses dans le groupe sudo ipset add canon_mfc 192.168.0.10 sudo ipset add canon_mfc 192.168.0.20 sudo ipset add canon_mfc 192.168.0.33
Dans un premier temps on utilise le cli iptables, les changements seront ainsi réversibles en cas d'erreur en rechargeant simplement le pare-feu ufw
# journaliser le trafic sortant autorisé iptables -A ufw-after-output -m set --match-set canon_mfc dst -p tcp --dport 8000 -j ufw-logging-allow # autorise en sortie iptables -A ufw-after-output -m set --match-set canon_mfc dst -p tcp --dport 8000 -j ACCEPT
Vérifier la présence de la nouvelle règle dans la chaîne:
iptables -L ufw-after-output ... ufw-logging-allow tcp -- anywhere anywhere match-set canon_mfc dst tcp dpt:8000 ACCEPT tcp -- anywhere anywhere match-set canon_mfc dst tcp dpt:8000
Contacter l’hôte sur le port 8000 et vérifier les traces dans les journaux système:
journalctl -k --since "1 minutes ago" -- Logs begin at Wed 2021-06-16 14:39:52 CEST, end at Tue 2021-10-19 18:06:04 CEST. -- oct. 19 18:05:32 node-7c87 kernel: [UFW ALLOW] IN= OUT=enp0s31f6 SRC=192.168.0.1 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=48686 DF PROTO=TCP SPT=38250 DPT=8000 WINDOW=64240 RES=0x00 SYN URGP=0 ...
En cas de problème ou une fois le fonctionnement de la règle confirmé, on peut recharger le pare-feu, les modifications apportées précédemment seront effacées.
ufw reload
Pour rendre la règle permanente, il faut l'intégrer dans le framework UFW. La règle ne pourra être valide syntaxiquement que si les ensembles existent. Il faut donc que les ensembles ipset soient créés avant.
# rendre executable le script before.init s'il ne l'est pas chmod +x before.init # Sauvegarder les ensembles ipset existants: ipset save > /etc/ufw/ipsets.save
Modifier le fichier /etc/ufw/before.init
pour que les ensembles soient recréés depuis la sauvegarde lors du redémarrage
#!/bin/sh # # before.init: if executable, called by ufw-init. See 'man ufw-framework' for # details. Note that output from these scripts is not seen via the # the ufw command, but instead via ufw-init. # # Copyright 2013 Canonical Ltd. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License version 3, # as published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # set -e case "$1" in start) # create ipsets from definition file ipset restore < /etc/ufw/ipsets.save ;; stop) # delete all ipsets ipset destroy ;; status) # optional ;; flush-all) # optional ;; *) echo "'$1' not supported" echo "Usage: before.init {start|stop|flush-all|status}" ;; esac
Pour rendre la règle permanente on modifie le fichier /etc/ufw/after.rules
# Journalise et autorise le traffic vers l'interface Web de gestion des MFC Canon -A ufw-after-output -m set --match-set canon_mfc dst -p tcp --dport 8000 -j ufw-logging-allow -m comment --comment "Allow Management Canon MFC" -A ufw-after-output -m set --match-set canon_mfc dst -p tcp --dport 8000 -j ACCEPT -m comment --comment "Allow Management Canon MFC"
On recharge les règles:
ufw reload
D'autres machines pourront ainsi être ajoutées à ce groupe sans qu'il soit nécessaire de créer une nouvelle règle ou de recharger les règles existantes.
# Ajoute une nouvelle machine au groupe. La règle existante s'applique immédiatement à ce nouveau membre
ipset add canon_mfc 192.168.0.42
ipset save > /etc/ufw/ipsets.save