Sumário
Este capítulo explica como criar e gerenciar perfis do Novell® AppArmor. Você poderá criar perfis do Novell AppArmor após selecionar os programas desejados. Para obter ajuda a esse respeito, consulte o Capítulo 2, Selecionando programas a imunizar (↑Guia de Administração do Novell AppArmor 2.0).
Esta seção mostra detalhes da sintaxe ou composição dos perfis do Novell AppArmor. Há um exemplo dessa sintaxe na Seção 3.1.1, “Decompondo um perfil do Novell AppArmor” (↑Guia de Administração do Novell AppArmor 2.0).
Os componentes de perfil do Novell AppArmor são chamados de regras do Novell AppArmor. Atualmente há dois tipos principais de regras do Novell AppArmor: entradas de caminho e entradas de capacidade. As entradas de caminho especificam o que o processo pode acessar no sistema de arquivos, e as entradas de capacidade propiciam um controle mais minucioso daquilo que um processo delimitado pode fazer, através de outras chamadas de sistema que exigem privilégios. As inclusões são um tipo de meta-regra ou diretiva que extrai entradas de caminho e capacidade de outros arquivos.
A maneira mais fácil de explicar em que consiste um perfil e como criá-lo é mostrar os detalhes de uma amostra de perfil. Considere, por exemplo, o seguinte perfil do programa /sbin/klogd:
# profile to confine klogd/sbin/klogd
{
#include <abstractions/base>
capability sys_admin,
/boot/* r
, /proc/kmsg r, /sbin/klogd r, /var/run/klogd.pid lw, }
Quando se cria um perfil para um programa, este só pode acessar os arquivos, modos e capacidades do POSIX especificados no perfil. Essas restrições se acrescem aos controles de acesso nativos do Linux.
Exemplo: .
Para obter a capacidade CAP_CHOWN, o programa deve ter não só acesso a CAP_CHOWN sob os controles de acesso convencionais do Linux (isso significa, em geral, que deve ser um processo de Root), mas também a capacidade chown (mudar usuário) em seu perfil. Da mesma forma, para gravar no arquivo /foo/bar, o programa deve ter tanto os bits de modo e o ID de usuário correto definidos nos atributos de arquivos (consulte as páginas de manuais chmod e chown) quanto /foo/bar w em seu perfil.
As tentativas de violação das regras do Novell AppArmor são registradas no syslog. Em muitos casos, as regras do Novell AppArmor impedem que os ataques funcionem porque os arquivos necessários não podem ser acessados e, em todos os casos, a delimitação pelo Novell AppArmor limita os danos que o invasor pode causar ao conjunto de arquivos permitidos pelo Novell AppArmor.
As declarações #include (de inclusão) são diretivas que extraem componentes de outros perfis do Novell AppArmor para simplificar perfis. Os arquivos de inclusão obtêm permissões de acesso para programas. Com uma inclusão, você pode fornecer ao programa acesso a arquivos ou caminhos de diretórios que são necessários também a outros programas. Além disso, pode reduzir o tamanho do perfil.
Por padrão, a declaração #include (de inclusão) anexa /etc/apparmor.d/ (onde ela espera encontrar o arquivo incluído) ao início do caminho. Ao contrário de outras declarações de perfil (mas como nos programas C), as linhas de #include (inclusão) não terminam com vírgula.
Para facilitar a criação de perfis de aplicativos, o Novell AppArmor dispõe de duas classes de #include (inclusões): abstrações e pacotes de programa.
As abstrações são #includes (inclusões) agrupadas por tarefas de aplicativos comuns. Entre essas tarefas estão o acesso a mecanismos de autenticação e rotinas de serviços de nomes, requisitos comuns de imagem e a contabilização do sistema. Os arquivos relacionados nessas abstrações são específicos à tarefa nomeada; os programas que necessitam de um desses arquivos geralmente exigem algum dos demais arquivos relacionados no arquivo de abstração (dependendo não da configuração local, mas também das exigências específicas do programa). As abstrações encontram-se em /etc/apparmor.d/abstractions/.
Os pacotes de programas são controles de acesso a programas específicos, controlados pelo administrador do sistema com base em políticas locais. Cada pacote só é usado por um programa. Os pacotes destinam-se a facilitar as modificações locais e atualizações às políticas fornecidas pelo Novell AppArmor. Os administradores podem modificar a política desses arquivos conforme suas necessidades e deixar os perfis de programa inalterados, simplificando a tarefa de fundir as atualizações de política do Novell AppArmor em políticas de uso obrigatório em cada local.
As restrições de acesso dos pacotes de programas geralmente são bastante permissivas. Elas se destinam a permitir aos usuários acesso aos arquivos com o mínimo de interferência possível, mas garantindo a proteção dos recursos do sistema. Uma exceção a essa regra é a série postfix* de pacotes de programas. Esses perfis são usados para facilitar a abstração da localização dos binários postfix. Evite reduzir as permissões da série postfix*. Os pacotes de programas encontram-se em /etc/apparmor.d/program-chunks/.