GNU/Linux >> Tutoriales Linux >  >> Linux

Limitación del acceso al sistema para una aplicación de Linux

¿La aplicación está vinculada estáticamente?

Si no, puede anular algunos símbolos, por ejemplo, redefinamos socket :

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

Luego crea una biblioteca compartida:

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

Vamos a ejecutar:

nc -l -p 6000

Está bien.

Y ahora:

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

Qué sucede cuando ejecutas con la variable LD_PRELOAD=./libtest.so ? Anula los símbolos definidos en libtest.so sobre los definidos en la biblioteca C.


Parece que systrace hace exactamente lo que necesitas. De la página de Wikipedia:

Una aplicación puede realizar solo aquellas llamadas al sistema especificadas como permitidas en la política. Si la aplicación intenta ejecutar una llamada al sistema que no está explícitamente permitida, se genera una alarma.


Esta es una posible aplicación de sandboxing (específicamente, ejecución basada en reglas). Una implementación popular es SELinux.

Deberá escribir la política que corresponda a lo que desea permitir que haga el proceso.


Linux
  1. Una introducción a los firewalls de aplicaciones web para administradores de sistemas Linux

  2. Linux:¿qué aplicación usar para un calendario?

  3. ¿Cómo encontrar la aplicación para un tipo Mime en Linux?

  4. Linux:¿aplicación de captura de pantalla para Rhel6.5?

  5. ¿Cuál es la mejor manera de distribuir una aplicación binaria para Linux?

4 distribuciones de Linux para juegos

Una introducción a bpftrace para Linux

Elegir una impresora para Linux

Terminal Velocity:una aplicación CLI para tomar notas para Linux

Cómo configurar un clúster de Pacemaker para Linux de alta disponibilidad

Zorin OS para principiantes de Linux