Nagios - Configurando níveis de acesso e autenticação centralizada no Active Directory

Há situações em que o administrador Nagios necessita visualizar informações e executar ações em sua interface. Há também empresas onde várias pessoas possuem acesso ao sistema, porém, nem sempre todas elas sabem exatamente o que estão fazendo, podendo prejudicar sensivelmente o monitoramento. É necessário limitar as ações de cada um dentro do sistema.

[ Hits: 23.415 ]

Por: Celso S. Faria em 23/07/2012


Configuração do CentOS 6.2



Aqui, assumimos que o Nagios esteja instalado e funcional, com a autenticação habilitada (default).

Utilizamos neste cenário o quickstart, encontrado em:
Se o Nagios e o Apache foram instalados de forma diferente do demonstrado no quickstart, talvez os arquivos estejam localizados em diretórios diferentes, porém, nada muda em relação à configuração, basta adaptar o path dos arquivos.

Primeiro, vamos configurar o Apache, que é o responsável em realizar a autenticação no AD.

Tenho o hábito de não substituir arquivos de configuração e sim renomeá-los (faça como preferir), então:

# mv /etc/httpd/conf.d/nagios.conf /etc/httpd/conf.d/nagios.conf.orig

Criamos um novo arquivo "nagios.conf" no mesmo local:

# vi /etc/httpd/conf.d/nagios.conf

E inserimos nele o conteúdo a seguir:

# Arquivo: /etc/httpd/conf.d/nagios.conf

ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"

<Directory "/usr/local/nagios/sbin">
   Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all

# Autenticacao Active Directory

   AuthBasicProvider ldap
   AuthType Basic
   AuthzLDAPAuthoritative off
   # Mensagem da janela de autenticação
   AuthName "Nagios - Active Directory Authentication"
   # Caminho LDAP para a base do AD
   AuthLDAPURL "ldap:// 10.100.1.2:3268/dc=pi4,dc=com,dc=br?sAMAccountName?sub?(objectClass=*)"
   # Usuário que realiza as consultas no AD
   AuthLDAPBindDN "cn=nagios,ou=nagios,dc=pi4,dc=com,dc=br"
   # Senha do usuário acima (infelizmente ela fica explícita mesmo)
   AuthLDAPBindPassword P@ssw0rd
   # Grupo de usuários com permissão de acesso ao Nagios
   Require ldap-group cn=nagiosusers,ou=nagios,dc=pi4,dc=com,dc=br
</Directory>


Alias /nagios "/usr/local/nagios/share"

<Directory "/usr/local/nagios/share">
   Options None
   AllowOverride None
   Order allow,deny
   Allow from all

# Autenticacao Active Directory

   AuthBasicProvider ldap
   AuthType Basic
   AuthzLDAPAuthoritative off
   # Mensagem da janela de autenticação
   AuthName "Nagios - Active Directory Authentication"
   # Caminho LDAP para a base do AD
   AuthLDAPURL "ldap:// 10.100.1.2:3268/dc=pi4,dc=com,dc=br?sAMAccountName?sub?(objectClass=*)"
   # Usuário que realiza as consultas no AD
   AuthLDAPBindDN "cn=nagios,ou=nagios,dc=pi4,dc=com,dc=br"
   # Senha do usuário acima (infelizmente ela fica explícita mesmo)
   AuthLDAPBindPassword P@ssw0rd
   # Grupo de usuários com permissão de acesso ao Nagios
   Require ldap-group cn=nagiosusers,ou=nagios,dc=pi4,dc=com,dc=br
</Directory>
# Fim do arquivo: /etc/httpd/conf.d/nagios.conf


Neste ponto, é necessário recarregar o Apache:

# service httpd reload

Pronto. O Apache já está pronto para autenticar os usuários no AD.

Agora configuraremos o arquivo do Nagios que determina os níveis de permissão de acesso.

Vamos fazer uma cópia do arquivo original:

# cp /usr/local/nagios/etc/cgi.cfg /usr/local/nagios/etc/cgi.cfg.orig

Editamos o arquivo:

# vi /usr/local/nagios/etc/cgi.cfg

E alteramos apenas as linhas necessárias:

# certifique-se que esta opção esteja setada para 1 pois ela determina que o acesso ao Nagios deve ser autenticado
use_authentication=1

# informar apenas os usuários que possuem permissão para visualizar informações do sistema (apenas os administradores neste cenário)
authorized_for_system_information=user1,user2

# informar apenas os usuários que possuem permissão para visualizar informações das configurações (apenas os administradores neste cenário)
authorized_for_configuration_information=user1,user2

# informar apenas os usuários que possuem permissão para executar comandos referentes ao sistema (apenas os administradores neste cenário)
authorized_for_system_commands=user1,user2

# informar os usuarios que tem permissao de visualizar os serviços (todos os usuários neste cenário)
authorized_for_all_services=user1,user2,user3,user4

# informar os usuarios que tem permissao de visualizar os hosts (todos os usuários neste cenário)
authorized_for_all_hosts=user1,user2,user3,user4

# informar os usuários que possuem permissão de executar comandos sobre os serviços (apenas os administradores neste cenário)
authorized_for_all_service_commands=user1,user2

# informar os usuários que possuem permissão de executar comandos sobre os hosts (apenas os administradores neste cenário)
authorized_for_all_host_commands=user1,user2

# informar os usuários com permissão read-only (apenas os operadores neste cenário)
authorized_for_read_only=user3,user4


Observe onde cada usuário está citado, para que a permissão seja dada corretamente.

Neste ponto, recarregamos o Nagios:

# service nagios reload

O Nagios também está pronto para autenticar seus usuários no AD e permitir acesso administrativo, ou read-only, de acordo com cada permissão.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução e Configuração
   2. Configuração do CentOS 6.2
   3. Acessos e permissões
Outros artigos deste autor

Integrando Nagios e Google Maps

Openfire integrado em uma floresta Active Directory

Restauração e registro do RedHat após utilização de repositórios CentOS

Apache Mod_Proxy como Front-End de acesso e balanceamento de diversas aplicações web

Servidor Apache hospedando diversos sites com e sem SSL

Leitura recomendada

Virtualização para servidores com VirtualBox

Implementação de serviço de diretórios com OpenLDAP no CentOS 6.3

ZRAM (Compressed RAM) no Debian

Debian NetInstall: instalação personalizada

Habilitar o HTTP/2 no Apache do Ubuntu 16.04/20.04

  
Comentários
[1] Comentário enviado por danniel-lara em 23/07/2012 - 13:15h

muito bom o artigo
parabéns

[2] Comentário enviado por djcelsodub em 23/07/2012 - 14:23h

Obrigado Daniel.

Celso Faria
Americana/SP

[3] Comentário enviado por ismael_farias em 23/07/2012 - 17:24h

Excelente artigo, o poderoso Nagios 100% configurável...

Ismael Farias

[4] Comentário enviado por djcelsodub em 23/07/2012 - 17:27h

O Nagios é realmente poderoso, sabendo explorá-lo não deixa a desejar em nada (exceto por um dashboard mais amigavel). Mas no que ele se propõe a fazer é muito bom!

Obrigado Ismael.


Celso Faria
Americana/SP

[5] Comentário enviado por c4rl em 23/07/2012 - 21:52h

Ótima solução, vlw!

[6] Comentário enviado por djcelsodub em 23/07/2012 - 21:57h

Sempre na busca de novas soluções para antigos problemas rsss

Obrigado c4rl.


Celso Faria
Americana/SP

[7] Comentário enviado por removido em 25/07/2012 - 08:20h

Muito obrigado Celso,

gostaria de saber se há alguma forma de criar vários grupos de acesso ao Nagios, limitando as permissões de acesso diretamente pelo AD, por exemplo, criar grupos "nagios_admin" e "nagios_users", definindo estes grupos no Nagios no usr/local/nagios/etc/cgi.cfg.

Eduardo Hernacki
Blumenau, SC

[8] Comentário enviado por djcelsodub em 25/07/2012 - 09:06h

Bom dia Eduardo,

Primeiramente agradeço por seu comentário.

Infelizmente no Nagios Core as permissões são dadas da forma que expliquei.
No AD você define quem pode se logar na interface no Nagios (autenticação), as permissões são dadas no arquivo cgi.cfg (nível de permissão).


Celso Faria
Americana/SP

[9] Comentário enviado por diramos em 31/07/2012 - 19:28h

Celso,
Artigo excelente. Diz tudo para quem precisa integrar autenticação com o AD e regular as permissões de acesso, via cgi.cfg.
Mas temos mais algumas situações peculiares. Veja:
Na empresa em que trabalho, implantei o Nagios para monitoração da rede, mas também para medir a performance dos monitoradores, no que se refere à reação de eventos.
Então, temos um grupo de terceirizados que além de monitorar a rede, tem que fazer duas coisas:
- Adicionar comentários de hosts e serviços
- Reagendar checagens.
Aí veio meu problema.
Não existe no cgi.cfg uma variável que permita os usuários a fazerem só isso.
Resultado: tive que abrir o código do nagios (os arquivos .c), mexer neles e criar um novo grupo com essas permissões.
Depois, recompilar o Nagios.
Deu certo. Mas foi pauleira.
Então pergunto: Tem como fazer isso, sem mexer no código fonte?

Abraço,

Diramos

[10] Comentário enviado por djcelsodub em 31/07/2012 - 23:41h

Boa noite Diramos,

primeiramente obrigado pelo elogio ao artigo e também por seu comentário.

Realmente seu caso é bem específico e infelizmente o Nagios Core (free) não é tão flexível no quesito "permissões". Sinceramente não sei te dizer nem se o Nagios XI (versão comercial) possa permissionar dessa forma.
Como sugestão (e já que a idéia é muito boa), você pode enviar essa idéia ao desenvolvedor do Nagios para implementação em futuras versões.

Abraço.

Celso Faria
Americana/SP


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts