Durante la configuración de mis instancias de servidor virtual, requiero que se creen algunas aplicaciones utilizando make
. ¿Existen riesgos de seguridad asociados con la make
instalación? ¿O debería limpiarlo antes de que se implemente la instancia?
También tengo el gcc
compilador en el servidor que utilizo para crear aplicaciones antes de la implementación.
Respuestas:
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, esto es un obstáculo tan pequeño para un atacante, que cualquier otro argumento que pueda encontrar a favor o en contra de instalar las herramientas de desarrollo pesará más.
Si un atacante pudo penetrar en el sistema hasta el momento, que podría invocar cualquier herramienta que esté presente en el servidor, entonces ya tiene una violación grave de seguridad. Sin las herramientas de desarrollo, hay muchas otras formas de escribir datos binarios en un archivo y luego ejecutar un chmod en ese archivo. Un atacante que quiera usar un ejecutable de compilación personalizado en el sistema en este momento podría construirlo en su propia máquina y transferirlo al servidor.
Hay otras cosas mucho más relevantes a tener en cuenta. Si una pieza de software instalada contiene un error de seguridad, hay algunas formas en que podría exponerse a un atacante:
No esperaría que las herramientas de desarrollo coincidan 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:
Si decide que por razones de seguridad, no permitirá que los usuarios no privilegiados pongan sus propias etiquetas de ejecución en el servidor, entonces lo que debe evitar no son las herramientas de desarrollo, sino más bien los directorios que se pueden escribir para aquellos usuarios en sistemas de archivos montados con permisos de ejecución. Puede que aún se utilicen herramientas de desarrollo incluso en esas circunstancias, pero no es muy probable.
fuente
gcc
no presentan un riesgo mayor que estos. Como usted dice, un atacante que esté en condiciones de utilizar los compiladores instalados en un sistema generalmente podría hacer cosas peores de todos modos, como cargar su propio ejecutable (posiblemente vinculado estáticamente).echo
un archivo binario al servidor utilizando declaraciones posteriores en un archivo. Todo el proceso está automatizado con un script que se encuentra en el mismo enlace.make
es un shell que tiene una sintaxis diferente quebash
.Un compilador como
gcc
es un potenteawk
configurado con un conjunto de sustituciones que el estándarawk
no admite. No es compatible con POSIXsort
ocat
inyecta basura en la salida. Es un editor de texto interactivo (thinkvi
) que está configurado para realizar algunas modificaciones al inicio y luego salir antes de mostrar la interfaz de usuario.No hay nada inherentemente inseguro en ellos, no hacen que su máquina sea más insegura que una en la que tiene
cat
redirección de shell bash + +.fuente
make
en sí está bienmake
es simplemente un marco de automatización y seguimiento de dependencias. Sin embargo, generalmente se usa junto con compiladores, y aquellos que preferiblemente no deberían estar disponibles en un sistema de producción, ya que son completamente innecesarios. Lo mismo es válido para 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 los paquetes que requiere la aplicación.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: las herramientas de embalaje nativas apestan . Ni siquiera te molestes en tratar de asimilarlos. En cambio, echa un vistazo a Jordan Sissel's
fpm
. Hace que el empaque sea una alegría absoluta.fuente
echo
ybase64
. De hecho, incluso puede hacerlo con una serie deecho
declaraciones y ninguna otra herramienta .Por el contrario, el problema potencial no es tener
make
el servidor de producción, el problema potencial es construir las aplicaciones en el servidor de producción en lugar de implementar imágenes precompiladas probadas. Puede haber razones válidas para esta metodología, pero es una de las que argumentaría enérgicamente si me pidieran que la adopte.fuente
Usted pregunta si
make
debería instalarse en un servidor de producción, pero mi pregunta real sería: ¿Quién tiene acceso a ese servidor de producción y qué garantías tiene para hacer frente a una incursión? Simake
no se instaló pero alguien tieneroot
acceso, ¿adivina qué? Se pueden instalar manualmentemake
y lo que quieran.La dura realidad sobre la seguridad de la computadora es tanto como quieras evitar el acceso no deseado, estar obsesionado con bloquear el acceso no es tan importante como:
Todo esto depende de qué tipo de trabajo realice. Trabajo principalmente en el mundo de los servidores web y mi actitud es básicamente que cualquier persona que obtenga acceso al servidor de producción de mí debe demostrar habilidades, conocimiento y madurez. Eso es. A veces lleva 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 fortalecer los servidores.
fuente
make
en sí es inofensivo Todo lo que hace es ejecutar aplicaciones en un orden establecido, dependiendo de las dependencias que especifique y qué archivos ya existen en el sistema. Incluso puede ser útil como parte del proceso de instalación: puede usarlo para colocar archivos preconstruidos donde necesitan ir, o ejecutar pruebas unitarias u otras cosas.Sin embargo, debe considerar para qué exactamente lo quiere usar. A menudo se utiliza en conjunción con los compiladores y otras herramientas para la creación de aplicaciones, y los que se podría utilizar para anular algunas de sus líneas de defensa. Pero
make
no puede hacer estas cosas si las herramientas no están disponibles.fuente