W . A . X . O
ncc-1701
LINUX - UNIX




NETFILTER - IPTABLES et UFW

NETFILTER

  • Le projet netfilter a été lancé en 1998 par Rusty Russell, qui était aussi l'auteur du programme précédent de firewall du noyau Linux, IPCHAINS.
  • NETFILTER est le module du noyau Linux (https://www.kernel.org) qui implémente un Firewall depuis la version 2,4 du noyau Linux.
  • URL Site officiel : https://www.netfilter.org
  • L'écriture des régles du firewall se fait à l'aide d'un logiciel spécifique.
  • NFtables a été le premier.
  • IPtables a succédé à nftables
  • UFW simplifie l'écriture des régles IPtables.

IPTABLES

1 - Lister les règles iptables en cours

    sudo iptables -L
    

2 - Ajouter une règle de bannissement à iptables

    sudo iptables -I INPUT -s X.X.X.X -j DROP
    

3 - Retirer une règle iptables

    sudo iptables -L INPUT --line-numbers
    

    sudo iptables -D INPUT 28
    


UFW - Uncomplicated FireWall

1 - C'est quoi UFW ?

  • UFW est un outil d'écriture de régles NETFILTER / IPTABLES qui propose une syntaxe plus simple que celle d'iptables. Mais Iptables est plus complet (Règles NAT par exemple).
  • Documentation : https://doc.ubuntu-fr.org/ufw

2 - Installation de UFW

  • Installation de UFW
    sudo apt-get install ufw

3 - Activation et désactivation de UFW

  • Activer le service UFW (ce qui active les régles par défaut)
    sudo ufw enable
  • Régles par défaut de UFW
  • Tout est interdit en entrée.
  • Tout est autorisé en sortie.
  • Attention, l'activation du service met d'emblée en place des règles de protection. La connexion SSH utilisée pour faire cela n'est pas coupée, mais plus aucune autre connexion SSH n'est possible. Pour revenir en arrière, il faut déasctiver UFW pour pouvoir à nouveau faire une connexion SSH.
  • Désactiver le service UFW
    sudo ufw disable

4 - Mise en place des règles de base de UFW : règles par défaut + règles SSH

  • Mettre en place les régles AVANT d'activer UFW
  • Interdire toutes les connexions entrantes
    sudo ufw default deny incoming
  • Autoriser toutes les connexions sortantes
    sudo ufw default allow outgoing
    
  • Autoriser les connexions SSH
  • Autoriser les connexions SSH sur le port par défaut (22)
    sudo ufw allow ssh
  • Autoriser les connexion SSH sur le port 2244
    sudo ufw allow 2244/tcp
  • => A partir de ce moment là, il est possible de se déconnecter et de se reconnecter via SSH.
  • Activer les règles définies en activant UFW
    sudo ufw enable

5 - Scripts UFW mis à disposition

  • Une série de scripts UFW sont mis à disposition de UFW dès l'installation.
  • Les script se trouve dans /etc/ufw/applications.d
    ls /etc/ufw/applications.d/
    openssh-server  ufw-bittorent  ufw-directoryserver  ufw-fileserver   ufw-mailserver   ufw-proxyserver
    postfix         ufw-chat       ufw-dnsserver        ufw-loginserver  ufw-printserver  ufw-webserver
    
  • Exemple du script Postfix : /etc/ufw/applications.d/postfix
    [Postfix]
    title=Mail server (SMTP)
    description=Postfix is a high-performance mail transport agent
    ports=25/tcp
    
    [Postfix SMTPS]
    title=Mail server (SMTPS)
    description=Postfix is a high-performance mail transport agent
    ports=465/tcp
    
    [Postfix Submission]
    title=Mail server (Submission)
    description=Postfix is a high-performance mail transport agent
    ports=587/tcp
    
  • Activer les autorisations d'un script
    sudo ufw allow "Postfix"
    sudo ufw allow "Postfix SMTPS"

6 - Lister les règles actives de UFW

  • Afficher les régles UFW avec numérotation
    sudo ufw status numbered
    Status: active
    
         To                         Action      From
         --                         ------      ----
    [ 1] 2244/tcp                   ALLOW IN    Anywhere                  
    [ 2] WWW Full                   ALLOW IN    Anywhere                  
    [ 3] 5666/tcp                   ALLOW IN    Anywhere                  
    [ 4] 2244/tcp (v6)              ALLOW IN    Anywhere (v6)             
    [ 5] WWW Full (v6)              ALLOW IN    Anywhere (v6)             
    [ 6] 5666/tcp (v6)              ALLOW IN    Anywhere (v6)   
    
  • Retirer une règle
    sudo ufw delete 2

7 - Règles UFW pour Serveurs Web (Apache, Nginx etc)

  • Utilisation du script /etc/ufw/applications.d/ufw-webserver
  • Autoriser les ports 80
    sudo ufw allow "WWW"
  • Autoriser les ports 443
    sudo ufw allow "WWW Secure"
  • Autoriser les ports 80 et 443
    sudo ufw allow "WWW Full"

8 - Restriction d'un service à une @ip

  • Exemple de restriction du service SSH à une seul adresse @ip
    sudo ufw allow from X.X.X.X to any port 22

9 - Bannir une @ip

  • Bannir une @ip
    sudo ufw deny from X.X.X.X
  • Vérifier le bannissement dans les règles UFW
    [ 1] WWW Full                   ALLOW IN    Anywhere                  
    [ 2] 5666/tcp                   ALLOW IN    Anywhere                  
    [ 3] 2244                       ALLOW IN    X.X.X.X             
    [ 4] 2244                       ALLOW IN    Y.Y.Y.Y
    [ 5] Anywhere                   DENY IN     Z.Z.Z.Z                
    [ 6] WWW Full (v6)              ALLOW IN    Anywhere (v6)             
    [ 7] 5666/tcp (v6)              ALLOW IN    Anywhere (v6)
    

10 - UFW et Reboot

  • Si la machine reboot lorsque UFW est désactivé, UFW reste désactivé.
  • Si la machine reboot lorsque UFW est activé, UFW reste activé avec les régles définies au moment du reboot.