[Resolvido] Nagios: configurando níveis de acesso e autenticação
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":
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/25104/48887.png&key=edde1624c4f54f9d96d2bc34b2fc0c3b1e3c816566bdb91ad75953461a45cb7e" />
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:
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/25104/48885.png&key=d29b46b6a0af6cac558847616ffe4c2c040f9d4e699a45ad54d368024dcf1e6f" />
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.confNeste 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:
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/25104/48889.png&key=4b741ee11519a4dadaf953e41277e9dfdea2f01ed857fd0bfc4984c841fd42a6" />
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:
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/25104/48891.png&key=104c310ee14562f0558bc2cba252428c8ddeb9c5353cca451e73a4ad75251ce2" /> 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:
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/25104/48893.png&key=f8ec647141aca44e95216a8e9faf6f1e7a4508509490dac45353e79271fccb66" />
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:
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/25104/48895.png&key=bb6523abd292305bd85ebe42149edfdd1726a3224a2fcb5a9c97fce9c272eb2d" /> Quando o mesmo usuário read-only tenta acessar a opção "Configuration", que acessamos anteriormente como usuário Administrador, ele receberá a mensagem:
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/25104/48897.png&key=8f531232e54ac5c2f727bec3ae63ba9e1d0f132fd4c4cf4463f6e6d50b20868e" /> 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".
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/25104/48899.png&key=01a4432782df367f65f249915beef093376a901dccdcf91ec6024ed39a75c054" />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
Discussão (0)
Carregando comentários...