Firewall : passer de iptables à ufw

Bonjour,

J’ai trouvé dans une présentation sur la sécurisation d’un serveur debian une configuration de firewall que j’aimerais bien appliquer sur mon serveur.

Seulement, j’aimerais bien l’appliquer via ufw qui me semble plus simple d’usage. Cela voudrait donc dire traduire les commandes iptables en commandes ufw.

Voici la configuration iptables :

iptables-save -t filter
filter
:INPUT DROP
:FORWARD DROP
:OUTPUT DROP
# Windows, ça spam…
-A INPUT -p udp -d 255.255.255.255 -j DROP
-A INPUT -p udp -d X.X.X.255 -j DROP
-A INPUT -p udp -m multiport --dport netbios-ns,netbios-dgm,netbios-ssn -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport ssh -j ACCEPT
-A INPUT -p tcp -m tcp --dport http -j ACCEPT
-A INPUT -p tcp -m tcp --dport https -j ACCEPT
-A INPUT -p tcp -m tcp --dport smtp -j ACCEPT
-A INPUT -p tcp -m tcp --dport submission -j ACCEPT
-A INPUT -p tcp -m tcp --dport imaps -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
COMMIT

Il y a un certain nombre de commandes que je n’arrive pas à convertir en ufw, soit parce que la syntaxe ne semble pas l’accepter (comme par exemple -d X.X.X.255) ou bien peut-être parce que certaines règles sont d’office appliquées par ufw (peut-être -m conntrack --ctstate RELATED,ESTABLISHED).

Bref, si vous connaissez un convertisseur de règle, ou si vous même êtes bien calés pour convertir des règles iptables en ufw, soyez le bienvenu sur ce fil de discussion !

Salut
j’utilise l’interface graphique gufw

çe qui génère

 ufw status
Status: active

To                         Action      From
--                         ------      ----
192.168.0.22               ALLOW       192.168.0.15              
192.168.0.15               ALLOW       192.168.0.22              
6566/tcp                   ALLOW       Anywhere                  
1718/udp                   ALLOW       Anywhere                  
1900/udp                   ALLOW       Anywhere                  
8200/tcp                   ALLOW       Anywhere                  
6566/tcp (v6)              ALLOW       Anywhere (v6)             
1718/udp (v6)              ALLOW       Anywhere (v6)             
1900/udp (v6)              ALLOW       Anywhere (v6)             
8200/tcp (v6)              ALLOW       Anywhere (v6)             

192.168.0.22               ALLOW OUT   192.168.0.15              
192.168.0.15               ALLOW OUT   192.168.0.22              
1718/udp                   ALLOW OUT   Anywhere                  
1900/udp                   ALLOW OUT   Anywhere                  
8200/tcp                   ALLOW OUT   Anywhere                  
1718/udp (v6)              ALLOW OUT   Anywhere (v6)             
1900/udp (v6)              ALLOW OUT   Anywhere (v6)             
8200/tcp (v6)              ALLOW OUT   Anywhere (v6)             

Merci pour ta réponse, mais ta conf étant différente de la mienne, elle ne me sera pas d’un grand secours…

Ou alors il y avait un sous-entendu que je n’ai pas compris…

Visiblement
je te propose simplement d’utiliser l’interface graphique gufw pour te faciliter la tâche

je ne te dis pas de copier ma configuration, c’est un exemple du travail de gufw c’est tout

Normal que tu ne puisse pas convertir iptables en ufw.

Il y ades commandes pré-enregistrer.
Tu les trouvera ici : /etc/ufw/before.rules

source : https://help.ubuntu.com/community/UFW

ufw est un meilleur outil par contre.

Ok, en fait tu me proposes une interface graphique pour configurer ufw, c’est sympa, mais dans le cas que j’expose, j’ai peur que ça ne m’aide pas beaucoup. En outre, mon serveur est headless et ne pourra donc pas exécuter gufw.

Merci quand même.

Merci pour ce pointeur vers le fichier before.rules.

Ca va m’être plus compliqué de convertir mes règles iptables vers ufw, mais je vais m’y atteler…

Je trouve dommage de ne pas essayer de mieux cerner les règles de iptables ici même afin de parfaire ta connaissance dessus, il y a des membres largement assez calé ici même pour t’accompagner dans l’élaboration d’un script et sa mise en place.

Après pourquoi ne pas écrire toi même les règles en t’appuyant sur la documentation de ufw (qui est tout de même assez simple à prendre en main).

Quelque secondes de recherches m’ont permis de trouver des articles accessible par exemple :

Ou par exemple chez nos amis de Debian-Facile :

https://debian-facile.org/doc:systeme:ufw

Mon premier message ne devait pas être assez clair mais l’objectif premier de mon message était bien de comprendre chaque règle iptables de la configuration initiale.

Une fois chaque règle bien compris (ce qu’elle bloque ou autorise, et pourquoi elle le fait), j’ai découvert par @cleloup que l’usage de ufw implique l’activation de règle par défaut (et ces règles sont des règles iptables, si je ne me trompe). La seconde étape est donc de voir quelle est la configuration ufw par défaut.

La dernière étape enfin, consiste à convertir les règles iptables restantes en règles ufw.

Je suis déjà en train de consulter un paquet de pages web sur iptables et sur ufw. Mais j’avoue qu’il me manque quelques notions de réseau pour tout comprendre. Ca commence par le fichier /etc/ufw/before.rules mentionné par @cleloup, je ne suis pas sûr d’arriver à comprendre la signification de l’instruction RETURN (sort de la chaîne et retourne dans le flux de traitement, mais quel est ce flux de traitement, je n’ai pas la vision globale), ni de bien cerner les notions de broadcast ou de multicast (à mettre en lien avec les adresses 255.255.255.255 ou X.X.X.255 de la configuration iptables du premier message).

 # if LOCAL, RETURN
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN

# if MULTICAST, RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN

# if BROADCAST, RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN

En bref et en clair, merci pour les deux liens que tu me proposes, je vais les lire attentivement. Mais si des personnes calés en iptables peuvent m’éclairer sur des points de iptables ou ufw (qui n’est finalement qu’une surcouche à iptables), ce sera avec plaisir !

L’objectif final est d’arriver à une configuration ufw qui aboutisse à une sécurisation optimale du serveur. Quitte à lancer une commande iptables à la fin pour voir la configuration iptables correspondant, dans ce sens-là, c’est possible.