Skip to main content

Blocage d'Internet pour les sessions élèves

Il peut arriver qu'on ne veuille pas que les élèves en maternelle (utilisateur "Jerry") aient accès à Internet tout en gardant cette possibilité pour le compte Poe de l'enseignant⋅e et les autres élèves (utilisateurs "Koda et "Leon").
Voici ci-dessous laLa solution proposéerepose parsur Yannick-Gabrielnftables Defaisqui est ilassez paramètrepeu leutilisé pare-feuface UFWà existantson dansprédécesseur Primtux.iptables.
Voir cette page pour plus d'info sur UFWnftables : https://doc.ubuntu-fr.wikipedia.org/ufwwiki/Nftables 

EN COURS DE TEST : NON VALIDÉ !!!

On éditeva led'abord fichiertrouver "before.rules"l'UID de UFWl'utilisateur Jerry avec la commande :

sudoid nano-u /etc/ufw/before.rulesjerry

EtÇa onnous ajouteretourne dansun lanombre. sectionPour Filter, avant la ligne finale COMMIT, les lignes suivantes concernantJerry, l'utilisateurUID "jerry"est :

# Bloquer internet pour Jerry (maternelle) tout en gardant le LAN
-I ufw-before-output -m owner --uid-owner jerry -o lo -j ACCEPT
-I ufw-before-output -m owner --uid-owner jerry -d 192.168.0.0/16 -j ACCEPT
-I ufw-before-output -m owner --uid-owner jerry -j DROP1001

PourOn terminer,peut ondès activelors etéditer relancele UFWfichier de configuration de nftables avec lesla commandes suivantescommande :

sudo ufwnano enable
sudo ufw reload/etc/nftables.conf

CeVoici paramétragele contenu initial :

#!/usr/sbin/nft -f

flush ruleset

table inet filter {
        chain input {
                type filter hook input priority filter;
        }
        chain forward {
                type filter hook forward priority filter;
        }
        chain output {
                type filter hook output priority filter;
        }
}

On va alors ajouter dans la partie "chain output", les règles pour l'utilisateur ayant l'UID 1001 qui est Jerry :

#!/usr/sbin/nft -f

# Paramètres à adapter selon l'UID de Jerry et votre réseau LAN
# Il suffit d'initialiser les variables nécessaires uniquement dans cette partie
define UTILISATEUR = 1001
define LAN = 192.168.1.0/24

# Suppression des règles existantes (remise à zéro)
flush ruleset

# Règles à appliquer
table inet filter {
    chain input {
        type filter hook input priority filter;
    }

    chain forward {
        type filter hook forward priority filter;
    }

    chain output {
        type filter hook output priority 0;
        # les règles "accept" doivent précéder les règles "drop" !!!
        # Loopback / localhost
        meta skuid $UTILISATEUR oif lo accept
        # LAN IPv4
        meta skuid $UTILISATEUR ip daddr $LAN accept
        # LAN IPv6
        meta skuid $UTILISATEUR ip6 daddr { fe80::/10, fc00::/7 } accept
        # Blocage total Internet
        meta skuid $UTILISATEUR drop
    }
}

On applique la config avec cette commande :

sudo nft -f /etc/nftables.conf

Pour rendre cette règle pérenne au démarrage, taper les commandes :

il
sudo permetsystemctl queenable cesnftables
sudo systemctl restart nftables

Pour vérifier lesglesgles, detaper filtrage:

s'applique
sudo automatiquementnft àlist chaqueruleset
démarrage de l'ordinateur sous Primtux, empêchant l'utilisateur "Jerry" d'accéder à Internet.