¿Usuario / grupo seguro para que rsyslog lea el registro de la aplicación?

2

Tengo una aplicación que escribe un archivo de registro en /var/app/applog.log. Esta aplicación debe iniciarse como root, pero se ejecuta como app: app y también puede ser degradada a nadie: nadie

¿Qué es exactamente nadie: nadie y qué privilegios tiene?
¿Es mejor ejecutar mi aplicación como aplicación: aplicación o nadie: nadie?

El archivo de registro tiene el mismo usuario que el demonio que los crea (aplicación o nobody). Pero por alguna razón pertenece al grupo raíz.

He visto que rsyslog usa el usuario de syslog y, dependiendo de la configuración, usa el grupo adm (he visto muchas guías que recomiendan el uso de este grupo para rsyslog. ¿Qué hace este grupo y es seguro usarlo para rsyslog?)
Mi rsyslog.conf tiene este aspecto:

  

$ FileOwner syslog
  $ FileGroup adm
  $ FileCreateMode 0640
  $ DirCreateMode 0755
  $ Umask 0022
  $ PrivDropToUser syslog
  $ PrivDropToGroup adm


Para que rsyslog pueda leer el registro de mi aplicación, tengo que cambiar el grupo de archivos de registro a adm y, por alguna razón, también tengo que agregar rsyslog al grupo de adm (aunque especifique el grupo adm en conf) para que rsyslog pueda lee el archivo.

¿Qué usuario: grupo deberían ser los archivos de registro y cuál es la forma más segura de permitir que ryslog los lea?

Al final, quiero que mi demonio solo pueda escribir en estos registros y rsyslog solo pueda leerlos. Ningún otro usuario debería poder leer / modificar los registros que no sean root. ¿Alguna idea?

    
pregunta user2284355 12.07.2013 - 18:54
fuente

2 respuestas

4

El usuario nobody pretende ser exactamente eso. Una cuenta de usuario genérica que no pertenece a nadie y no se utiliza para ejecutar ningún servicio. Como tal, tener un archivo propiedad de nobody:nobody es una forma de asegurarse de que solo root tenga acceso pero no sea propiedad de root.

Mi regla de oro sería crear una cuenta de servicio para ejecutar su servicio. De esa manera tienes cosas como httpd ejecutándose como httpd o apache . De esa manera, si existe una vulnerabilidad en su servicio, el daño es limitado. Si, por ejemplo, alguien puede hacer que su sitio web ejecute un comando local, se ejecutará como un usuario que solo puede hacer cosas en /var/www en lugar de permitirles obtener el control completo de su sistema.

Syslog es una interesante. Por lo general, en realidad no importa a qué se ejecuta el servidor de syslog, ya que solo escucha en un socket y escribe archivos. Si su aplicación se registra usando syslog, entonces todo funcionará. Sin embargo, el motor rsyslog puede realizar algunas funciones más avanzadas, como leer un archivo y procesarlo.

Para que rsyslogd lea un archivo, debe poder leer ese archivo. Por lo tanto, en su situación, el archivo de registro de su aplicación debe:

  • Sea legible en todo el mundo
  • Sea propietario legible por el usuario syslog
  • Se puede leer en grupo por el grupo adm

Alternativamente, puedes dejar que rsyslogd siga ejecutándose en la raíz. Por lo general, esto no es ideal, pero dependiendo de la postura de seguridad y los controles de compensación, los riesgos se pueden mitigar en gran medida. En cualquier caso, tendrá que ocurrir alguna reconfiguración.

    
respondido por el Scott Pack 12.07.2013 - 19:46
fuente
1

De wikipedia:

  

En muchas variantes de Unix, "nadie" es el nombre convencional de un usuario   cuenta que no posee archivos, no está en grupos privilegiados y no tiene   Habilidades excepto las que tienen todos los demás usuarios.

adm : el grupo adm se usa para tareas de monitoreo del sistema. Los miembros de este grupo pueden leer muchos archivos de registro en /var/log y pueden usar xconsole. Históricamente, /var/log era /usr/adm (y luego /var/adm ), por lo tanto, el nombre del grupo. No confunda este grupo con admin , los miembros del grupo admin pueden ejecutar programas con privilegios de root, los miembros de adm pueden ver algunos archivos de registro.

Entonces, dependiendo de lo que haya en sus otros registros, debería ser seguro agregar ese usuario ya que solo tiene permiso de lectura.

    
respondido por el Lucas Kauffman 12.07.2013 - 19:42
fuente

Lea otras preguntas en las etiquetas