Todos conhecem o Nagios e sua capacidade e flexibilidade para realizar monitoramento de ambientes de redes. Há situações em que o admin 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, por exemplo, desabilitar notificações ou mesmo verificações de hosts e serviços, prejudicando sensivelmente o monitoramento. É necessário limitar as ações de cada um dentro do sistema.
O que nem todos sabem é que é possível conceder permissões específicas aos usuários, isolando os comandos administrativos da interface. Outra excelente possibilidade é a de autenticar os usuários em bases LDAP, como o Active Directory.
Combinaremos estas duas possibilidades neste artigo, onde descrevo como realizar esta autenticação centralizada e como “separar os administradores, dos usuários visualizadores ou read-only”.
Neste artigo teremos o seguinte cenário:
- Servidor Windows Server 2008 R2 com Active Directory – IP 10.100.1.2
- Servidor Centos 6.2 com Nagios Core instalado e funcional – IP 10.100.1.5
Configuração do Windows Server 2008 R2
Para iniciarmos, configuramos o Active Directory de forma organizada, com o domínio fictício “pi4.com.br”. Criamos os usuários do domínio em uma Unidade Organizacional denominada “pi4”:
Cada usuário possui a permissão de acesso, conforme descrito na imagem acima.
Criamos também uma Unidade Organizacional específica, denominada “nagios”, um usuário “nagios”, para consultar a base de usuários e grupos do AD e um grupo “nagiosusers”, onde estão contidos os usuários com permissão de acesso ao Nagios:
Assim concluímos a fase de configuração do Nagios no AD.
Configuração do Linux CentOS 6.2
Aqui assumimos que o Nagios esteja instalado e funcional, com autenticação habilitada (default).
Utilizamos neste cenário o quickstart, encontrado aqui. 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.
Permissionando os usuários no Nagios
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.
Testando as permissões no Nagios
Quando acessarmos a interface do Nagios, teremos:
Logando como usuário Administrador
Quando logarmos no sistema com um dos usuários com poderes administrativos (user1 e user2) e clicarmos sobre um host ou serviço, teremos como resultado algo semelhante a isto:
Observe a indicação em destaque do usuário logado no canto superior esquerdo e o menu de comandos na lateral direita da tela, demonstrando o acesso administrativo.
Ao acessarmos a opção “Configuration”, no menu esquerdo, temos a tela a seguir:
Logando como usuário Read-Only
Se logarmos no sistema como um usuário com permissão apenas read-only e clicarmos em um host ou serviço, teremos a apresentação das informações de status, porém o menu de comandos não é apresentado e há a informação de que o usuário atual não possui permissão para executar comandos:
Quando o mesmo usuário read-only tenta acessar a opção “Configuration”, que acessamos anteriormente como usuário Administrador, ele receberá a mensagem:
Com estas configurações, nós dividimos os usuários com permissões específicas de acesso.
Testando a Permissão de Acesso na Interface do Nagios
Mas e se um usuário do AD que não faz parte do grupo “nagiosusers” tentar logar no sistema? Simples. O Apache não o encontrará no grupo do AD descrito no arquivo nagios.conf (Apache) e repetirá a tentativa de autenticação até que a mensagem (que é bem clara) seja exibida: “Autorização requerida. O servidor não pode verificar se você está autorizado a acessar a página requisitada”. Ou em bom português: “Acesso Negado”.
Permitindo novos usuários
Para permitir que um novo usuário tenha acesso ao Nagios, é necessário inserí-lo no grupo “nagiosusers” e dar as devidas permissões no arquivo cgi.cfg. Em seguida, recarregar o Nagios (apenas o Nagios e apenas reload) como descrito anteriormente. É essencial que os dois passos sejam realizados, caso contrário, não funcionará corretamente, ou o usuário não poderá se logar (mesmo com as permissões dadas no arquivo cgi.cfg) ou pode se logar e não conseguir visualizar ou executar qualquer ação dentro do sistema (ser membro do grupo “nagiosusers” no AD).
Conclusão
Com estas configurações é possível gerar diferentes níveis de acessos, ou seja, diferentes níveis de usuários read-only, diferentes níveis de administradores e até criar um superadmin com acesso total. Basta combinar as permissões.
***
Fonte: Nagios 3 Enterprise Network Monitoring (Max Schubert, Derrick Bennett, Jonathan Gines, Andrew Hay, John Strand) – Free e-book