GNU/Linux >> Tutoriels Linux >  >> Linux

Limiter l'accès aux appels système pour une application Linux

L'application est-elle liée de manière statique ?

Sinon, vous pouvez remplacer certains symboles, par exemple, redéfinissons socket :

int socket(int domain, int type, int protocol)
{
        write(1,"Error\n",6);
        return -1;
}

Créez ensuite une bibliothèque partagée :

gcc -fPIC -shared test.c -o libtest.so

Courons :

nc -l -p 6000

D'accord.

Et maintenant :

$ LD_PRELOAD=./libtest.so nc -l -p 6000
Error
Can't get socket

Que se passe-t-il lorsque vous exécutez avec la variable LD_PRELOAD=./libtest.so ? Il remplace les symboles définis dans libtest.so par rapport à ceux définis dans la bibliothèque C.


Il semble que systrace fasse exactement ce dont vous avez besoin. De la page Wikipédia :

Une application est autorisée à effectuer uniquement les appels système spécifiés comme autorisés dans la stratégie. Si l'application tente d'exécuter un appel système qui n'est pas explicitement autorisé, une alarme est déclenchée.


Il s'agit d'une application possible du sandboxing (en particulier, l'exécution basée sur des règles). Une implémentation populaire est SELinux.

Vous devrez écrire la politique qui correspond à ce que vous voulez autoriser le processus à faire.


Linux
  1. Gnome Pie - Un lanceur d'applications circulaire (menu) pour Linux

  2. 10 meilleurs lanceurs d'applications pour les postes de travail Linux

  3. Quelle est la meilleure façon de distribuer une application binaire pour Linux ?

  4. Profilage d'applications Linux

  5. Comment compiler une bibliothèque dynamique pour une application JNI sous Linux ?

4 distributions Linux pour les jeux

Une introduction à bpftrace pour Linux

Choisir une imprimante pour Linux

Terminal Velocity - Une application de prise de notes CLI pour Linux

Comment configurer un cluster Pacemaker pour Linux haute disponibilité

Zorin OS pour les débutants Linux