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").
La solution repose sur nftables qui est assez peu utilisé face à son prédécesseur iptables.
Voir cette page pour plus d'info sur nftables : https://fr.wikipedia.org/wiki/Nftables
EN COURS DE TEST : NONRETOURS VALIDÉAPPRÉCIÉS !!!
On va d'abord trouver l'UID de l'utilisateur Jerry avec la commande :
id -u jerry
Ça nous retourne un nombre. Pour Jerry, l'UID est :
1001
On peut dès lors éditer le fichier de configuration de nftables avec la commande :
sudo nano /etc/nftables.conf
Voici le 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 systemctl enable nftables
sudo systemctl restart nftables
Pour vérifier les règles, taper :
sudo nft list ruleset