Uncomplicated Firewall

Le pare-feu tout simplement.

UFW est un nouvel outil de configuration simplifié en ligne de commande de Netfilter, qui donne une alternative à l'outil iptables. UFW devrait à terme permettre une configuration automatique du pare-feu lors de l'installation de programmes en ayant besoin.

Si vous désirez activer et configurer votre pare-feu sur un ordinateur profitant d'un environnement de bureau, sachez qu'il existe une interface graphique pour UFW : Gufw.

Il existe également une interface spécialement adaptée pour KDE (Kubuntu) : installer le paquet ufw-kde.

Installation

Uncomplicated Firewall est pré-installé sous Ubuntu, mais en cas de besoin, vous devrez simplement installer le paquet ufw.

Utilisation

L'ordre de déclaration des règles est très important, le système utilisant une politique « premier arrivé, premier servi ». Prenez donc soin d'ajouter vos règles spécifiques avant les règles générales lorsqu'elles concernent des éléments communs.

Activer / Désactiver UFW

L'outil UFW n'est pas activé par défaut, il vous faut donc avoir les droits administrateur en ligne de commande.

Vérifier le statut actuel :

sudo ufw status

État : actif ou inactif

Activer UFW : ( c'est à dire appliquer les règles définies)

sudo ufw enable

Désactiver UFW : (c'est à dire ne plus appliquer les règles définies)

sudo ufw disable

Afficher l'état actuel des règles

Une unique commande qui vous permettra de jeter un œil sur la totalité des instructions que vous avez indiquées à UFW :

sudo ufw status verbose

Cette commande devrait vous afficher quelque chose comme ça :

État : actif
Journalisation : on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
Nouveaux profils : skip

Vers                       Action      De
----                       ------      --
80                         DENY IN     Anywhere
443                        ALLOW IN    Anywhere
22                         ALLOW IN    Anywhere
192.168.0.2 995            ALLOW IN    Anywhere
8082/tcp                   DENY IN     10.0.0.0/8
25/tcp                     ALLOW IN    192.168.0.0/24
80 (v6)                    DENY IN     Anywhere (v6)
443 (v6)                   ALLOW IN    Anywhere (v6)
22 (v6)                    ALLOW IN    Anywhere (v6)

23/tcp                     DENY OUT    Anywhere
23/tcp (v6)                DENY OUT    Anywhere (v6)

L'argument verbose est optionnel, cependant il est vivement recommandé car il permet d'afficher la direction du trafic dans les règles (IN : entrant, OUT : sortant)

Description du contenu

Journalisation : on (low)

Indique que la journalisation est activée, vous pouvez retrouver toutes les interactions du pare-feu dans le fichier /var/log/ufw.log . Vous pouvez activer ou désactiver cette journalisation, voir ici.

Default: deny (incoming), allow (outgoing), disabled (routed)

Concerne les règles par défaut de UFW, voir la rubrique gestion des règles par défaut pour son paramétrage.

Vers                       Action      De
----                       ------      --
80                         DENY IN     Anywhere
443                        ALLOW IN    Anywhere
[...]
23/tcp (v6)                DENY OUT    Anywhere (v6)

Liste toutes les règles que vous avez indiquées au pare-feu. (V6) correspond aux règles adaptées pour l'IPv6, celles qui n'ont pas cette précision sont adaptées pour l'IPv4. Pour l’édition de ces règles, voir la rubrique concernant l’édition des règles.

Numéro de règle

Vous pouvez afficher les règles numérotées.

sudo ufw status numbered

Gestion des règles par défaut

Lorsque UFW est activé, par défaut le trafic entrant est refusé et le trafic sortant est autorisé. C'est en général le réglage à privilégier, cependant vous pouvez tout de même modifier ces règles.

Autoriser le trafic entrant suivant les règles par défaut :

sudo ufw default allow

Refuser le trafic entrant suivant les règles par défaut :

sudo ufw default deny

Autoriser le trafic sortant suivant les règles par défaut :

sudo ufw default allow outgoing

Refuser le trafic sortant suivant les règles par défaut :

sudo ufw default deny outgoing

Les commandes de base

Activer/désactiver la journalisation

Activer la journalisation :

sudo ufw logging on

Désactiver la journalisation :

sudo ufw logging off

Ajouter/supprimer des règles

Autoriser une connexion entrante :

sudo ufw allow [règle]

Refuser une connexion entrante :

sudo ufw deny [règle]

Refuser une IP entrante :

Si vous voulez bloquer une IP sur tous vos services, il faut le faire "avant" les autorisations existantes. D'où le "insert 1" qui met ce "deny" avant tous les "allow". Dans le cas d'une série d'IP à bloquer vous pouvez utiliser à chaque entrée le "insert 1", pas besoin de spécifier dans le cas présent une autre place
sudo ufw insert 1 deny from [ip]

Refuser une connexion entrante, uniquement en TCP :

sudo ufw deny [port]/tcp

Refuser une connexion sortante :

sudo ufw deny out [règle]

Supprimer une règle :

sudo ufw delete allow [règle]
sudo ufw delete deny [règle]

Supprimer simplement une règle d'après son numéro :

sudo ufw delete [numéro]
  • [port] est à remplacer par le numéro du port désiré.
  • [règle] est à remplacer par le numéro du port ou le nom du service désiré.
  • [numéro] est à remplacer par le numéro de la règle désiré.

Règles simples

La syntaxe des règles

Voici quelques exemples pour comprendre la syntaxe des règles de configuration.

  • Ouverture du port 53 en TCP et UDP :
    sudo ufw allow 53
  • Ouverture du port 25 en TCP uniquement :
    sudo ufw allow 25/tcp

Utilisation des services

UFW regarde dans sa liste de services connus pour appliquer les règles standards associées à ces services (apache2, smtp, imaps, etc..). Ces règles sont automatiquement converties en ports.

Pour avoir la liste des services :

less /etc/services

Exemple : Autoriser le service SMTP :

sudo ufw allow smtp

2° exemple : Autoriser le port de Gnome-Dictionary (2628/tcp) :

sudo ufw allow out 2628/tcp

3° exemple : Autoriser le protocole pop3 sécurisé (réception du courrier de Gmail et autres messageries utilisant ce protocole sécurisé) :

sudo ufw allow out pop3s

Utilisation avancée

Règles complexes

L'écriture de règles plus complexes est également possible :

  • Refuser le protocole (proto) TCP à (to) tout le monde (any) sur le port (port) 80 :
    sudo ufw deny proto tcp to any port 80
  • Refuser à (to) l'adresse 192.168.0.1 de recevoir sur le port (port) 25 les données provenant (from) du réseau de classe A et utilisant le protocole (proto) TCP :
    sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25
  • Refuser les données utilisant le protocole (proto) UDP provenant (from) de 1.2.3.4 sur le port (port) 514 :
    sudo ufw deny proto udp from 1.2.3.4 to any port 514
  • Refuser à l'adresse 192.168.0.5 de recevoir toutes données provenant du serveur web de la machine hébergeant le pare-feu :
    sudo ufw deny out from 192.168.0.5 to any port 80

Insérer une règle

Vous pouvez insérer une règle à une position précise en utilisant le numéro

sudo ufw insert NUM RULE
  • Insérer en numéro 2 une règle refusant le trafic entrant utilisant le protocole (proto) UDP (to) en direction de (any) toute les adresses en écoute sur votre machine sur le port (port) 514 en provenance (from) de 1.2.3.4
sudo ufw insert 2 deny proto udp to any port 514 from 1.2.3.4

Réinitialiser UFW

En cas d'erreur de vos règles vous pouvez réinitialiser le pare feu comme au début de l'installation en ouvrant un terminal puis vous écrivez:

sudo ufw reset 

Vous pouvez aussi forcer sans demander d'autorisation :

sudo ufw reset --force

Configuration

IPv6

UFW prend en charge les adresses IPv6. Le support d'IPv6 est désormais activé par défaut, si ce n'est pas le cas, il suffit de modifier le fichier /etc/default/ufw et d'y mettre ceci :

/etc/default/ufw
IPV6=yes

Il ne reste plus qu'à relancer UFW :

sudo ufw reload
Si le support d'IPv6 n'était pas activé, il vous faudra sûrement alors supprimer puis recréer vos règles.

Ne pas autoriser le ping

Par défaut UFW autorise les requêtes de ping (ICMP Echo Requests). Il faut éditer /etc/ufw/before.rules et commenter en ajoutant un "#" à la ligne suivante :

# -A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

Problèmes connus

Si vous obtenez **"ERROR: / is world writable

en voulant activer Uncomplicated Firewall, ces commandes devraient régler le problème :

sudo chown root:root /
sudo chmod 0755 /

Si vous n'avez plus de place disque

Il faut penser qu'il y a un problème de refus de connexion tracé dans /var/log. Si non résolvable, l'une de ces commandes pourra masquer le problème:

sudo  ufw logging off
sudo  ufw logging low

Voir aussi