Maestro de Postfix ejecutándose como root

4

¿Ejecutar /usr/lib/postfix/master como una raíz podría causar una amenaza de seguridad? Una nueva instalación, da esto:

root     11622  0.0  0.0   4792  1432 ?        Ss   19:11   0:00 /usr/lib/postfix/master
postfix  11624  0.0  0.0   4812  1324 ?        S    19:11   0:00 pickup -l -t unix -u -c
postfix  11625  0.0  0.0   4856  1344 ?        S    19:11   0:00 qmgr -l -t unix -u
    
pregunta 4m1nh4j1 29.10.2014 - 19:20
fuente

4 respuestas

6

El proceso de Postfix master es el que inicia los otros daemons. En particular, lanza el demonio que entrega el correo localmente; este último debe ser capaz de hacerse pasar por cualquier ID de usuario en el sistema, lo que implica comenzar su vida como root . Por lo tanto, es casi inevitable que el proceso maestro se ejecute como root; de lo contrario, no funcionaría en absoluto.

Por otra parte, el "riesgo" involucrado en el manejo de cosas como root a menudo se sobreestima. Por ejemplo, en mi propio servidor, lo que más temo es que mi máquina se subvierta y se use como un relé para atacar a otras personas. Si un atacante obtiene acceso de root o solo un acceso de "usuario normal" no cambia mucho las cosas a ese respecto.

Existe un hábito generalizado de convertir los daemons root en daemons no root, y luego regocijarse por la "mejora de seguridad". La mejora es real en el escenario mainframe , donde muchos usuarios tienen cuentas de shell en la misma máquina y el atacante es uno de estos usuarios, que intenta acceder a los archivos de otros usuarios. Sin embargo, el modelo de mainframe ha desaparecido en su mayoría (solía ser frecuente en las universidades, pero hoy en día cada estudiante tiene su propia computadora para jugar). Cuando las máquinas son "personales" (por ejemplo, usted tiene su propio servidor y ninguna persona hostil tiene una cuenta en él), los beneficios de ejecutar algunos demonios bajo un UID no root son leves. No daña por sí mismo, pero no justifica salirse de tu camino de manera compleja para "arreglar demonios de raíz".

Lo que hace seguros a los demonios de Postfix es la ausencia de desbordamientos de búfer o vulnerabilidades similares; ejecutarse como no raíz es simplemente una forma de mitigar las consecuencias en caso de que un atacante haya presentado y explotado una vulnerabilidad; y la mitigación no gana mucho cuando la máquina no es un mainframe compartido.

    
respondido por el Tom Leek 29.10.2014 - 19:42
fuente
3

Un servidor que recibe correo electrónico y lo entrega a los usuarios locales necesita permisos de raíz para dos cosas.

  • El componente que escucha las conexiones entrantes debe vincular los puertos TCP para SMTP (25 sin SSL, 465 con SSL), ya que los números de puerto inferiores a 1024 están reservados para los servicios controlados por el administrador y el enlace está reservado a la raíz (o procesos) con la capacidad aplicable en, por ejemplo, Linux).
  • El componente que entrega el correo electrónico debe poder invocar a un agente de entrega de correo , como procmail o maildrop. Estos programas ejecutan el código arbitrario elegido por el usuario que recibe el correo electrónico, por lo que deben ser invocados por un programa que pueda hacerse pasar por cualquier usuario: el programa que invoca debe ejecutarse como root.

La parte de Postfix que se ocupa del envío de correo electrónico no tiene que ejecutarse como root y no como root. La parte que se ocupa de recibir correos electrónicos de máquinas remotas se ejecuta como root porque es necesario.

Es posible ejecutar Postfix u otro MTA completamente como un usuario no root, pero esto viene con restricciones:

  • El administrador debe redirigir las conexiones entrantes al puerto TCP a un puerto diferente por encima de 1024.
  • Solo es posible el reenvío remoto y la entrega directa a un archivo de buzón, no la invocación de un MDA. Además, la entrega local requiere que el componente de entrega pueda escribir los archivos del buzón; Esto se puede lograr con permisos de grupo.
respondido por el Gilles 31.10.2014 - 16:14
fuente
2

Siempre es mejor ejecutar solo procesos no root.

A modo de ejemplo: en caso de que el postfix no sea la única aplicación importante en su sistema, ejecutarlo como root solo reducirá el trabajo para un adversario, ya que al ingresar al proceso maestro del postfix será capaz de llegar a cualquier parte de su sistema (por ejemplo, acceso a todos los FS, descarte otros procesos con información confidencial en ellos, todo tipo de cosas desagradables, básicamente, que un usuario root puede hacer). De lo contrario, (s) tendrá que encontrar / elaborar un exploit de escalado de privilegios. Incluso si Postfix es una aplicación única, es mucho más fácil para un adversario eliminar los registros / ocultar su presencia en el sistema.

Hay una manera de que un proceso no root se enlace a puertos por debajo de 1024:

$ cp -v $(which nc) .
'/bin/nc' -> './nc'

$ ./nc -v -l -p 1025

Listening on [0.0.0.0] (family 0, port 1025)
$ ./nc -v -l -p 25
nc: Permission denied

$ sudo setcap 'cap_net_bind_service=+ep' ./nc

$ ./nc -v -l -p 25
Listening on [0.0.0.0] (family 0, port 25)
Connection from localhost 39964 received!
test

Para obtener más información sobre setcap, consulte enlace

Principio de privilegio mínimo: enlace

    
respondido por el Andrey Arapov 13.05.2018 - 10:16
fuente
1

La razón por la que el proceso maestro debe iniciarse como raíz es porque solo la raíz puede enlazarse a un puerto en el rango de los primeros 1024 puertos "privilegiados".

La ejecución de cualquier tipo de software como root podría considerarse un hilo de seguridad, pero también depende de qué tan seguro esté el software, y si las actualizaciones / parches se aplican regularmente.

Si desea agregar una capa adicional de seguridad, podría considerar lo siguiente:

  1. Configure Postfix para escuchar en un puerto por encima de 1024.
  2. Ejecute el demonio maestro de Postfix como el postfix del usuario.
  3. Configure las tablas de IP para reenviar TCP / 25 al puerto TCP configurado en el paso 1.

También considere esto: ¿Confía en iptables más que en Postfix desde una perspectiva de seguridad?

    
respondido por el Jeroen - IT Nerdbox 30.10.2014 - 07:21
fuente

Lea otras preguntas en las etiquetas