¿Es seguro que make esté instalado en un servidor de producción?

¿Es seguro que make esté instalado en un servidor de producción?

Durante la configuración de mis instancias de servidor virtual, necesito que algunas aplicaciones se creen usando make. ¿Existe algún riesgo de seguridad asociado con la makeinstalación? ¿O debería limpiarlo antes de implementar la instancia?

También tengo el gcccompilador en el servidor que uso para crear aplicaciones antes de la implementación.

Respuesta1

Algunas personas argumentarán que la presencia de herramientas de desarrollo en una máquina de producción facilitará la vida de un atacante. Sin embargo, este es un pequeño obstáculo para un atacante, que cualquier otro argumento que pueda encontrar a favor o en contra de la instalación de las herramientas de desarrollo tendrá más peso.

Si un atacante pudo penetrar el sistema hasta el punto de poder invocar cualquier herramienta presente en el servidor, entonces ya tiene una grave violación de seguridad. Sin herramientas de desarrollo, existen muchas otras formas de escribir datos binarios en un archivo y luego ejecutar un chmod en ese archivo. Un atacante que quiera utilizar un ejecutable de compilación personalizado en el sistema en este momento también podría compilarlo en su propia máquina y transferirlo al servidor.

Hay otras cosas mucho más relevantes a las que prestar atención. Si una pieza de software instalada contiene un error de seguridad, hay algunas formas en que podría quedar expuesta a un atacante:

  • El paquete podría contener un ejecutable suid o sgid.
  • El paquete podría estar iniciando servicios en el sistema.
  • El paquete podría instalar scripts que se invocan automáticamente en determinadas circunstancias (esto incluye trabajos cron, pero los scripts podrían ser invocados por otros eventos, por ejemplo, cuando cambia el estado de una interfaz de red o cuando un usuario inicia sesión).
  • El paquete podría instalar inodos del dispositivo.

No esperaría que las herramientas de desarrollo coincidieran con una de las anteriores y, como tal, no es un paquete de alto riesgo.

Si tiene flujos de trabajo en los que utilizaría las herramientas de desarrollo, primero debe decidir si son flujos de trabajo razonables y, si lo son, debe instalar las herramientas de desarrollo.

Si descubre que realmente no necesita esas herramientas en el servidor, debe abstenerse de instalarlas por varias razones:

  • Ahorra espacio en disco, tanto en el servidor como en las copias de seguridad.
  • Menos software instalado hace que sea más fácil rastrear cuáles son sus dependencias.
  • Si no necesita el paquete, no tiene sentido correr el riesgo de seguridad adicional al instalarlo, incluso si ese riesgo de seguridad es pequeño.

Si decide que, por razones de seguridad, no permitirá que los usuarios sin privilegios coloquen sus propios archivos ejecutables en el servidor, entonces lo que debe evitar no son las herramientas de desarrollo sino los directorios en los que aquellos usuarios pueden escribir en sistemas de archivos montados con permisos de ejecución. Es posible que las herramientas de desarrollo sigan siendo útiles incluso en esas circunstancias, pero no es muy probable.

Respuesta2

makees un shell que tiene una sintaxis diferente a la de bash.

Un compilador como este gcces un potente awkconfigurado con un conjunto de sustituciones que el estándar awkno admite. No es compatible con POSIX sorto catinyecta basura en la salida. Es un editor de texto interactivo (piense vi) que está configurado para realizar algunas ediciones al inicio y luego salir antes de mostrar la interfaz de usuario.

No hay nada intrínsecamente inseguro en ellos, no hacen que su máquina sea más insegura que una en la que tiene bash + cat+ redirección de shell.

Respuesta3

makeen sí está bien. makees simplemente un marco de automatización y seguimiento de dependencias. Sin embargo, normalmente se usa junto con compiladores, y es preferible que no estén disponibles en un sistema de producción, ya que son completamente innecesarios. Lo mismo se aplica a todos los paquetes innecesarios, ya sean bibliotecas compartidas, intérpretes, etc. El software instalado en los sistemas de producción debe controlarse estrictamente y solo deben estar presentes aquellos paquetes que la aplicación requiere.

Debería crear su aplicación en un servidor de compilación, empaquetarla y luego implementar el paquete binario en sus sistemas de producción.

Nota: herramientas de empaquetado nativaschupar. Ni siquiera te molestes en intentar asimilarlos. En su lugar, echa un vistazo a Jordan Sissel.fpm. Hace que el embalaje sea un auténtico placer.

Respuesta4

Usted pregunta si makedebería instalarse en un servidor de producción, pero mi verdadera pregunta sería: ¿Quién tiene acceso a ese servidor de producción y qué salvaguardas tiene para hacer frente a una incursión? Si makeno estaba instalado pero alguien obtiene rootacceso, ¿adivinen qué? Pueden instalar manualmente makey lo que quieran.

La dura realidad sobre la seguridad informática es que por mucho que quieras evitar el acceso no deseado, obsesionarte con bloquear el acceso no es tan importante como:

  1. ¿Quién tiene acceso al servidor?
  2. ¿Qué puedes hacer para recuperarte de las consecuencias de un robo?

Todo esto depende del tipo de trabajo que hagas. Trabajo principalmente en el mundo de los servidores web y mi actitud es básicamente que cualquiera que obtenga acceso al servidor de producción de mi parte debe demostrar habilidades, conocimientos y madurez. Eso es todo. A veces tarda unos días. A veces lleva meses. Pero básicamente, su mejor línea de seguridad en los servidores de producción es controlar el acceso además de otras cosas que hacemos para proteger los servidores.

información relacionada