GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Einschränken des Syscall-Zugriffs für eine Linux-Anwendung

Ist die Anwendung statisch gelinkt?

Wenn nicht, können Sie einige Symbole überschreiben, zum Beispiel definieren wir socket neu :

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

Erstellen Sie dann eine gemeinsam genutzte Bibliothek:

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

Lass uns laufen:

nc -l -p 6000

Okay.

Und jetzt:

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

Was passiert, wenn Sie mit der Variablen LD_PRELOAD=./libtest.so laufen ? Es überschreibt mit Symbolen, die in libtest.so definiert sind, die in der C-Bibliothek definierten.


Es scheint, dass Systrace genau das tut, was Sie brauchen. Von der Wikipedia-Seite:

Eine Anwendung darf nur die Systemaufrufe ausführen, die in der Richtlinie als zulässig angegeben sind. Wenn die Anwendung versucht, einen Systemaufruf auszuführen, der nicht ausdrücklich erlaubt ist, wird ein Alarm ausgelöst.


Dies ist eine mögliche Anwendung von Sandboxing (insbesondere regelbasierte Ausführung). Eine beliebte Implementierung ist SELinux.

Sie müssen die Richtlinie schreiben, die dem entspricht, was Sie dem Prozess erlauben möchten.


Linux
  1. Eine Einführung in Web Application Firewalls für Linux-Systemadministratoren

  2. Linux – Welche Anwendung für einen Kalender verwenden?

  3. Wie finde ich die Anwendung für einen Mime-Typ unter Linux?

  4. Gnome Pie – Ein kreisförmiger Anwendungsstarter (Menü) für Linux

  5. Die 10 besten Anwendungsstarter für Linux-Desktops

4 Linux-Distributionen für Spiele

Eine Einführung in bpftrace für Linux

Auswählen eines Druckers für Linux

Terminal Velocity – Eine CLI-Notizanwendung für Linux

So richten Sie einen Pacemaker-Cluster für Linux mit hoher Verfügbarkeit ein

Zorin OS für Linux-Neulinge