GNU/Linux >> Tutoriales Linux >  >> Linux

Ejecución de un programa posiblemente dañino en Linux

  • Máquina virtual puede brindarle la mayor seguridad sin reiniciar, pero el menor rendimiento.

  • Otra opción, para una seguridad aún mayor que una máquina virtual:iniciar un CD/DVD/pendrive "en vivo" sin acceso a la unidad de disco duro (desactive temporalmente la unidad de disco duro en BIOS; si no puede, al menos no monte la unidad ni la desmonte, si se monta automáticamente, pero esto es mucho menos seguro)

  • Un docker El contenedor es una alternativa un poco menos segura que una máquina virtual completa. Probablemente la diferencia crucial (en términos de seguridad) entre estos dos es que los sistemas que se ejecutan en Docker en realidad usan el núcleo de su sistema host.

  • Hay programas como aislar que crearán un entorno especial y seguro; esto generalmente se denomina sandbox. - por lo general están basados ​​en chroot, con supervisión adicional - encuentre uno que se adapte a sus necesidades.

  • Un chroot sencillo será menos seguro (especialmente en lo que respecta a la ejecución de programas), aunque tal vez un poco más rápido, pero ... Necesitará crear/copiar un árbol raíz completamente separado y usar montajes de enlace para /dev etc. (ver Nota 1 ¡abajo!). Por lo tanto, en general, no se puede recomendar este enfoque, especialmente si puede utilizar un sandbox más seguro y, a menudo, más fácil de configurar. entorno.

Nota 0: Al aspecto de un "usuario especial", como el nobody cuenta:Esto da apenas seguridad, mucho menos que incluso un simple chroot . Un nobody el usuario aún puede acceder a archivos y programas que han leído y ejecutar permisos establecidos para otro . Puedes probarlo con su -s /bin/sh -c 'some command' nobody . Y si tiene algún archivo de configuración/historial/caché accesible para cualquier persona (por un error o un pequeño agujero de seguridad), un programa que se ejecute con nobody Los permisos de pueden acceder a él, buscar datos confidenciales (como "pass=", etc.) y, de muchas maneras, enviarlos a través de la red o lo que sea.

Nota 1: Como señaló Gilles en un comentario a continuación, un entorno chroot simple brindará muy poca seguridad contra las vulnerabilidades que apuntan a la escalada de privilegios. Un único chroot tiene sentido desde el punto de vista de la seguridad, solo si el entorno es mínimo y consta de programas con seguridad confirmada únicamente (pero aún existe el riesgo de explotar vulnerabilidades potenciales a nivel del kernel), y todos los programas que no son de confianza que se ejecutan en el chroot se ejecutan como un usuario que no ejecuta ningún proceso fuera del chroot. Lo que chroot previene (con las restricciones mencionadas aquí) es la penetración directa del sistema sin escalamiento de privilegios. Sin embargo, como señaló Gilles en otro comentario, incluso ese nivel de seguridad podría ser eludido, lo que permitiría que un programa saliera del chroot.


Utilice una máquina virtual. Cualquier cosa menos no proporciona mucha seguridad.

Hace unos años, podría haber sugerido un usuario dedicado chroot o algo así. Pero el hardware se ha vuelto más poderoso y el software de la máquina virtual se ha vuelto más fácil de usar. Además, los ataques estándar se han vuelto más sofisticados. Ya no hay ninguna razón para no recorrer todo el camino hasta aquí.

Recomendaría ejecutar VirtualBox. Puede configurar la máquina virtual en un par de minutos y luego instalar una distribución de Linux en su interior. La única configuración no predeterminada que recomiendo es la configuración de red:cree una interfaz "NAT" (para comunicarse con el mundo) y una interfaz "solo host" (para que pueda copiar fácilmente archivos hacia y desde el host, y ssh en la máquina virtual). Deshabilite la interfaz NAT mientras ejecuta los programas de sus alumnos¹; habilítelo solo cuando esté instalando o actualizando paquetes de software.

Dentro de la máquina virtual, cree un usuario por estudiante.

¹ Puede restringir la interfaz NAT a una lista blanca de usuarios, pero eso es más avanzado de lo que necesita en una configuración simple y precisa.


aquí hay una explicación muy completa de por qué usar Chroot sigue siendo una opción muy viable, y por qué el sistema operativo completo o la virtualización completa del hardware es especialmente excesivo en escenarios específicos.

no es más que un mito que Chroot no es una función de seguridad. hay herramientas que construirán el sistema de archivos chroot automáticamente para usted, y Chroot está integrado en muchas aplicaciones principales como una función de seguridad útil.

contrariamente a la creencia popular, no todas las situaciones requieren la virtualización completa del sistema operativo o la simulación completa del hardware. esto en realidad puede significar tener más superficie de ataque para tratar de cubrir. a su vez, lo que significa un sistema menos seguro . (supuestamente para administradores de sistemas con menos conocimientos)

las reglas son bastante simples:no ponga nada dentro del chroot que no sea necesario. no ejecute un daemon como root. no ejecute un demonio como cualquier usuario que ejecute un demonio fuera del chroot.

elimine cualquier aplicación insegura, binarios setuid, enlaces simbólicos / enlaces duros colgantes sin propietario. vuelva a montar carpetas innecesarias usando nosuid, noexec y nodev. construya la última versión estable del daemon en ejecución desde la fuente. y, sobre todo, ¡asegure el sistema base!


Linux
  1. Identifique las propiedades de seguridad en Linux usando checksec

  2. Escanee su seguridad Linux con Lynis

  3. Distribuciones populares de Linux para pruebas de seguridad

  4. Pasos de seguridad avanzados para Linux

  5. Mejores prácticas de seguridad de Wordpress en Linux

5 consejos para dominar Linux

Imprimir el tiempo de ejecución de la secuencia de comandos de Shell en Linux

Maneras brillantes de cómo ejecutar un programa en Linux

Cómo escribir y ejecutar un programa C en Linux

Viaje de un programa en C a un ejecutable de Linux en 4 etapas

Seguridad de Linux frente a Windows