Supposons qu'il y ait deux utilisateurs sur le réseau local, A et B. Comment puis-je restreindre l'accès à Internet de l'utilisateur A à l'aide des règles iptables et enregistrer les règles afin qu'après le redémarrage, elles soient toujours effectives. Supposons également que je veuille accorder l'accès à cet utilisateur à un moment donné ; comment puis-je l'activer à nouveau ? J'utilise Ubuntu Linux 10.04. Ce serait bien si quelqu'un me montrait comment le faire à partir de la ligne de commande, car je me connecte souvent à la machine en utilisant une connexion ssh locale.
Réponse acceptée :
Je suppose que les utilisateurs A et B utilisent la ou les mêmes machines Linux dont vous êtes l'administrateur. (Ce n'est pas tout à fait clair d'après votre question. Si A et B ont leurs propres ordinateurs sur lesquels ils sont administrateurs, c'est un problème complètement différent.)
La commande suivante empêchera l'utilisateur avec l'uid 1234 d'envoyer des paquets sur l'interface eth0
:
iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP
ip6tables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP
Je recommande de lire le guide Ubuntu iptables pour se familiariser avec l'outil (et se référer à la page de manuel pour des choses avancées comme la table mangle).
L'utilisateur pourra toujours exécuter ping (parce que c'est setuid root), mais rien d'autre. L'utilisateur pourra toujours se connecter à un proxy local si ce proxy a été démarré par un autre utilisateur.
Pour supprimer cette règle, ajoutez -D
à la commande ci-dessus.
Pour rendre la règle permanente, ajoutez-la à /etc/network/if-up.d/my-user-restrictions
(faites-en un script exécutable commençant par #!/bin/sh
). Ou utilisez iptables-save
(voir le guide Ubuntu iptables pour plus d'informations).