Saltar para o conteúdo

FreeBSD Handbook/Administração/MAC/Nagios num Jail MAC

Origem: Wikilivros, livros abertos por um mundo aberto.


FreeBSD Handbook
Anterior Capítulo 16. Mandatory Access Control Próxima


16.14 Nagios num jail MAC

A demonstração a seguir implementará um ambiente seguro usando vários módulos do MAC com políticas apropriadamente configuradas. Isso é apenas um teste e não deve ser considerada a resposta completa às lamentações de todos. Isso é apenas uma implementação de política nunca utilizada e que pode ser desastrosa num ambiente de produção.

Antes de começar o processo, a opção multilabel deve estar configurada em cada sistema de arquivos, como comentado no início deste capítulo. Não fazer isso resultará em erros. Verifique também que os ports net-mngt/nagios-plugins, net-mngt/nagios e www/apache13 estejam instalados, configurados e operando corretamente.

16.14.1 Criando uma Classe de Usuário Insegura

Comece o procedimento adicionando a seguinte classe de usuário ao arquivo /etc/login.conf:

 insecure:\
 :copyright=/etc/COPYRIGHT:\
 :welcome=/etc/motd:\
 :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
 :path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
 :manpath=/usr/share/man /usr/local/man:\
 :nologin=/usr/sbin/nologin:\
 :cputime=1h30m:\
 :datasize=8M:\
 :vmemoryuse=100M:\
 :stacksize=2M:\
 :memorylocked=4M:\
 :memoryuse=8M:\
 :filesize=8M:\
 :coredumpsize=8M:\
 :openfiles=24:\
 :maxproc=32:\
 :priority=0:\
 :requirehome:\
 :passwordtime=91d:\
 :umask=022:\
 :ignoretime@:\
 :label=biba/10(10-10):

Adicione a seguinte linha à classe de usuário default:

 :label=biba/high:

Uma vez feito isso, o seguinte comando deve ser executado para reconstruir a base de dados:

 # cap_mkdb /etc/login.conf

16.14.2 Configuração de Boot

Não reinicie a máquina ainda, apenas adicione as linhas a seguir ao arquivo /boot/loader.conf de modo que os módulos necessários sejam carregados durante a inicialização do sistema:

 mac_biba_load="YES"
 mac_seeotheruids_load="YES"

16.14.3 Configurando os Usuários

Coloque o usuário root na classe default com o comando:

 # pw usermod root -L default

Todas as contas de usuário que não são root ou usuários do sistema irão agora precisar de uma classe de login. A classe de login será necessária pois, caso contrário, usuários não terão permissão de acessar comandos comuns como vi(1). O script em sh a seguir deve fazer o trabalho:

 # for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \
   /etc/passwd`; do pw usermod $x -L default; done;

Coloque os usuários nagios e www na classe insecure criada:

 # pw usermod nagios -L insecure
 # pw usermod www -L insecure

16.14.4 Crie o Arquivo de Contextos

Um arquivo de contextos deve ser então criado. O seguinte exemplo deve ser colocado no /etc/policy.contexts

 # This is the default BIBA policy for this system.
 
 # System:
 /var/run                        biba/equal
 /var/run/*                      biba/equal
 
 /dev                            biba/equal
 /dev/*                          biba/equal
 
 /var                biba/equal
 /var/spool                      biba/equal
 /var/spool/*                    biba/equal
 
 /var/log                        biba/equal
 /var/log/*                      biba/equal
 
 /tmp                biba/equal
 /tmp/*              biba/equal
 /var/tmp            biba/equal
 /var/tmp/*          biba/equal
 
 /var/spool/mqueue       biba/equal
 /var/spool/clientmqueue     biba/equal
 
 # For Nagios:
 /usr/local/etc/nagios
 /usr/local/etc/nagios/*         biba/10
 
 /var/spool/nagios               biba/10
 /var/spool/nagios/*             biba/10
 
 # For apache
 /usr/local/etc/apache           biba/10
 /usr/local/etc/apache/*         biba/10

Esta política reforçará a segurança definindo restrições no fluxo de informações. Nesta configuração específica, usuários, root e outros, nunca devem ter permissão de acesso ao Nagios. Os arquivos de configuração e processos que são parte do Nagios estarão completamente contidos em si mesmos ou em um jail.

Este arquivo deve ser então carregado no nosso sistema com o seguinte comando:

 # setfsmac -ef /etc/policy.contexts /

Nota: O layout do sistema de arquivos acima pode ser diferente, dependendo do ambiente, contudo a execução deve ser feita em casa sistema de arquivos distinto.

O /etc/mac.conf necessita das seguintes modificações na seção main:

 default_labels file ?biba
 default_labels ifnet ?biba
 default_labels process ?biba
 default_labels socket ?biba

16.14.5 Habilitando a Rede

Adicione a seguinte linha no /boot/loader.conf:

 security.mac.biba.trust_all_interfaces=1

E a seguinte linha à configuração da placa de rede no arquivo rc.conf. Se a configuração principal da conexão com a Internet é feita via DHCP, isso terá que ser configurado manualmente a cada boot do sistema.

 maclabel biba/equal

16.14.6 Testando a Configuração

Assegure-se de que o servidor web e o Nagios não vão ser iniciados no boot e reinicie o sistema. Certifique-se de que o usuário root não pode acessar nenhum dos arquivos no diretório de configuração do Nagios. Se o root puder executar um ls(1) no /var/spool/nagios, então alguma coisa está errada. O correto é obter a mensagem de erro “permission denied”.

Se tudo parece correto, Nagios, Apache e Sendmail podem ser então iniciados de maneira a se adequarem à política de segurança. Os seguintes comandos farão isso:

 # cd /etc/mail && make stop && \
 setpmac biba/equal make start && setpmac biba/10\(10-10\) apachectl start && \
 setpmac biba/10\(10-10\) /usr/local/etc/rc.d/nagios.sh forcestart

Certifique-se por todos os meios de que tudo está funcionando corretamente. Se não estiver, cheque os arquivos de log ou as mensagens de erro. Use o comando sysctl(8) para desabilitar o módulo mac_biba(4) e tente iniciar tudo novamente, de maneira normal.

Nota: O usuário root pode mudar o estado da política de seguraça e editar os arquivos de configuração sem medo. O seguinte comando lançará um novo shell para o qual a segurança estará mais fraca:

 # setpmac biba/10 csh

Para evitar que isso aconteça, force que o usuário esteja num intervalo via login.conf(5). Se o comando setpmac(8) tentar rodar um comando fora do intervalo do compartimento, será obtido um erro e o comando não será executado. Neste caso, configurando o root para biba/high(high-high).



Anterior Índice Próxima
O Módulo LOMAC do MAC Topo Amarração de Usuários
Última edição desta página: 31/08/2010 (20100831124506)