GNU/Linux >> Tutoriels Linux >  >> Linux

Comment désactiver la création de socket pour un processus Linux, pour le sandboxing ?

ptrace semble être l'outil le plus évident mais à part ça…

util-linux[-ng] a une commande unshare , qui utilise le clone du noyau /unshare interfaces. Si vous exécutez le nouveau processus via unshare -n (ou clone(CLONE_NEWNET) ), tous les sockets réseau qu'il crée se trouvent dans un espace de noms différent. Cela ne résout pas le problème des ressources du noyau, mais cela met le processus en bac à sable.

Le noyau Linux prend également en charge seccomp, un mode entré avec prctl(PR_SET_SECCOMP, 1) qui empêche le processus (enfin, le thread, vraiment) d'appeler des appels système autres que read , write , exit , et sigreturn . C'est un bac à sable assez efficace mais difficile à utiliser avec du code non modifié.

Vous pouvez définir un domaine SELinux qui interdit socket /bind /etc. appels et effectuer une transition dynamique vers ce type. Cela nécessite (évidemment) un système avec une politique SELinux appliquant activement. (Peut-être que des choses similaires sont possibles avec AppArmor et TOMOYO, mais je ne connais aucun d'entre eux.)


Jetez un œil à systrace - pas limité aux sockets, mais un générateur/exécuteur de politique d'appel système générique. Citation :

Le portage GNU/Linux est terminé et le correctif du noyau est maintenu activement par Marius Eriksen. Peut être exécuté sans modification du noyau à l'aide du backend ptrace.

Avis de non-responsabilité :je ne l'ai jamais essayé sous Linux.


Linux
  1. Comment installer vtop sur Linux

  2. Comment désactiver une commande spécifique pour un utilisateur spécifique sous Linux

  3. Comment fonctionne copy_from_user du noyau Linux en interne ?

  4. Comment coder un module du noyau Linux ?

  5. Comment définir l'ID de processus sous Linux pour un programme spécifique

Comment tuer un processus sous Linux

Comment tuer un processus sous Linux

Comment désactiver Swap sous Linux

Comment désactiver la connexion SSH pour l'utilisateur root sous Linux ?

Comment utiliser kdump pour l'analyse de plantage du noyau Linux

Comment vérifier la taille du tas pour un processus sous Linux