Uno de los principios básicos de la seguridad informática es nunca ejecutar nada que no necesite.
Estaba pgrep
haciendo ping para un proceso hoy cuando noté que mi máquina Ubuntu 9.04 (computadora de escritorio) estaba ejecutando un demonio de servidor git. Después de un juramento rápido, descubrí que el git-daemon-run
paquete se había instalado (probablemente inadvertidamente) y al eliminarlo se eliminó ese proceso (y me aseguré de que no se reiniciara más tarde).
Pero en otros casos, quiero que se instale el paquete del servidor, pero no quiero que se ejecute el demonio del servidor. Por ejemplo, lo uso lighttpd
para pruebas internas (se inicia mediante scripts de prueba específicos para algunas aplicaciones, y solo escucha en localhost en esas configuraciones) pero no quiero que escuche conexiones externas con algún archivo de configuración aleatorio. (Si quisiera ejecutar uno escuchando conexiones externas, lo configuraría y lo ejecutaría yo mismo).
Realmente no me gusta ejecutar todo tipo de servidores aleatorios que no necesito en máquinas expuestas a Internet, ya que quién sabe qué agujeros de seguridad abren. Y prefiero no tener que molestar con los firewalls, ya que esa es otra fuente potencial de errores y configuraciones erróneas que pueden abrir agujeros de seguridad. No es tan difícil tener máquinas Unix configuradas para no iniciar ningún servidor a menos que el administrador se lo solicite específicamente; NetBSD (y OpenBSD también, creo) vienen de esta manera por defecto.
¿Cómo configuro mis sistemas Ubuntu para que nunca inicien ningún tipo de demonio de servidor a menos que le diga específicamente que quiero que se inicie?
(En mi libro, pedir que se instale un paquete no es pedir iniciar un servidor. Si se supone que es, es una interfaz de usuario terrible, ya que muchas instalaciones de paquetes ni siquiera tienen un servidor para iniciar, por lo que es demasiado fácil iniciar un servidor sin darse cuenta sin darse cuenta de que lo ha hecho).
EDITAR: Solo para dejarlo claro, el problema no es que quiera poder detener los servidores existentes. El problema es que no quiero que se inicien nuevos servidores sin una solicitud explícita. Esto significa que debería poder hacer cualquier tarea de administrador de sistemas, como instalar un paquete, y estar seguro de que no se han iniciado servidores. La mayoría de las respuestas no abordan este punto.
Respuestas:
Instale sysv-rc-conf y simplemente desactive los servicios que no desea ejecutar.
fuente
Como alguien con un problema similar, me siento muy fuertemente que es no razonable para un demonio para presumir que el usuario quiere que comenzó por defecto: Hay muchos casos de uso perfectamente válidas cuando esto no sea el caso. (Sin mencionar que no siempre está claro qué instalaciones realmente incluyen un demonio). El demonio podría estar desactivado por defecto, el usuario podría ser consultado explícitamente o podría haber una configuración central. Cualquier otra cosa es el razonamiento Microsoftian completamente indigno de Linux.
Además, encuentro que varios de los comentarios anteriores al póster original son groseros, condescendientes y carecen de constructividad. Sugerir, por ejemplo, que debería aceptar el comportamiento predeterminado o cambiar la distribución, es realmente notable. En primer lugar, ninguna distribución encajará perfectamente, y es poco probable que saltar a una nueva distribución con trabajo adicional asociado sea una solución realista sobre esta única cosa. En segundo lugar, los usuarios competentes de Linux / Unix están acostumbrados a que cada comportamiento sea cambiante: un problema puede demorar dos horas en excavar, pero luego se soluciona. Lo natural que debe hacer un usuario así, cuando los valores predeterminados no son adecuados, es asumir la existencia de una solución alternativa y tratar de averiguar qué es. En tercer lugar, en el código abierto y la etiqueta del software libre,
If you don't like it, then patch the source code!'' is an acceptable response; however,
..., ¡entonces haz una caminata! '' No lo es.fuente
La expectativa del sistema de empaquetado es que cuando instala un paquete de servidor, desea ejecutar ese servidor. Es una expectativa razonable.
Roy ha respondido esta pregunta por ti. Cuando instala un nuevo paquete de servidor, detiene ese servidor y luego usa una herramienta como sysv-rc-conf para evitar que ese servidor se inicie en el próximo reinicio o cambio de nivel de ejecución. Sí, tiene que hacer un trabajo usted mismo, y eso es razonable porque está configurando su sistema de manera diferente a la mayoría de las personas que usan Ubuntu.
Debería invertir algo de tiempo para aprender cómo configurar lighttpd para que esté configurado permanentemente para escuchar solo en localhost. Luego, cuando inicias el servidor, sabes que ya está configurado a tu gusto.
fuente
Encontré lo siguiente útil para instalar Ubuntu en entornos chroot, como debootstrapping de nuevos invitados xen. El crédito en realidad va a los scripts de xen-tools por enseñarme esto:
echo '#! / bin / sh'> /usr/sbin/policy-rc.d
echo 'salida 101' >> /usr/sbin/policy-rc.d
chmod 755 /usr/sbin/policy-rc.d
Con este script en su lugar, apt no iniciará los servicios después de la instalación. Sin embargo, esto es solo la mitad de su problema, ya que los enlaces simbólicos todavía están en su lugar, los servicios comenzarán después del próximo arranque. No sé cómo detener eso automáticamente :(
fuente
invoke-rc.d nginx rotate
en la sección de postrotación estoy usando una versión que es ligeramente diferente gist.github.com/hostmaster/7c25ef4e1e47bc3e2d71Barry Brown, en un comentario sobre la pregunta, proporciona una pista sobre una posible respuesta.
El sistema de empaque utiliza el
invoke-rc.d
programa para iniciar el servidor después de instalar el paquete. [1] Este programa se ejecutará/usr/sbin/policy-rc.d
para determinar la política al iniciar ese servidor.El paquete
policyrcd-script-zg2
incluye elpolicy-rc.d
script, que se ejecuta/etc/policy-rc.d
con sus parámetros si está presente y sale con el código de error de ese script, o sale con 0 (éxito) de lo contrario. Sepolicy-rc.d
espera que la interfaz que se ofrece se documente brevemente en lainvoke-rc.d
gestión, y mucho más ampliamente en/usr/share/doc/sysv-rc/README.policy-rc.d.gz
.El siguiente paso, supongo, es que pruebe esto.
Lo que queda por responder:
[1] ¿Qué otras partes del sistema usan
invoke-rc.d
? [2] ¿Esto realmente funciona?fuente
¿Qué tal mirar en los directorios donde se encuentran los scripts de inicio? Es probable que pueda hacer que esos directorios no se puedan modificar con el comando chatr.
fuente
Idealmente, esto es una cuestión de
post-inst
guiones. Al comienzo del proyecto Ubuntu, se hizo un esfuerzo intencional para forzar los valores predeterminados razonables a los scripts de configuración dpkg, para que usted y yo no tengamos que responder a todas las malditas preguntas que puedan surgir, o perder el tiempo investigando las opciones. Ahora que Ubuntu ha configurado esto, muchas personas no saben que existe. Debería ser posible hacer una pregunta sobre si instalar como demonio o no, pero no veo ninguna de esas preguntas en los pocos paquetes que verifiqué.Quizás debería comprometerse con el equipo del servidor de Ubuntu e incluso con la política de Debian para mejorar las cosas.
fuente
Puede intentar crear un script que verifique la lista de servicios instalados y los verifique con alguna lista de servicios permitidos. Si el servicio no está en la lista, el script lo desactivará. El script debe ejecutarse al inicio antes de los servicios comunes. Y tal vez ejecutar como demonio para cerrar los servicios recién instalados. O, si es posible, ejecutar automáticamente después de cada instalación para buscar nuevos servicios.
PD: Puedo pensar en dos posibles causas de que los servicios comiencen después de la instalación del paquete. Esa es la función del paquete, o esa es la función del administrador de paquetes. Si esa es la función del paquete, no creo que haya alguna forma de cambiar el comportamiento del servicio. Si esa es la función del administrador de paquetes, tal vez haya alguna opción de configuración para evitar el inicio del servicio después de la instalación. No lo sé en este momento, así que solo lanzo ideas.
fuente
Si configura iptables con una política predeterminada de DROP para la cadena INPUT, entonces no tiene que preocuparse tanto por los puertos de escucha porque iptables los bloqueará. El servidor Ubuntu viene con una interfaz fácil de usar para iptables si eres nuevo en iptables.
Desde su publicación, me parece que podría estar más feliz con una distribución de Linux diferente, como CentOS. El proceso de instalación predeterminado para CentOS le permitirá instalar diferentes metapaquetes, y al no seleccionar ninguno, podría estar más feliz con su instalación base.
Además, creo que su pregunta podría haber sido un poco más clara si sustituye 'servicio' o 'demonio' por la palabra 'servidor' cuando se refiere a algo que se ejecuta en un servidor. Las personas tienden a usar 'servidor' para referirse a una caja física o VM. Aunque supongo que no es técnicamente incorrecto.
fuente
Observe en qué nivel de ejecución se encuentra con el comando 'runlevel' y elimine todos los enlaces simbólicos en / etc / rc
<
runlevel> .d /. Probablemente querrás que se ejecuten algunos de los demonios, pero la mayoría probablemente podría eliminarse.Puede agregarlos nuevamente con un enlace simbólico del script en /etc/init.d.
Creo que hay un comando que hará el mismo truco y agregará todos los enlaces simbólicos para todos los niveles de ejecución, pero solo lo hago manualmente.
fuente
Alternativamente, puede usar el
update-rc.d
comando.Para deshabilitar el
apache2
servicioEDITAR:
Este comportamiento está controlado por scripts dentro de paquetes .deb. Cuando instala un paquete, este script se ejecuta automáticamente. IIRC, no podemos pasar por alto este script.
fuente
Básicamente, no puedes.
Si instala un paquete e inicia un servicio, eso es lo que sucede. Si no le gusta, presente un error en https://launchpad.net/ .
No deberías jugar con los paquetes deb. Este tipo de cosas podría volver y morderte el trasero más tarde.
Si desea el estilo de OpenBSD "nada se ejecuta por defecto", ejecute OpenBSD. No todas las distribuciones se adaptan a todos. Es probable que haya cosas en Ubuntu que no te gusten. Si todavía desea ejecutar ubuntu, deberá verificar los servicios en ejecución y apagar las cosas.
fuente
Puede habilitar y deshabilitar algunos servicios en Sistema> Menú Servicios en GNOME
fuente