DevSecOps

3 ago, 2012

Nagios: configurando níveis de acesso e autenticação centralizada no Active Directory

Publicidade

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