string(14) "attribute >>>>" array(0) { } string(14) "attribute >>>>" array(0) { } string(14) "attribute >>>>" array(0) { } string(14) "attribute >>>>" array(0) { }

Administración de Usuarios en Nagios

string(14) "attribute >>>>" array(0) { }
news and informations automotive,business,crime,health,life,politics,science,technology,travelautomotive,business,crime,health,life,politics,science,technology,travel

A menudo, son múltiples los usuarios en una organización quieren tener acceso a Nagios. Para hacer frente a los diferentes requisitos que podemos encontrarnos en las empresas podemos usar varios enfoques. En este post se analiza brevemente cada técnica para ayudarnos a decidir qué funcionará mejor para nuestra organización.

Un administrador y una cuenta RO compartida

Este escenario es común en las organizaciones que se iniciaron en Nagios siendo pequeñas y están creciendo, o para entornos de empresas de desarrollo, donde el control de acceso granular no es crítico.

En este modo, el administrador de Nagios sólo tiene que definir una cuenta en el archivo de configuración CGI con derechos de administrador y una segunda cuenta con acceso de sólo lectura. La cuenta de sólo lectura puede o no tener la capacidad de realizar acciones basadas en GUI, como volver a enviar los chequeos de servicios, acusar recibo de problemas de servicio o de host, o deshabilitar las notificaciones. Si un administrador decide permitir estas acciones dependerá de las políticas locales de seguridad y del nivel de confianza que tiene con sus usuarios.

Un administrador y múltiples cuentas RO

En las organizaciones en las que Nagios se implementa en entornos de producción, o el número de usuarios que chequean de forma activa Nagios es mayor, o si hay grupos de usuarios que necesitan acceso a grupos específicos de chequeos este escenario funciona bien. Las cuentas de solo lectura podrían ser cuentas compartidas utilizadas por grupos de personas. Las cuentas incluso podría asignarse a grupos de correo electrónico.

Por ejemplo, si una organización tiene un alias de correo electrónico windows_admins, el administrador puede crear un usuario Nagios llamado windows_admins. El usuario windows_admins usaría la dirección de correo windows_admins y la cuenta tendría acceso limitado a sólo los servidores de Windows en la red de la organización, haciendo uso de los controles de acceso de grano fino en el archivo de configuración de Nagios CGI.

Múltiples administradores, múltiples cuentas semiprivilegiadas y una cuenta RO

En este escenario podría usarse un marco de single-sign-on usando LDAP para centralizar el acceso. Aunque Nagios no soporta directamente LDAP, pueden usarse una serie de módulos LDAP para Apache para autenticar a los usuarios, incluyendo mod_authnz_ldap.

El problema de usar LDAP directamente de esta manera es que para cada usuario LDAP, tendrían que añadirse entradas al archivo de configuración CGI para dar permisos al usuario que se extiendan más allá de los roles concedidos al usuario por defecto.

Por esta razón, se recomienda que un administrador configure un script que se ejecute cada noche para consultar y escribir el archivo de configuración CGI para cada usuario. Los roles deseados se pueden mantener en una base de datos u otro almacén de archivos, y el script puede crear todas las configuraciones de usuario y el archivo de configuración principal de CGI para dar los permisos de grano fino necesarios para una gran organización.

Alta de un usuario en Nagios

Los usuarios en Nagios se deben dar de alta en el archivo “/opt/nagios/etc/htpasswd.users”, luego se crea una entrada en “/opt/nagios/etc/contacts.cfg” y se añade al grupo pertinente.

Entramos en el servidor de Nagios y ejecutamos el comando htpasswd sobre el fichero “/opt/nagios/etc/htpasswd.users” con el usuario que queremos añadir (aquí como ejemplo está pgomez):

# cd /opt/nagios/etc
# htpasswd htpasswd.users pgomez
New password: ******
Re-type new password: ******
Adding password for user pgomez

Editamos el archivo de “/opt/nagios/etc/objects/contacts.cfg” y añadimos la entrada de contact para “pgomez”:

define contact{
contact_name                    pgomez
use                             generic-contact
alias                           Pedro Gomez
email                           pedro.gomez@dominio.com
}

Añadimos el nuevo contacto al grupo de contactos que corresponda:

define contactgroup{
contactgroup_name       admins
alias                   Nagios Administrators
members                 nagiosadmin,pgomez
}

Para cambiar la contraseña de un usuario solo tenemos que ejecutar el primer punto.

Configurar un usuario para ver Hosts y Servicios específicos

Creamos la definición del contacto para el cliente:

define contact{
    contact_name                    customer1
    alias                           Customer One Admin
    service_notification_period     24x7
    host_notification_period        24x7
    service_notification_options    c,r
    host_notification_options       d,r
    service_notification_commands   notify-service-by-email
    host_notification_commands      notify-host-by-email
    email                           customer1@domain.tld
}

Creamos un grupo de contactos o añadimos el nuevo contacto a un grupo ya existente, dependiendo de los chequeos que queramos permitir:

define contactgroup {
    contactgroup_name               Dedicated-Server1-Admins
    alias                           Admins for Server 1
    members                         customer1,hostingadmins
}

Usamos el nuevo grupo con los correos de los clientes y nuestro administrador principal:

define host {
    use                            generic-host
    host_name                      Server1
    alias                          Server1
    address                        10.0.0.2  // private or public ip
    hostgroups                     DedicateServers
    check_command                  check-host-alive
    contact_groups                 Dedicated-Server1-Admins
    check_period                   24x7
    max_check_attempts             10
    notification_interval          480
    notification_period            24x7
    notification_options           d,r
    notifications_enabled          1
}

define service {
    use                            generic-service
    host_name                      Server1
    service_description            HTTP
    is_volatile                    0
    check_period                   24x7
    max_check_attempts             3
    normal_check_interval          5
    retry_check_interval           3
    contact_groups                 Dedicated-Server1-Admins
    notification_interval          480
    notification_period            24x7
    notification_options           w,u,c,r
    check_command                  check_http
    notifications_enabled          1
}

En este caso hemos creado un nuevo grupo y hemos añadido los contactos y clientes.

Por último añadimos el usuario htaccess a nuestro archivo htpasswd (htpasswd.users).  El nombre de usuario debe coincidir con el contacto.   En este ejemplo es customer1.

Tras esto, reiniciamos Nagios.