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 où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 :
sudo permetsystemctl queenable cesnftables
sudo systemctl restart nftables
Pour vérifier les règlesgles, detaper filtrage:
sudo automatiquementnft àlist chaqueruleset