Désactiver la mise en réseau pour des utilisateurs spécifiques

16

Je travaille sur la distribution Ubuntu / Mint destinée à être exécutée en direct. Il existe plusieurs comptes qui se répartissent en trois groupes généraux: Admin, Internet et Sécurité.

  • L'administrateur a évidemment le pouvoir de faire quoi que ce soit.
  • Le compte Internet sert à utiliser Internet.

Les autres comptes sont des comptes de sécurité . En aucun cas, la mise en réseau Internet, imprimante, Bluetooth, appareils WiFi, etc. n'est autorisée.

Ce que j'aimerais faire, c'est supprimer les pilotes réseau du noyau, mais cela désactiverait les comptes qui ont besoin d'Internet.

Quels sont les moyens les plus bas pour désactiver Internet pour ces comptes de sécurité? Je recherche des solutions impossible à connecter .

bambuntu
la source

Réponses:

14

Vous pouvez le faire avec iptables.

Sur un terminal, ajoutez la règle à iptables

sudo iptables -A OUTPUT -p all -m owner --uid-owner username -j DROP

nom d'utilisateur est l'utilisateur dont vous souhaitez désactiver la connexion Internet. Enregistrez le fichier et quittez.

Cela ajoutera une règle iptablesindiquant que tous les packages sortants créés par l'utilisateur spécifié seront automatiquement ignorés iptables.

Si vous voulez faire la même chose pour un groupe complet, je suggère qu'au lieu d' --uid usernameutiliser vous --gid-owner groupname, cela aura le même effet pour un groupe d'utilisateurs complet.

Donc, pour empêcher le groupe Security d'accéder à Internet, la commande ressemblerait à ceci

sudo iptables -A OUTPUT -p all -m owner --gid-owner security -j DROP

Pour rendre la règle permanente, vous pouvez créer un script /etc/network/if-up.d/, y ajouter les lignes nécessaires et le rendre exécutable.


En option, utilisez iptables-savepour enregistrer vos règles actuelles et les restaurer au démarrage.

Enregistrez les iptablesrègles actuelles

sudo iptables-save > /etc/iptables_rules

Ouvrez /etc/rc.localavec votre éditeur de texte préféré et à la fin du fichier, ajoutez

/sbin/iptables-restore < /etc/iptables_rules

Cela restaurera les règles enregistrées à chaque démarrage.

Pour plus d'informations, visitez la iptablespage [ manpage ] pour plus d'informations sur plusieurs iptablesoptions.

Bruno Pereira
la source
Merci. Cela a fonctionné pour Internet, mais cet utilisateur peut toujours utiliser le bluetooth. Je teste le sans fil mais je n'ai pas confirmé. Il semble que le compte soit bloqué sur DENY. J'ai essayé sudo iptables -A OUTPUT -p all -m owner --uid-owner internet -j ACCEPTmais cela ne l'a pas réactivé pour les tests.
bambuntu
Ok, iptables semble être un filtre pour quelque chose de plus bas qui établit réellement la connexion réseau. Quelle est l'application permettant la connexion? Puis-je le désactiver? Si tel est le cas, désactivez basé sur qui contrôle la console. Cette distribution en direct est destinée à plusieurs utilisateurs, mais pas à plusieurs consoles. Donc, si je peux suivre qui utilise la console, je pense que je pourrai désactiver cette application réseau en fonction des autorisations des utilisateurs.
bambuntu
Eh bien, ce serait votre gestionnaire de réseau dans Ubuntu, ce serait network-manager, si vous supprimez un utilisateur du groupe networket désactivez la connexion dans network-managerou un autre outil similaire, il ne sera pas en mesure de le récupérer à nouveau, dans l'autre main, l'utilisateur qui fait partie du groupe réseau. C'est un autre niveau de pensée car il désactive la connexion elle-même.
Bruno Pereira
Après un peu de recherche sur Google, j'ai découvert que vous pouvez supprimer le gestionnaire de réseau et configurer les choses Ubuntu traditionnellement en éditant / etc / network / interfaces . Cela ne semble pas être l'application réseau que je cherche à désactiver. Je regarde un peu plus bas. Jusqu'où pouvons-nous descendre avant d'arriver au conducteur?
bambuntu
J'ai pu supprimer et purger le gestionnaire de réseau. À ce stade, la mise en réseau a été désactivée. Mais, j'ai pu ramener les choses avec ceci: sudo /etc/init.d/networkingaprès l'édition /etc/network/interfaces Alors, c'est /etc/init.d/networkingaussi bas que vous allez?
bambuntu
2

La solution de Bruno est bonne: je pense que c'est probablement la meilleure solution autonome.

Une autre option à laquelle vous pouvez penser est de configurer un pare-feu / proxy sur une machine distincte, en tant que passerelle vers Internet, qui autorise uniquement les connexions qui fournissent une authentification par utilisateur. Vous pouvez utiliser les deux ensemble pour une protection supplémentaire.

poolie
la source