4.4. Delimitando privilégios com o AppArmor

Muitas vulnerabilidades de segurança resultam de erros em programas confiáveis. Um programa confiável é executado com privilégios que algum invasor gostaria de ter e o programa deixa de manter aquela confiança se houver um erro no programa permitindo que o ataque adquira esses privilégios.

O Novell® AppArmor é uma solução de segurança de aplicativos projetada especificamente para fornecer menos delimitação de privilégios para programas suspeitos. O AppArmor permite que o administrador especifique o domínio de atividades que o programa pode realizar, desenvolvendo um perfil de segurança para aquele aplicativo (uma lista de arquivos que o programa pode acessar e as operações que o programa pode realizar).

A proteção avançada e efetiva de um sistema de computador requer a minimização do número de programas que media privilégios, dessa forma protegendo os programas tanto quanto possível. Com o Novell AppArmor, você só precisa criar perfil para os programas que são expostos a ataques em seu ambiente, o que reduz drasticamente o trabalho necessário para proteger melhor o seu computador. Os perfis do AppArmor obrigam as políticas a verificar que os programas cumpram sua função e nada mais.

Os administradores só precisam cuidar dos aplicativos que são vulneráveis a ataques e gerar perfis para eles. A proteção avançada de sistema equivale, pois, a construir e manter o conjunto de perfis do AppArmor e a monitorar quaisquer violações de política ou exceções registradas pelo gerador de relatórios do AppArmor.

A construção de perfis do AppArmor para delimitar um aplicativo é muito fácil e intuitiva. O AppArmor fornece várias ferramentas que auxiliam na criação de perfis. O AppArmor não requer que você faça nenhuma programação nem manipulação de scripts. A única tarefa exigida do administrador é determinar uma política de acesso mais rígida e executar permissões para cada aplicativo que necessite de uma proteção avançada.

Atualizações ou modificações aos perfis do aplicativo só são necessárias se a configuração do software ou a faixa de atividades desejada mudar. O AppArmor oferece ferramentas intuitivas para manipular atualizações ou modificações de perfil.

Os usuários nem perceberão o AppArmor. Ele é executado “por trás dos bastidores” e não requer nenhuma interação com o usuário. O desempenho não será afetado de maneira a ser percebida pelo AppArmor. Se alguma atividade do aplicativo não for protegida por um perfil do AppArmor ou se alguma atividade do aplicativo for impedida pelo AppArmor, o administrador deve ajustar o perfil deste aplicativo para cobrir este tipo de comportamento.

Este guia resume as tarefas básicas que devem ser realizadas com o AppArmor para implementar uma proteção avançada e efetiva a um sistema. Para obter mais informações, consulte o Guia de Administração do Novell AppArmor 2.0.

4.4.1. Instalando o Novell AppArmor

Os usuários que instalam um GNOME ou a seleção de área de trabalho KDE podem ignorar esta seção, porque o Novell AppArmor é instalado, por padrão, como parte destas seleções.

Se não instalar nenhuma destas áreas de trabalho nem for para um ambiente inteiramente baseado em texto, faça o seguinte para instalar os pacotes necessários usando o gerenciador de pacotes do YaST.

  1. Efetue login como root e inicie o YaST.

  2. No Centro de Controle do YaST selecione Software+Gerenciamento de Software.

  3. Use a funcionalidade de pesquisa do YaST (palavra-chave “AppArmor”) para instalar os seguintes pacotes:

    • apparmor-parser

    • libapparmor

    • apparmor-docs

    • yast2-apparmor

    • apparmor-profiles

    • apparmor-utils

  4. Selecione todos estes pacotes para instalação e selecione Aceitar. O YaST resolve quaisquer dependências e instala todos os pacotes para você.

  5. Quando o YaST terminar de atualizar a configuração do sistema, selecione Concluir para sair do gerenciador de pacote.

4.4.2. Habilitando o Novell AppArmor

Quando o Novell AppArmor estiver instalado, habilite-o explicitamente para que ele seja iniciado sempre que o sistema inicializar. Use o módulo do YaST Serviços do Sistema (Nível de Execução) para esta tarefa:

  1. Efetue login como root e inicie o YaST.

  2. Inicie Sistema+Serviços do Sistema (Runlevel).

  3. Na lista de serviços exibidos, selecione apparmor. Consulte a Figura 4.3, “Habilitando o Novell AppArmor através do YaST”.

  4. Clique em Habilitar para habilitar o AppArmor permanentemente.

  5. Clique em Concluir para aceitar suas configurações.

Figura 4.3. Habilitando o Novell AppArmor através do YaST

Habilitando o Novell AppArmor através do YaST

Usando a ferramenta Runlevel do YaST, é possível habilitar os serviços permanentemente. Estas configurações sobrevivem à reinicialização do seu sistema. Para habilitar o AppArmor temporariamente, pela duração de uma sessão apenas, faça o seguinte:

  1. Efetue login como root e inicie o YaST.

  2. Inicie o Novell AppArmor+Painel de Controle do AppArmor.

  3. Defina o Status do AppArmor em AppArmor está habilitado clicando em Configurar+Habilitar+OK.

  4. Aplique suas configurações com Concluído.

4.4.3. Noções básicas de aplicativos de perfis

Prepare uma distribuição bem-sucedida do Novell AppArmor no seu sistema considerando cuidadosamente os seguintes itens:

  1. Determine os aplicativos para os quais criar perfil. Leia mais sobre isto em Seção 4.4.3.1, “Escolhendo os aplicativos para os quais criar perfil”.

  2. Construa os perfis necessários como resumido em Seção 4.4.3.2, “Construindo e modificando perfis”. Verifique os resultados e ajuste os perfis quando necessário.

  3. Para controlar o que está acontecendo no sistema, execute os relatórios do AppArmor e trabalhe com eventos de segurança. Consulte Seção 4.4.3.3, “Configurando notificação de evento e relatórios do Novell AppArmor”.

  4. Atualize seus perfis sempre que seu ambiente mudar ou você precisar reagir a eventos de segurança registrados pela ferramenta de relatório do AppArmor. Consulte Seção 4.4.3.4, “Atualizando seus perfis”.

4.4.3.1. Escolhendo os aplicativos para os quais criar perfil

É necessário proteger apenas os programas expostos a ataques na sua configuração particular, assim, só use perfis para os aplicativos que você realmente executa. Use a seguinte lista para determinar os candidatos mais prováveis:

Agentes de rede

Programas (servidores e clientes) têm portas de rede abertas e agentes de rede são programas de servidor que respondem a estas portas de rede. Clientes de usuário (como clientes de correio e browsers da Web) também têm portas de rede abertas e mediam privilégios.

Aplicativos da Web

Scripts Perl CGI, páginas PHP e aplicativos mais complexos da Web podem ser chamados através de um browser da Web.

Tarefas cron

Programas que o daemon cron executa periodicamente lêem entradas de diversas fontes.

Para saber que processos estão sendo executados atualmente com portas de rede abertas e podem precisar de um perfil para delimitá-los, execute unconfined como root.

Exemplo 4.1. Saída de unconfined

19848 /usr/sbin/cupsd not confined
19887 /usr/sbin/sshd not confined
19947 /usr/lib/postfix/master not confined
29205 /usr/sbin/sshd confined by '/usr/sbin/sshd (enforce)'

Cada um dos processos no exemplo acima rotulado de não delimitado pode precisar de um perfil personalizado para delimitá-lo. Os processos rotulados delimitado por já são protegidos pelo AppArmor.

[Tip]Mais informações

Para obter mais informações sobre a escolha dos aplicativos corretos para os quais criar perfil, consulte o Capítulo Selecionando programas a imunizar (Guia de Administração do Novell AppArmor 2.0).

4.4.3.2. Construindo e modificando perfis

O Novell AppArmor no SUSE Linux é fornecido com um conjunto de perfis pré-configurado para os aplicativos mais importantes. Além disso, você pode usar o AppArmor para criar seus próprios perfis para um conjunto de aplicativos definidos em /etc/apparmor/README.profiles.

Há duas maneiras de gerenciar perfis. Uma é usar o gráfico front end fornecido pelos módulos Novell AppArmor do YaST e a outra é usar as ferramentas de linha de comando fornecidas pela própria suíte do AppArmor. Ambos os métodos funcionam basicamente da mesma maneira.

Executar não delimitado como descrito em Seção 4.4.3.1, “Escolhendo os aplicativos para os quais criar perfil” identifica uma lista de aplicativos que podem precisar de um perfil para serem executados de modo seguro.

Para cada aplicativo, realize as seguintes etapas para criar um perfil:

  1. Como root, deixe o AppArmor criar um resumo do perfil do aplicativo, executando genprof programname

    ou

    executando YaST+Novell AppArmor+Assistente para Adicionar Perfil e especificando o caminho completo do aplicativo para o qual criar perfil.

    Um perfil básico é traçado e o AppArmor é colocado no modo de aprendizado, o que significa que ele registra qualquer atividade do programa que você esteja executando mas não o restringe.

  2. Execute a gama completa de ações do aplicativo para que o AppArmor obtenha um quadro bastante específico de suas atividades.

  3. Deixe o AppArmor analisar os arquivos de registro gerados na Passo 2. Faça-o digitando S em genprof

    ou

    clicando em Explorar eventos do AppArmor no registro do sistema no Assistente para Adicionar Perfil e siga as instruções fornecidas no assistente até concluir o perfil.

    O AppArmor explora os registros feitos durante a execução do aplicativo e pede para você configurar os direitos de acesso para cada evento para o qual foi efetuado login. Configure-os para cada arquivo ou use globbing.

  4. Uma vez que todas as permissões de acesso estejam configuradas, o seu perfil é definido para o modo forçado. O perfil é aplicado e o AppArmor restringe o aplicativo de acordo com o perfil que acabou de ser criado.

    Se iniciou genprof para um aplicativo que tinha um perfil existente que estava no modo de reclamação, este perfil permanecerá no modo de aprendizado até sair deste ciclo de aprendizado. Para obter mais informações sobre como mudar o modo de um perfil, consulte a Seção Modo de reclamação ou aprendizado (Capítulo 3, Construindo perfis do Novell AppArmor, Guia de Administração do Novell AppArmor 2.0) e a Seção Modo Forçado (Capítulo 3, Construindo perfis do Novell AppArmor, Guia de Administração do Novell AppArmor 2.0).

Teste as suas configurações de perfil realizando todas as tarefas com o aplicativo que acabou de delimitar. Normalmente, o programa delimitado tem uma execução uniforme e você não percebe as atividades do AppArmor. No entanto, se observar um certo comportamento inadequado no seu aplicativo, verifique os registros do sistema e veja se o AppArmor está delimitando demais o seu aplicativo. Localize os registros adequados em /var/log/messages ou execute dmesg.

Qualquer saída semelhante ao exemplo a seguir sugere que o AppArmor está delimitando demais o seu aplicativo:

AppArmor: REJECTING w access to /var/run/nscd/socket (traceroute(2050) profile
/usr/sbin/traceroute active /usr/sbin/traceroute)

Para ajustar o perfil, execute o Assistente para Adicionar Perfil novamente como descrito acima e deixe que ele analise as mensagens de registro relativas ao aplicativo específico. Determine os direitos ou restrições de acesso quando solicitado pelo YaST.

[Tip]Mais informações

Para obter mais informações sobre construção e modificação de perfil, consulte o Capítulo Construindo perfis do Novell AppArmor (Guia de Administração do Novell AppArmor 2.0).

4.4.3.3. Configurando notificação de evento e relatórios do Novell AppArmor

Configure a notificação de evento no Novell AppArmor para que você possa analisar os eventos de segurança. A notificação de evento é um recurso do Novell AppArmor que informa um destinatário específico de e-mail sobre a ocorrência de uma atividade sistêmica no Novell AppArmor no nível de gravidade escolhido. Esse recurso está disponível atualmente na interface do YaST.

Para configurar a notificação de evento no YaST, proceda da seguinte maneira:

  1. Verifique se o servidor de correio está sendo executado no seu sistema para fornecer as notificações de evento.

  2. Efetue login como root e inicie o YaST. Em seguida, selecione Novell AppArmor+Painel de Controle do AppArmor.

  3. Na seção Habilitar Notificação de Evento de Segurança, selecione Configurar.

  4. Para cada tipo registrado (Conciso, Resumo e Verboso) configure uma freqüência de relatório, digite um endereço de e-mail para receber os relatórios e determine a gravidade dos eventos a registrar. Se quiser incluir eventos desconhecidos nos relatórios de evento, marque Incluir Eventos de Gravidade Desconhecidos.

    [Note]Nota

    A menos que você esteja familiarizado com categorização de evento do AppArmor, escolha ser notificado sobre eventos de todos os níveis de segurança.

  5. Deixe esta caixa de diálogo com OK+Concluir para aplicar suas configurações.

Configure relatórios do Novell AppArmor. Usando relatórios, é possível ler eventos de segurança importantes do Novell AppArmor relatados nos arquivos de registro sem precisar peneirar manualmente as mensagens pesadas, úteis apenas para a ferramenta logprof. É possível restringir o tamanho do relatório, filtrando por faixa de data ou nome de programa.

Para configurar os relatórios do AppArmor proceda da seguinte maneira:

  1. Efetue login como root e inicie o YaST. Selecione Novell AppArmor+Relatórios do AppArmor.

  2. Selecione o tipo de relatório que você quer examinar ou configurar de Resumo de Segurança Executivo, Auditoria de Aplicativos e Relatório de Incidente de Segurança.

  3. Edite a freqüência de geração de relatório, endereço de e-mail, formato de exportação e a localização dos relatórios selecionando Editar e fornecendo os dados solicitados.

  4. Para executar um relatório do tipo selecionado, clique em Executar Agora.

  5. Pesquise nos relatórios arquivados de um determinado tipo, selecionando Visualizar Arquivo e especificando o tipo de relatório.

    ou

    Apague os relatórios desnecessários ou adicione novos.

[Tip]Mais informações

Para obter mais informações sobre configuração de notificação de evento no Novell AppArmor, consulte a Seção “Configurando notificações de evento” (Capítulo 4, Gerenciando aplicativos em perfil, Guia de Administração do Novell AppArmor 2.0). Mais informações sobre configuração de relatório são encontradas na Seção “Relatórios” (Capítulo 4, Gerenciando aplicativos em perfil, no Guia de Administração do Novell AppArmor 2.0).

4.4.3.4. Atualizando seus perfis

Configurações de software e sistema mudam com o tempo. Por isso a sua configuração de perfil para o AppArmor pode precisar de um ajuste manual periodicamente. O AppArmor verifica o seu registro de sistema em busca de violações de política ou outros eventos do AppArmor e deixa você ajustar a sua configuração de perfil adequadamente. Qualquer comportamento de aplicativo que esteja fora de qualquer definição de perfil também pode ser tratado usando o Assistente para Atualizar Perfil.

Para atualizar o seu conjunto de perfis, proceda da seguinte maneira:

  1. Efetue login como root e inicie o YaST.

  2. Inicie o Novell AppArmor+Assistente para Atualizar Perfil.

  3. Ajuste o acesso ou execute direitos para qualquer recurso ou para qualquer executável ao qual tenha sido efetuado login quando solicitado.

  4. Saia do YaST após ter respondido a todas as perguntas. Suas mudanças são aplicadas aos respectivos perfis.

[Tip]Mais informações

Para obter mais informações sobre atualização dos seus perfis dos registros do sistema, consulte a Seção “Atualizando perfis a partir de entradas de registros do sistema” (Capítulo 3, Construindo perfis do Novell AppArmor, Guia de Administração do Novell AppArmor 2.0).