Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bloquer l'acces internet a certains logiciels d'un utilisateur

2 réponses
Avatar
Yohan Bataille
Bonjour,
je suis root sur une machine (Debian GNU/Linux),
et j'aimerais pouvoir interdire au seul utilisateur de cette machine
l'accès internet pour certains logiciels : navigateur internet...

L'avantage est que l'utilisateur ne peut absolument rien installer sur
cette machine (même pas un firefox dans un dossier et il ne peut pas
compiler).
En conséquence, je connais parfaitement le nom des logiciels à bloquer.
Pour commencer j'ai interdit l'exécution de tout ces logiciels à
cet utilisateur...
Le problème est que certains de ces logiciels doivent quand même pouvoir
être exécuté pour accéder au réseau local.
Il faudrait donc interdire les paquets sortant en direction d'internet.
De plus, je veux laisser l'accès à internet pour deux autres logiciels que
pourrait lancer cet utilisateur (pas de blocage global donc).

Pour l'instant, j'ai essayé avec :
IPChains/Iptables, NuFW, FireFlier, FieryFilter...
Malheureusement je n'ai pas réussi.

Comme je suis root et qu'il n'y a qu'un autre utilisateur sur cette machine
je me demande s'il est possible de bloquer l'accès internet
pour tous les processus qui n'appartiennent pas à root et de mettre les
deux logiciels que je veux autoriser suid root.

La solution que je tente de mettre en place pour le moment est donc :
1) interdire tous les accès internet (mais pas au réseau local) à tous
les logiciels qui appartiennent à cet utilisateur avec "iptables
--uid-owner",
2) mettre les deux logiciels à autoriser suid root.

Pensez-vous qu'il est possible de faire cela de façon plus élégante
(pas de suid root par exemple) ?

Ma solution est-elle faisable ? Je n'ai pas encore testé.

Merci.
Cordialement.

Yohan Bataille

--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.

2 réponses

Avatar
Eric Belhomme
Yohan Bataille wrote in
news::

La solution que je tente de mettre en place pour le moment est donc :
1) interdire tous les accès internet (mais pas au réseau local) à tous
les logiciels qui appartiennent à cet utilisateur avec "iptables
--uid-owner",
2) mettre les deux logiciels à autoriser suid root.

Pensez-vous qu'il est possible de faire cela de façon plus élégante
(pas de suid root par exemple) ?




il serait plus propre d'utiliser iptables pour filtrer les noms de
processus avec la table match :

iptables -N rules_roger
iptables -A OUTPUT -m state --state NEW -m owner --uid-owner roger
-j rules_roger
iptables -A rules_roger -m owner --cmd-owner firefox -j DROP

--
Rico

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Kevin Denis
On 2006-03-08, Yohan Bataille wrote:
Bonjour,
je suis root sur une machine (Debian GNU/Linux),
et j'aimerais pouvoir interdire au seul utilisateur de cette machine
l'accès internet pour certains logiciels : navigateur internet...

L'avantage est que l'utilisateur ne peut absolument rien installer sur
cette machine (même pas un firefox dans un dossier et il ne peut pas
compiler).
En conséquence, je connais parfaitement le nom des logiciels à bloquer.
Pour commencer j'ai interdit l'exécution de tout ces logiciels à
cet utilisateur...
Le problème est que certains de ces logiciels doivent quand même pouvoir
être exécuté pour accéder au réseau local.
Il faudrait donc interdire les paquets sortant en direction d'internet.
De plus, je veux laisser l'accès à internet pour deux autres logiciels que
pourrait lancer cet utilisateur (pas de blocage global donc).

Pour l'instant, j'ai essayé avec :
IPChains/Iptables, NuFW, FireFlier, FieryFilter...
Malheureusement je n'ai pas réussi.

Comme je suis root et qu'il n'y a qu'un autre utilisateur sur cette machine
je me demande s'il est possible de bloquer l'accès internet
pour tous les processus qui n'appartiennent pas à root et de mettre les
deux logiciels que je veux autoriser suid root.

La solution que je tente de mettre en place pour le moment est donc :
1) interdire tous les accès internet (mais pas au réseau local) à tous
les logiciels qui appartiennent à cet utilisateur avec "iptables
--uid-owner",
2) mettre les deux logiciels à autoriser suid root.

Pensez-vous qu'il est possible de faire cela de façon plus élégante
(pas de suid root par exemple) ?

Ma solution est-elle faisable ? Je n'ai pas encore testé.



Ou est le probleme? On met les binaires SGID <groupe> et on met des
regles iptables avec le --gid-owner.
Demonstration (avec le groupe 3 qui est sys):
:/usr/bin/net# ls -l telnet
-rwxr-sr-x 1 root sys 71984 2006-03-10 12:58 telnet*
:/usr/bin/net# iptables -A OUTPUT -p tcp --dport 25
-m owner --gid-owner 3 -j ACCEPT
:/usr/bin/net# iptables -A OUTPUT -p tcp --dport 25 -j REJECT

et donc:
:~$ nc 127.0.0.1 25
(UNKNOWN) [127.0.0.1] 25 (smtp) : Connection refused
:~$ /usr/bin/net/telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 darkstar.local.tux ESMTP Sendmail 8.13.4/8.13.4; Fri, 10 Mar
2006 13:31:23 +0100
quit
221 2.0.0 darkstar.local.tux closing connection
Connection closed by foreign host.
:~$

Et voila. Tu peux donc affiner selon si le reseau de destination est local
ou distant, etc..

--
Kevin

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.