Vous êtes sur la page 1sur 130

Novell AppArmor

2.0 www.novell.com
02/21/2006 Guia de Administração
Guia de Administração do Novell AppArmor 2.0
Lista de Autores: Leona Beatrice Campbell, Jana Jaeger

Esta publicação é propriedade intelectual da Novell Inc.

O seu conteúdo pode ser duplicado, em parte ou integralmente, desde que um rótulo de copyright
esteja visivelmente localizado em cada cópia.

Todas as informações deste manual foram compiladas com a maior atenção possível aos detalhes.
Entretanto, isso não garante uma precisão absoluta. O SUSE LINUX GmbH, os autores ou os tradutores
não deverão ser responsabilizados por possíveis erros ou conseqüências decorrentes.

Novell, o logotipo da Novell, o logotipo N e SUSE são marcas registradas da Novell, Inc. nos Estados
Unidos e em outros países. *Linux é marca registrada de Linus Torvalds. Todas as outras marcas
registradas de terceiros pertencem aos seus respectivos proprietários.

Envie sugestões e comentários para documentation@suse.de.


Sumário

Sobre este guia v

1 Imunizando programas 1

2 Selecionando programas a imunizar 3


2.1 Imunizar programas que concedem privilégios . . . . . . . . . . . . . 3
2.2 Inspecionar portas abertas para imunizar programas . . . . . . . . . . . 4

3 Criando perfis do Novell AppArmor 11


3.1 Componentes e sintaxe dos perfis . . . . . . . . . . . . . . . . . . 11
3.2 Criando e gerenciando perfis do Novell AppArmor . . . . . . . . . . . 14
3.3 Criando perfis do Novell AppArmor com a GUI do YaST . . . . . . . . 16
3.4 Criando perfis do Novell AppArmor usando a interface da linha de comando .
40
3.5 Dois métodos de criação de perfis . . . . . . . . . . . . . . . . . . 45
3.6 Nomes de caminhos e englobamento . . . . . . . . . . . . . . . . 65
3.7 Modos de acesso a permissões de arquivo . . . . . . . . . . . . . . 66

4 Gerenciando aplicativos em perfil 69


4.1 Monitorando seus aplicativos protegidos . . . . . . . . . . . . . . . 69
4.2 Configurando notificações de evento . . . . . . . . . . . . . . . . 70
4.3 Relatórios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.4 Reagindo a eventos de segurança . . . . . . . . . . . . . . . . . . 95
4.5 Mantendo perfis de segurança . . . . . . . . . . . . . . . . . . . 96
5 Criando perfil dos aplicativos web com o ChangeHat Apache 99
5.1 Apache ChangeHat . . . . . . . . . . . . . . . . . . . . . . . . 100
5.2 Configuração do Apache para mod-apparmor . . . . . . . . . . . . 107

6 Suporte 111
6.1 Atualizando o Novell AppArmor online . . . . . . . . . . . . . . . 111
6.2 Usando as páginas de manual . . . . . . . . . . . . . . . . . . . 111
6.3 Mais informações . . . . . . . . . . . . . . . . . . . . . . . . 113
6.4 Solução de problemas . . . . . . . . . . . . . . . . . . . . . . 114
6.5 Relatando erros do AppArmor . . . . . . . . . . . . . . . . . . . 116

Glossário 119
Sobre este guia
O Novell® AppArmor é projetado para fornecer segurança de aplicativo fácil de usar,
tanto para servidores como para estações de trabalho. Novell AppArmor é um sistema
de controle de acesso que lhe permite especificar por programa os arquivos que o
programa pode ler, gravar e executar. O AppArmor protege os aplicativos sem confiar
em assinaturas de ataque, de maneira a impedir ataques, mesmo se eles estiverem
explorando vulnerabilidades previamente desconhecidas.

O Novell AppArmor consiste em:

• Uma biblioteca de perfis do AppArmor para aplicativos Linux* comuns, que


descreve os arquivos que o programa precisa acessar.

• Uma biblioteca de classes de fundação de perfil (blocos de construção de perfil)


do AppArmor necessária para atividades comuns de aplicativo, como pesquisa de
DNS e autenticação de usuário.

• Uma suíte de ferramentas para desenvolver e aprimorar perfis do AppArmor, de


maneira que você possa mudar os perfis existentes para adequá-los às suas
necessidades e criar novos perfis para os seus próprios aplicativos locais e
personalizados.

• Vários aplicativos especialmente modificados que são habilitados para AppArmor


a fim de fornecer segurança avançada na forma de delimitação única de subprocesso,
inclusive o Apache.

• O módulo carregável do kernel do Novell AppArmor e scripts de controle associados


para aplicar políticas do AppArmor no seu sistema SUSE® Linux.

Este guia aborda os seguintes tópicos:

Imunizando programas
Descreve a operação do Novell AppArmor.

Selecionando programas a imunizar


Descreve os tipos de programas que devem ter perfis do Novell AppArmor criados
em sua intenção.
Criando perfis do Novell AppArmor
Descreve como usar as ferramentas do Novell AppArmor para imunizar os seus
próprios programas e de terceiros que você possa ter instalado no sistema SUSE
Linux. Também ajuda você a adicionar, editar ou apagar perfis que tenham sido
criados para seus aplicativos.

Gerenciando aplicativos em perfil


Descreve como realizar manutenção de perfil do Novell AppArmor, que envolve
em rastreamento de questões e problemas comuns.

Criando perfil dos aplicativos web com o ChangeHat Apache


Permite criar subperfis para o servidor web do Apache que lhe permite delimitar
de forma compacta pequenas seções de processamento de aplicativos da Web.

Suporte
Indica opções de suporte para este produto.

Glossário
Fornece uma lista de termos e suas definições.

1 Feedback
Queremos receber seus comentários e sugestões sobre este manual e sobre a
documentação restante que acompanha este produto. Use a função Comentários do
Usuário, situada na parte inferior de cada página da documentação online e digite seus
comentários.

2 Convenções da documentação
As seguintes convenções tipográficas são usadas neste manual:

• /etc/passwd: nomes de arquivo e diretório

• marcador: substitua marcador pelo valor real

• PATH: a variável de ambiente PATH

• ls, --help: comandos, opções e parâmetros

vi Guia de Administração do Novell AppArmor 2.0


• user: usuários ou grupos

• Alt , Alt + F1 : uma tecla ou combinação de teclas para pressionar, mostradas em


maiúsculas como no teclado

• Arquivo, Arquivo → Salvar Como: itens de menu, botões

• Pingüins dançando (Capítulo Pingüins, ↑Referência): Referência a um capítulo em


outro manual.

Sobre este guia vii


Imunizando programas
O Novell® AppArmor fornece tecnologias de imunização que protegem os aplicativos
1
do SUSE Linux de suas vulnerabilidades inerentes. Após instalar o Novell AppArmor,
configurar os perfis do Novell AppArmor e reinicializar o computador, o sistema é
imunizado porque começa a aplicar as políticas de segurança do Novell AppArmor. A
proteção de programas com o Novell AppArmor é chamada de imunização.

O Novell AppArmor configura uma coleção de perfis de aplicativo padrão para proteger
os serviços padrão do Linux. Para proteger outros aplicativos, use as ferramentas do
Novell AppArmor para criar perfis para os aplicativos que deseja proteger. Este capítulo
apresenta a filosofia de imunização de programas. Passe para o Capítulo 3, Criando
perfis do Novell AppArmor (p 11) se estiver pronto para construir e gerenciar perfis do
Novell AppArmor.

O Novell AppArmor fornece controle de acesso otimizado para serviços de rede,


especificando que arquivos cada programa pode ler, gravar e executar. Dessa forma,
cada programa cumpre sua função e nada mais.

O Novell AppArmor é um esquema de prevenção de invasão de host ou um controle


de acesso obrigatório, que é otimizado para servidores. Anteriormente, os esquemas de
controle de acesso eram centralizados em torno dos usuários porque eram criados para
sistemas de maior uso ao mesmo tempo. Como alternativa, geralmente, os servidores
de rede modernos não permitem que os usuários efetuem login, ao contrário, fornecem
uma diversidade de serviços de rede para usuários, como Web, correio, arquivo e
impressão. O Novell AppArmor controla o acesso dado aos serviços de rede e outros
programas para impedir que os pontos fracos sejam explorados.

Imunizando programas 1
Selecionando programas a imunizar
Programas de quarentena do Novell® AppArmor para proteger o restante do sistema
2
de danos causados por um processo comprometido. Você deve inspecionar as suas
portas para ver quais programas precisam de perfis (consulte a Seção 2.2, “Inspecionar
portas abertas para imunizar programas” (p 4)) e crie perfis para todos os programas
que concedem privilégios (Seção 2.1, “Imunizar programas que concedem privilégios”
(p 3)).

2.1 Imunizar programas que


concedem privilégios
Os programas para os quais devem ser criados perfis são os que mediam privilégios.
Os programas a seguir têm acesso aos recursos que a pessoa a usar o programa não tem,
de maneira que outorgam o privilégio para o usuário, quando usado:

tarefas cron
Os programas que são executados periodicamente por cron. Tais programas lêem
a entrada de diversas fontes e podem ser executados com privilégios especiais, às
vezes com privilégios de usuário Root. Por exemplo, cron pode executar
/usr/bin/updatedb diariamente para manter o banco de dados locate
atualizado com privilégios suficientes para ler o nome de todo arquivo do sistema.
Para obter instruções sobre como encontrar estes tipos de programas, consulte a
Seção 2.2.1, “Imunizando tarefas cron” (p 6).

Selecionando programas a imunizar 3


Aplicativos da Web
Os programas que podem ser chamados por um browser da Web, incluem scripts
CGI Perl, páginas PHP e aplicativos mais complexos da Web. Para obter instruções
sobre como encontrar esses tipos de programas, consulte a Seção 2.2.2, “Imunizando
aplicativos da Web” (p 7).

Agentes de rede
Programas (servidores e clientes) que têm portas de rede abertas. Clientes de usuário
como clientes de e-mail e browsers da Web, surpreendentemente, mediam
privilégios. Estes programas são executados com privilégios de gravar os diretórios
home do usuários e processam entrada de fontes remotas potencialmente hostis,
como sites da Web hostis e código de e-mail mal-intencionado. Para obter instruções
sobre como encontrar esses tipos de programas, consulte a Seção 2.2.3, “Imunizando
agentes de rede” (p 9).

Por outro lado, programas sem privilégios não necessitam da criação de perfis. Por
exemplo, um script de shell pode chamar o programa cp para copiar um arquivo. Como
cp não tem seu próprio perfil, ele herda o perfil do script de shell pai, de maneira que
pode copiar quaisquer arquivos que o perfil do script de shell pai possa ler e gravar.

2.2 Inspecionar portas abertas para


imunizar programas
Um método automatizado para encontrar daemons de servidor de rede para os quais
podem ser criados perfis para uso de ferramenta não delimitada. Você também pode
simplesmente exibir um relatório dessas informações na GUI (interface gráfica do
usuário) do YaST (consulte “Relatório de Auditoria de Aplicativos” (p 80) para obter
instruções).

A ferramenta não delimitada usa o comando netstat -nlp para inspecionar as suas
portas abertas de dentro do seu computador, detectar os programas associados a estas
portas e inspecionar o conjunto de perfis do Novell AppArmor que você carregou. Não
delimitado então relata estes programas junto com o perfil do Novell AppArmor
associado a cada programa ou relata “nenhum” se o programa não for delimitado.

4 Guia de Administração do Novell AppArmor 2.0


NOTA

Se criar um novo perfil, deve reiniciar o programa para o qual foi criado o
perfil para não delimitado a fim de detectar e relatar o novo estado para o
qual foi criado perfil.

A seguir, uma amostra de saída não delimitada:


2325 /sbin/portmap not confined
3702❶ /usr/sbin/sshd❷ confined
by '/usr/sbin/sshd❸ (enforce)'
4040 /usr/sbin/ntpd confined by '/usr/sbin/ntpd (enforce)'
4373 /usr/lib/postfix/master confined by '/usr/lib/postfix/master (enforce)'

4505 /usr/sbin/httpd2-prefork confined by '/usr/sbin/httpd2-prefork (enforce)'


5274 /sbin/dhcpcd not confined
5592 /usr/bin/ssh not confined
7146 /usr/sbin/cupsd confined by '/usr/sbin/cupsd (complain)'

❶ A primeira parte é um número. Este número é o número de ID do processo (PID)


do programa de escuta.
❷ A segunda parte é uma string que representa o caminho absoluto do programa de
escuta.
❸ A parte final indica o perfil que delimita o programa, se houver.

NOTA

Não delimitado requer privilégios de Root e não deve ser executado de um


shell que seja delimitado por um perfil do AppArmor.

Não delimitado não distingue entre uma interface de rede e outra, por isso relata todos
os processos não confinados, mesmo os que devem escutar uma interface LAN interna.

Encontrar aplicativos de cliente de rede de usuário depende das suas preferências de


usuário. A ferramenta não delimitada detecta e relata portas de rede abertas por
aplicativos de cliente, mas apenas os aplicativos de cliente que estejam sendo executados
no momento em que a análise não delimitada é realizada. Isto é um problema, porque
serviços de rede tendem a ser executados o tempo todo, enquanto que aplicativos de
cliente de rede tendem a ser executados apenas quando o usuário tem interesse neles.

A aplicação de perfis do Novell AppArmor aos aplicativos de cliente de rede de usuário


também depende das preferências do usuário, e o Novell AppArmor destina-se a

Selecionando programas a imunizar 5


servidores, não a estações de trabalho. Assim, deixamos a criação de perfis dos
aplicativos de cliente de rede de usuário como um exercício para o usuário.

Para delimitar agressivamente os aplicativos de desktop, o comando não delimitado


tem suporte para uma opção paranóica, que relata todos os processos em execução e
os perfis do AppArmor correspondentes que podem ou não ser associados a cada
processo. O usuário não delimitado pode então decidir se cada um destes programas
precisa de um perfil do AppArmor.

Se você tem perfis novos ou modificados, pode enviá-los para a lista de discussão
apparmor-general@forge.novell.com junto com um caso de uso para o
comportamento do aplicativo utilizado. A equipe do AppArmor revisará e talvez enviará
o trabalho para o openSUSE. Não podemos garantir que todos os perfis serão incluídos,
mas faremos o esforço de incluir o máximo possível para que usuários finais possam
contribuir para os perfis de segurança enviados no openSUSE.

2.2.1 Imunizando tarefas cron


Para encontrar programas que são executados por cron, é necessário inspecionar a sua
configuração cron local. Infelizmente, a configuração cron é bastante complexa, de
maneira que há inúmeros arquivos a inspecionar. Tarefas cron periódicas são executadas
destes arquivos:
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/*

Quanto às tarefas cron de Root, é possível editá-las com crontab -e e relacionar as


tarefas cron de Root com crontab -l. Você precisa ser Root para que funcionem.

Uma vez que você encontre estes programas, pode usar o Assistente para Adicionar
Perfil para criar perfis para eles. Consulte a Seção 3.3.1, “Adicionando um perfil usando
o assistente” (p 18).

6 Guia de Administração do Novell AppArmor 2.0


2.2.2 Imunizando aplicativos da Web
Para encontrar aplicativos da Web, você deve investigar a sua configuração de servidor
Web. O servidor Web do Apache é altamente configurável e os aplicativos da Web
podem ser armazenados em muitos diretórios, dependendo de sua configuração local.
O SUSE Linux, como padrão, armazena os aplicativos da Web em /srv/www/
cgi-bin/. Até o máximo possível, cada aplicativo da Web deve ter um perfil do
Novell AppArmor.

Uma vez que você encontre estes programas, pode usar o Assistente para Adicionar
Perfil do AppArmor para criar perfis para eles. Consulte a Seção 3.3.1, “Adicionando
um perfil usando o assistente” (p 18).

Programas CGI e delimitação de subprocessos em


aplicativos da Web
Como os programas CGI são executados pelo servidor Web do Apache, o próprio perfil
para Apache usr.sbin.httpd2-prefork (para Apache2 no SUSE Linux) deve
ser modificado para adicionar permissões de execução a cada um destes programas.
Por exemplo, adicionar a linha /srv/www/cgi-bin/my_hit_counter.pl
rpx concede permissão ao Apache de executar o script Perl my_hit_counter.pl
e requer que haja um perfil dedicado para my_hit_counter.pl. Se my_hit
_counter.pl não tiver um perfil dedicado associado a ele, a regra deve informar
/srv/www/cgi-bin/my_hit_counter.pl rix para que my_hit_counter
.pl herde o perfil usr.sbin.httpd2-prefork.

Alguns usuários podem achar inconveniente especificar permissão de execução para


todos os scripts CGI que o Apache possa chamar. Em vez disso, o administrador pode
conceder acesso controlado às coleções de scripts CGI. Por exemplo, adicionar a linha
/srv/www/cgi-bin/*.{pl,py,pyc} rix permite que o Apache execute todos
os arquivos em /srv/www/cgi-bin/ finalizando em .pl (scripts Perl) e .py ou
.pyc (scripts Python). Como acima, a parte ix da regra faz com que os scripts Python
herdem o perfil do Apache, o que é adequado se você não quiser gravar perfis para cada
script Python.

Selecionando programas a imunizar 7


NOTA

Se quiser a funcionalidade do módulo de delimitação de subprocesso


(mod-apparmor) quando os aplicativos da Web lidam com módulos Apache
(mod_perl e mod_php), use os recursos ChangeHat ao adicionar um perfil
no YaST ou na linha de comando. Para se beneficiar da delimitação de
subprocesso, consulte a Seção 5.1, “Apache ChangeHat” (p 100).

Criar perfis para aplicativos da Web que usam mod_perl e mod_php requer um
tratamento ligeiramente diferente. Neste caso, o “programa” é um script interpretado
diretamente pelo módulo no processo do Apache, portanto não ocorre exec. Ao contrário,
a versão do Novell AppArmor do Apache chama change_hat() nomeando um
subperfil (um “hat”) correspondente ao nome do URI solicitado.

NOTA

O nome apresentado para o script ser executado pode não ser o URI,
dependendo de como o Apache foi configurado para onde procurar scripts de
módulo. Se você configurou o Apache para colocar scripts em um local
diferente, os diversos nomes aparecem em syslog quando o Novell AppArmor
reclama sobre violações de acesso. Consulte o Capítulo 4, Gerenciando
aplicativos em perfil (p 69).

Para scripts mod_perl e mod_php, é este o nome do script Perl ou a página PHP
solicitada. Por exemplo, adicionar este subperfil permite que a página localtime.php
execute e acesse a hora do sistema local:
/usr/sbin/httpd2-prefork^/cgi-bin
localtime.php {
/etc/localtime r,
/srv/www/cgi-bin/localtime.php r,
/usr/lib/locale/** r,
}

Se nenhum subperfil for definido, a versão do Novell AppArmor do Apache aplica o


hat DEFAULT_URI. Este subperfil é basicamente suficiente para exibir uma página
HTML. O hat DEFAULT_URI que o Novell AppArmor fornece por padrão é o seguinte:
/usr/sbin/suexec2 ixr,
/var/log/apache2/** rwl,
/home/*/public_html/** r,
/srv/www/htdocs/** r,

8 Guia de Administração do Novell AppArmor 2.0


/srv/www/icons/*.{gif,jpg,png} r,
/usr/share/apache2/** r,

Se quiser um perfil único do Novell AppArmor para todas as páginas da Web e scripts
CGI atendidos pelo Apache, um bom método é editar o subperfil DEFAULT_URI.

2.2.3 Imunizando agentes de rede


Para encontrar daemons de servidor de rede para os quais devam ser criados perfis,
você deve inspecionar as portas abertas da sua máquina, considerar os programas que
são respondidos nessas portas e fornecer perfis para tantos destes programas quanto
possível. Se você fornecer perfis a todos os programas com portas de rede abertas, um
ataque não poderá chegar ao sistema de arquivo na sua máquina sem passar por uma
política de perfil do Novell AppArmor.

Explore o seu servidor quanto a portas de rede abertas manualmente de fora da máquina
usando um scanner, como nmap, ou de dentro da máquina, usando netstat. Inspecione
a máquina para determinar que programas estão respondendo às portas abertas
descobertas.

Selecionando programas a imunizar 9


Criando perfis do Novell AppArmor
Este capítulo explica como criar e gerenciar perfis do Novell® AppArmor. Você poderá
3
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 (p 3).

3.1 Componentes e sintaxe dos perfis


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” (p 11).

3.1.1 Decompondo um perfil do Novell


AppArmor
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.

Criando perfis do Novell AppArmor 11


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,
}

❶ Comentário que nomeia o programa delimitado por esse perfil. Esse tipo de
comentário deve ser sempre precedido pelo sinal #.
❷ Caminho absoluto para o programa delimitado.
❸ As chaves {} funcionam como um container de declarações de inclusão de outros
perfis, além de entradas de caminho e capacidade.
❹ Esta diretiva extrai componentes de perfis do Novell AppArmor para simplificar
os perfis.
❺ As declarações das entradas de capacidade habilitam cada uma das 29 capacidades
de rascunho do POSIX.1e.
❻ Entrada de caminho que especifica quais áreas do sistema de arquivos o programa
pode acessar. A primeira parte da entrada de caminho especifica o caminho
absoluto para um arquivo (inclusive englobamento e expressões regulares), e a
segunda parte indica os modos de acesso permitidos (r para leitura, w para
gravação ex para execução). Um espaço em branco qualquer (espaço ou tabulação)
pode tanto preceder os nomes de caminho quanto separar os nomes de caminho
dos modos de acesso. O espaço em branco entre o modo de acesso e a vírgula do
final é opcional.

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

12 Guia de Administração do Novell AppArmor 2.0


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.

3.1.2 #include
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.

Abstrações
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/.

Criando perfis do Novell AppArmor 13


Pacotes de programas
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/.

3.1.3 Entradas de capacidade (POSIX.1e)


As declarações de capacidade consistem simplesmente na palavra “capacidade” seguida
do nome da capacidade do POSIX.1e definida na página de manual
capabilities(7).

3.2 Criando e gerenciando perfis do


Novell AppArmor
Existem três formas de criar e gerenciar perfis do Novell AppArmor, dependendo do
tipo de ambiente computacional que você prefere. Você pode usar a interface gráfica
do YaST (GUI do YaST), o modo baseado em texto ncurses do YaST (ncurses do
YaST) ou a interface da linha de comando. As três opções permitem a criação e
manutenção de perfis, além de oferecerem aos usuários opções baseadas em suas
necessidades.

A interface da linha de comando exige conhecimento dos comandos do Linux e o uso


de janelas de terminal. Os três métodos usam ferramentas especializadas do Novell

14 Guia de Administração do Novell AppArmor 2.0


AppArmor para criar os perfis. Assim, você não precisa criá-los manualmente, o que
seria muito demorado.

3.2.1 Usando a GUI do YaST


Para usar a GUI do YaST para criar e gerenciar perfis do Novell AppArmor, consulte
a Seção 3.3, “Criando perfis do Novell AppArmor com a GUI do YaST” (p 16).

3.2.2 Usando ncurses do YaST


O ncurses do YaST pode ser usado para criar e gerenciar perfis do Novell AppArmor,
sendo mais indicado para usuários com limitação de largura de banda na conexão com
o servidor. Acesse ncurses do YaST digitando yast enquanto está conectado a um
console ou janela de terminal como Root. O ncurses do YaST tem os mesmos recursos
que a GUI do YaST.

Consulte as instruções da Seção 3.3, “Criando perfis do Novell AppArmor com a GUI
do YaST” (p 16) para criar e gerenciar perfis do Novell AppArmor no ncurses do YaST.
Lembre-se que as telas são diferentes, mas funcionam da mesma maneira.

3.2.3 Usando a interface da linha de


comando
A interface da linha de comando exige conhecimento dos comandos do Linux e o uso
de janelas de terminal. Para usar a interface da linha de comando para criar e gerenciar
perfis do Novell AppArmor, consulte a Seção 3.4, “Criando perfis do Novell AppArmor
usando a interface da linha de comando” (p 40).

A interface da linha de comando permite acesso a algumas ferramentas não disponíveis


aos demais métodos de gerenciamento do Novell AppArmor:

reclamação
Coloca os perfis no modo de reclamação. Recoloque-os no modo forçado quando
quiser que o sistema ponha em vigor as regras dos perfis, e não apenas registre
informações. Para obter mais informações sobre essa ferramenta, consulte “Modo
de aprendizagem ou reclamação” (p 49).

Criando perfis do Novell AppArmor 15


forçado
Recoloca os perfis no modo forçado para que o sistema ponha em vigor as regras
dos perfis, e não apenas registre informações. Para obter mais informações sobre
essa ferramenta, consulte a “Modo forçado” (p 50).

unconfined
O comando unconfined (não delimitado) executa uma auditoria no servidor, em
busca dos processos em execução dedicados a escutar conexões de rede, e informa
se eles possuem perfis.

autodep
Gera o esqueleto de um perfil para um programa e o carrega no módulo do Novell
AppArmor em modo de reclamação.

3.3 Criando perfis do Novell


AppArmor com a GUI do YaST
Abra a GUI do YaST iniciando YaST → Novell AppArmor a partir do menu principal.
O Novell AppArmor é aberto na interface do YaST conforme mostrado abaixo:

NOTA

Você também pode acessar a GUI do YaST abrindo uma janela de terminal,
conectando-se como Root e digitando yast2.

16 Guia de Administração do Novell AppArmor 2.0


No frame da direita, estão vários ícones de opção do Novell AppArmor. Se o Novell
AppArmor não for exibido no frame esquerdo da janela do YaST ou se os ícones do
Novell AppArmor não forem exibidos, reinstale o Novell AppArmor. As seguintes
ações estão disponíveis através do Novell AppArmor.

Clique em um dos seguintes ícones do Novell AppArmor e vá para a seção indicada


abaixo:

Assistente para Adicionar Perfil


Para obter detalhes sobre as etapas, consulte a Seção 3.3.1, “Adicionando um perfil
usando o assistente” (p 18).

Adicionar Perfil Manualmente


Adiciona um perfil do Novell AppArmor para um aplicativo no seu sistema sem a
ajuda de um assistente. Para obter detalhes sobre as etapas, consulte a Seção 3.3.2,
“Adicionar Perfil Manualmente” (p 24).

Editar Perfil
Edita um perfil do Novell AppArmor existente no seu sistema. Para obter detalhes
sobre as etapas, consulte a Seção 3.3.3, “Editando um perfil” (p 30).

Apagar Perfil
Apaga um perfil do Novell AppArmor existente no sistema. Para obter detalhes
sobre as etapas, consulte a Seção 3.3.4, “Apagando um perfil” (p 31).

Criando perfis do Novell AppArmor 17


Assistente para Atualizar Perfil
Para obter detalhes sobre as etapas, consulte a Seção 3.3.5, “Atualizando perfis a
partir de entradas do Syslog” (p 32).

Relatórios do AppArmor
Para obter detalhes sobre as etapas, consulte a Seção 4.3, “Relatórios” (p 73).

Painel de Controle do AppArmor


Para obter detalhes sobre as etapas, consulte a Seção 3.3.6, “Gerenciando o status
do Novell AppArmor e dos eventos de segurança” (p 37).

3.3.1 Adicionando um perfil usando o


assistente
O Assistente para Adicionar Perfil se destina a configurar perfis do Novell AppArmor
com as ferramentas de perfil do Novell AppArmor, genprof (Gerar Perfil) e logprof
(Atualizar Perfis do Arquivo de Registro do Modo de Aprendizagem). Para obter mais
informações sobre essas ferramentas, consulte a Seção 3.5.3, “Resumo das ferramentas
de perfil” (p 48).

1 Interrompa o aplicativo antes de criar o perfil para garantir que sua inicialização
seja incluída no perfil. Para tal, verifique se o aplicativo ou daemon não está
sendo executado antes de criar seu perfil.

Por exemplo, digite /etc/init.d/PROGRAMA stop em uma janela de


terminal quando estiver conectado como Root, substituindo PROGRAMA pelo
nome do programa cujo perfil deve ser criado.

2 Se você ainda não tiver feito isso, na GUI do YaST, clique em Novell AppArmor
→ Assistente para Adicionar Perfil.

18 Guia de Administração do Novell AppArmor 2.0


3 Digite o nome do aplicativo ou navegue até a localização do programa.

4 Clique em Criar. Será executada uma ferramenta do Novell AppArmor chamada


autodep, que realiza uma análise estática do programa selecionado e carrega um
perfil aproximado no módulo do Novell AppArmor. Para obter mais informações
sobre o autodep, consulte “autodep” (p 48).

A janela Assistente de Criação de Perfil do AppArmor será exibida.

Criando perfis do Novell AppArmor 19


Em segundo plano, o Novell AppArmor também colocará o perfil no modo de
aprendizagem. Para obter mais informações sobre o modo de aprendizagem,
consulte “Modo de aprendizagem ou reclamação” (p 49).

5 Execute o aplicativo cujo perfil está sendo criado.

6 Execute o máximo possível de funções do aplicativo para que o modo de


aprendizagem possa registrar os arquivos e diretórios cujo acesso o programa
exige para funcionar adequadamente.

7 Clique em Explorar Entradas do Registro do Sistema para Adicionar ao Perfil


para analisar os arquivos de registro do modo de aprendizagem. Isso gera uma
série de perguntas que devem ser respondidas para guiar o assistente na geração
do perfil de segurança.

NOTA

Se houver solicitações para adicionar hats, vá para o Capítulo 5, Criando


perfil dos aplicativos web com o ChangeHat Apache (p 99).

As perguntas enquadram-se em duas categorias:

• Um programa que tem perfil requisita um recurso que não consta do perfil
(consulte a Figura 3.1, “Exceção do modo de aprendizagem: controlando o
acesso a recursos específicos” (p 21)). A exceção do modo de aprendizagem
exige que você permita ou negue acesso a um determinado recurso.

• O programa cujo perfil foi gerado executa outro programa e a transição do


domínio de segurança não foi definida (consulte a Figura 3.2, “Exceção do
modo de aprendizagem: definindo permissões de execução para uma entrada”
(p 21)). A exceção do modo de aprendizagem exige que você defina
permissões de execução para uma entrada.

Cada um desses casos gera uma série de perguntas que devem ser respondidas
para adicionar o recurso ou o programa ao perfil. As duas figuras a seguir são
um exemplo de cada caso. As etapas subseqüentes mostram as opções de resposta
a essas perguntas.

A janela Assistente de Criação de Perfil do AppArmor será exibida.

20 Guia de Administração do Novell AppArmor 2.0


Figura 3.1 Exceção do modo de aprendizagem: controlando o acesso a recursos
específicos

Figura 3.2 Exceção do modo de aprendizagem: definindo permissões de execução


para uma entrada

Criando perfis do Novell AppArmor 21


8 O Assistente para Adicionar Perfil começa sugerindo entradas de caminho de
diretório acessadas pelo aplicativo cujo perfil está sendo criado (como mostrado
na Figura 3.1, “Exceção do modo de aprendizagem: controlando o acesso a
recursos específicos” (p 21)) ou pedindo-lhe que defina permissões de execução
para entradas (como mostrado na Figura 3.2, “Exceção do modo de aprendizagem:
definindo permissões de execução para uma entrada” (p 21)).

a No caso da Figura 3.1, “Exceção do modo de aprendizagem: controlando


o acesso a recursos específicos”: Das opções a seguir, selecione aquela que
atende à solicitação de acesso, a qual pode ser uma inclusão sugerida, uma
determinada versão englobada do caminho ou o nome do próprio caminho.
Observe que nem todas essas opções estarão sempre disponíveis.

#include
É a parte de um perfil do Novell AppArmor relativa a um arquivo de
inclusão. 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. É
recomendável selecionar inclusões quando sugerido.

Versão englobada
Para acessá-la, clique em Englobar, conforme descrito na próxima
etapa. Para obter informações sobre a sintaxe de englobamento, consulte
a Seção 3.6, “Nomes de caminhos e englobamento” (p 65).

Nome do caminho
O próprio caminho que o programa precisa acessar para funcionar
adequadamente.

b No caso da Figura 3.2, “Exceção do modo de aprendizagem: definindo


permissões de execução para uma entrada”: Das opções a seguir, selecione
aquela que atende à solicitação de acesso.

Herdar
Permanecer no mesmo perfil de segurança (perfil do pai).

Perfil
Requer a existência de um perfil à parte para o programa executado.

22 Guia de Administração do Novell AppArmor 2.0


Não delimitado
Executa o programa sem um perfil de segurança.

ATENÇÃO

Só execute não delimitado se absolutamente necessário. A


seleção da opção Não delimitado executa o novo programa sem
nenhuma proteção do AppArmor.

9 Após selecionar um caminho de diretório, você precisa processá-lo como entrada


no perfil do Novell AppArmor. Para isso, clique em Permitir ou Negar. Caso
não fique satisfeito com a entrada de caminho de diretório exibida, você poderá
usar as opções Englobar ou Editar.

As seguintes opções estão disponíveis para processar as entradas do modo de


aprendizagem e criar o perfil:

Permitir
Concede ao programa acesso às entradas de caminho de diretório
especificadas. O Assistente para Adicionar Perfil sugere acesso a permissões
de arquivo. Para obter mais informações sobre isso, consulte a Seção 3.7,
“Modos de acesso a permissões de arquivo” (p 66).

Negar
Clique em Negar para impedir o acesso do programa às entradas de caminho
de diretório especificadas.

Englobar
Se acessada com um clique, esta opção modifica o caminho do diretório
(usando curingas) para incluir todos os arquivos no diretório de entrada
sugerido. Se acessada com dois cliques, ela permite acesso a todos os arquivos
e subdiretórios abaixo do mostrado.

Para obter mais informações sobre a sintaxe de englobamento, consulte a


Seção 3.6, “Nomes de caminhos e englobamento” (p 65).

Englobar c/ ext.
Modifica o caminho do diretório original mantendo a extensão do arquivo.
Se você clicar uma vez, /etc/apache2/arquivo.ext se tornará
/etc/apache2/*.ext, com o acréscimo do curinga (asterisco) no lugar

Criando perfis do Novell AppArmor 23


do nome do arquivo. Isso permite ao programa acessar todos os arquivos
dos diretórios sugeridos que tiverem a extensão .ext. Se você clicar duas
vezes, a opção permitirá acesso a todos os arquivos (com essa extensão) e
subdiretórios abaixo do mostrado.

Editar
Permite a edição da linha realçada. A nova linha (editada) aparece na parte
inferior da lista.

Interromper
Interrompe o logprof, descartando todas as mudanças de regra inseridas e
deixando inalterados todos os perfis.

Concluir
Fecha o logprof, gravando todas as mudanças de regra inseridas e
modificando todos os perfis.

Clique em Permitir ou Negar para cada entrada do modo de aprendizagem. Isso


contribuirá para criar o perfil do Novell AppArmor.

NOTA

O número de entradas do modo de aprendizagem corresponde à


complexidade do aplicativo.

Repita as etapas anteriores se precisar executar mais funções do aplicativo.

Ao terminar, clique em Concluir. Clique em Sim no pop-up exibido para sair do


Assistente de Criação de Perfis. O perfil será gravado e carregado no módulo do
Novell AppArmor.

3.3.2 Adicionar Perfil Manualmente


O Novell AppArmor permite-lhe criar um perfil do Novell AppArmor adicionando
manualmente entradas a ele. Basta selecionar o aplicativo cujo perfil deseja criar e
adicionar as entradas.

1 Para adicionar um perfil, abra YaST → Novell AppArmor. A interface do Novell


AppArmor é aberta.

24 Guia de Administração do Novell AppArmor 2.0


2 No Novell AppArmor, clique em Adicionar Perfil Manualmente (consulte a
Figura 3.3, “Adicionando um perfil manualmente: selecionar aplicativo” (p 25)).

Figura 3.3 Adicionando um perfil manualmente: selecionar aplicativo

3 Navegue até o aplicativo cujo perfil deseja criar.

4 Quando o localizar, selecione-o e clique em Abrir. Será exibido um perfil básico,


vazio, na janela Caixa de Diálogo Perfil do Novell AppArmor.

Criando perfis do Novell AppArmor 25


5 Na janela Caixa de Diálogo Perfil do AppArmor, você pode adicionar, editar ou
apagar entradas de perfis do Novell AppArmor clicando nos botões
correspondentes e consultando as seguintes seções: “Adicionando uma entrada”
(p 26), “Editando uma entrada” (p 29) ou “Editando uma entrada” (p 29).

6 Ao terminar, clique em Concluído.

Adicionando uma entrada


Esta seção explica a opção Adicionar Entrada, que pode ser encontrada na Seção 3.3.2,
“Adicionar Perfil Manualmente” (p 24) ou na Seção 3.3.3, “Editando um perfil” (p 30).
Quando você seleciona Adicionar Entrada, uma lista suspensa exibe os tipos de entrada
que podem ser adicionados ao perfil do Novell AppArmor.

• Selecione uma das seguintes opções nessa lista:

Arquivo
Na janela pop-up, especifique o caminho absoluto para um arquivo e o tipo
de acesso permitido. Ao terminar, clique em OK.

Use englobamento se necessário. Para obter informações sobre englobamento,


consulte a Seção 3.6, “Nomes de caminhos e englobamento” (p 65). Para
obter informações sobre permissão de acesso a arquivo, consulte a Seção 3.7,
“Modos de acesso a permissões de arquivo” (p 66).

26 Guia de Administração do Novell AppArmor 2.0


Diretório
Na janela pop-up, especifique o caminho absoluto para um diretório e o tipo
de acesso permitido. Use englobamento se necessário. Ao terminar, clique
em OK.

Para obter informações sobre englobamento, consulte a Seção 3.6, “Nomes


de caminhos e englobamento” (p 65). Para obter informações sobre permissão
de acesso a arquivo, consulte a Seção 3.7, “Modos de acesso a permissões
de arquivo” (p 66).

Capacidade
Na janela pop-up, selecione as capacidades adequadas. Estas são declarações
que habilitam cada uma das 32 capacidades do POSIX.1e. Consulte a
Seção 3.1.1, “Decompondo um perfil do Novell AppArmor” (p 11) para
obter mais informações sobre capacidades. Ao concluir o processo de seleção,
clique em OK.

Criando perfis do Novell AppArmor 27


Inclusão
Na janela pop-up, navegue até os arquivos a usar como inclusões. As
inclusões são diretivas que extraem componentes de outros perfis do Novell
AppArmor para simplificar perfis. Para obter mais informações, consulte a
Seção 3.1.2, “#include” (p 13).

28 Guia de Administração do Novell AppArmor 2.0


Editando uma entrada
Esta seção explica a opção Editar Entrada, que pode ser encontrada na Seção 3.3.2,
“Adicionar Perfil Manualmente” (p 24) ou na Seção 3.3.3, “Editando um perfil” (p 30).
Quando você seleciona Editar Entrada, a janela pop-up do explorador de arquivos é
aberta. A partir daqui, você poderá editar a entrada selecionada.

Na janela pop-up, especifique o caminho absoluto para um arquivo e o tipo de acesso


permitido. Use englobamento se necessário. Ao terminar, clique em OK.

Para obter informações sobre englobamento, consulte a Seção 3.6, “Nomes de caminhos
e englobamento” (p 65). Para obter informações sobre permissão de acesso a arquivo,
consulte a Seção 3.7, “Modos de acesso a permissões de arquivo” (p 66).

Apagando uma entrada


Esta seção explica a opção Apagar Entrada, que pode ser encontrada na Seção 3.3.2,
“Adicionar Perfil Manualmente” (p 24) ou na Seção 3.3.3, “Editando um perfil” (p 30).
Se você selecionar uma entrada e, em seguida, Apagar Entrada, o Novell AppArmor
a removerá.

Criando perfis do Novell AppArmor 29


3.3.3 Editando um perfil
O Novell AppArmor permite-lhe editar manualmente perfis do Novell AppArmor
adicionando, editando ou apagando entradas. Basta selecionar o perfil e depois adicionar,
editar ou apagar as entradas desejadas. Para editar um perfil, siga estas etapas:

1 Abra YaST → Novell AppArmor.

2 Em Novell AppArmor, clique em Editar Perfil. A janela Editar Perfil — Escolher


Perfil a Editar será exibida.

3 Selecione o perfil a editar na lista de programas relacionados.

4 Clique em Próximo. A janela Caixa de Diálogo Perfil do AppArmor exibirá o


perfil.

30 Guia de Administração do Novell AppArmor 2.0


5 Na janela Caixa de Diálogo Perfil do AppArmor, você pode adicionar, editar ou
apagar entradas de perfis do Novell AppArmor clicando nos botões
correspondentes e consultando as seguintes seções: “Adicionando uma entrada”
(p 26), “Editando uma entrada” (p 29) ou “Apagando uma entrada” (p 29).

6 Ao terminar, clique em Concluído.

7 Clique em Sim no pop-up exibido para confirmar as mudanças ao perfil.

3.3.4 Apagando um perfil


O Novell AppArmor permite-lhe apagar um perfil do Novell AppArmor manualmente.
Basta selecionar o aplicativo cujo perfil deseja apagar e seguir estas etapas:

1 Abra YaST → Novell AppArmor. A interface do Novell AppArmor é exibida.

2 Em Novell AppArmor, clique no ícone Apagar Perfil. A janela Apagar Perfil —


Escolher Perfil a Apagar será aberta.

Criando perfis do Novell AppArmor 31


3 Selecione o perfil que deseja apagar.

4 Clique em Próximo.

5 Clique em Sim no pop-up exibido para apagar o perfil.

3.3.5 Atualizando perfis a partir de entradas


do Syslog
O assistente de perfis do Novell AppArmor usa o logprof, a ferramenta que verifica
arquivos de registro e lhe permite atualizar perfis. O logprof rastreia as mensagens do
módulo Novell AppArmor que representam exceções para todos os perfis em execução
no sistema. Essas exceções representam o comportamento do aplicativo em questão
que está fora da definição do seu perfil. Você pode adicionar o novo comportamento
ao perfil relevante selecionando a entrada de perfil sugerida.

1 Abra YaST → Novell AppArmor. A interface do Novell AppArmor é exibida.

2 Em Novell AppArmor, clique em Assistente para Atualizar Perfil. A janela


Assistente de Perfis do AppArmor será exibida.

32 Guia de Administração do Novell AppArmor 2.0


Com a execução do Assistente para Atualizar Perfis (logprof), os arquivos de
registro do modo de aprendizagem são analisados. Isso gera uma série de
perguntas que devem ser respondidas para guiar o logprof na geração do perfil
de segurança.

As perguntas enquadram-se em duas categorias:

• Um programa que tem perfil requisita um recurso que não consta do perfil
(consulte a Figura 3.4, “Exceção do modo de aprendizagem: controlando o
acesso a recursos específicos” (p 34)).

• O programa cujo perfil foi gerado executa outro programa e a transição do


domínio de segurança não foi definida (consulte a Figura 3.5, “Exceção do
modo de aprendizagem: definindo permissões de execução para uma entrada”
(p 34)).

Cada um desses casos gera uma pergunta que deve ser respondida para que você
possa adicionar o recurso ou programa ao perfil. As duas figuras a seguir são um
exemplo de cada caso. As etapas subseqüentes mostram as opções de resposta a
essas perguntas.

Criando perfis do Novell AppArmor 33


Figura 3.4 Exceção do modo de aprendizagem: controlando o acesso a recursos
específicos

Figura 3.5 Exceção do modo de aprendizagem: definindo permissões de execução


para uma entrada

34 Guia de Administração do Novell AppArmor 2.0


3 O logprof começa sugerindo entradas de caminho de diretório acessadas pelo
aplicativo cujo perfil está sendo criado (como mostrado na Figura 3.4, “Exceção
do modo de aprendizagem: controlando o acesso a recursos específicos” (p 34))
ou pedindo-lhe que defina permissões de execução para entradas (como mostrado
na Figura 3.5, “Exceção do modo de aprendizagem: definindo permissões de
execução para uma entrada” (p 34)).

a No caso da Figura 3.4, “Exceção do modo de aprendizagem: controlando


o acesso a recursos específicos” (p 34): Das opções a seguir, selecione
aquela que atende à solicitação de acesso, a qual pode ser uma inclusão
sugerida, uma determinada versão englobada do caminho ou o nome do
próprio caminho. Observe que nem todas essas opções estarão sempre
disponíveis.

#include
É a parte de um perfil do Novell AppArmor relativa a um arquivo de
inclusão. 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. É
recomendável selecionar inclusões quando sugerido.

Versão englobada
Para acessá-la, clique em Englobar, conforme descrito na próxima
etapa. Para obter informações sobre a sintaxe de englobamento, consulte
a Seção 3.6, “Nomes de caminhos e englobamento” (p 65).

Nome do caminho
O próprio caminho que o programa precisa acessar para funcionar
adequadamente.

b No caso da Figura 3.5, “Exceção do modo de aprendizagem: definindo


permissões de execução para uma entrada” (p 34): Das opções a seguir,
selecione aquela que atende à solicitação de acesso:

Herdar
permanecer no mesmo perfil de segurança (perfil do pai)

Perfil
requer a existência de um perfil à parte para o programa executado

Criando perfis do Novell AppArmor 35


Não delimitado
o programa é executado sem um perfil de segurança

ATENÇÃO

Só execute não delimitado se absolutamente necessário. A


seleção da opção Não delimitado executa o novo programa sem
nenhuma proteção do AppArmor.

4 Após selecionar um caminho de diretório, você precisa processá-lo como entrada


no perfil do Novell AppArmor. Para isso, clique em Permitir ou Negar. Caso
não fique satisfeito com a entrada de caminho de diretório exibida, você poderá
usar as opções Englobar ou Editar.

As seguintes opções estão disponíveis para processar as entradas do modo de


aprendizagem e criar o perfil:

Permitir
Concede ao programa acesso às entradas de caminho de diretório
especificadas. O Assistente de Criação de Perfis sugere acesso a permissões
de arquivo. Para obter mais informações sobre isso, consulte a Seção 3.7,
“Modos de acesso a permissões de arquivo” (p 66).

Negar
Clique em Negar para impedir o acesso do programa às entradas de caminho
de diretório especificadas.

Englobar
Se acessada com um clique, esta opção modifica o caminho do diretório
(usando curingas) para incluir todos os arquivos no diretório de entrada
sugerido. Se acessada com dois cliques, ela permite acesso a todos os arquivos
e subdiretórios abaixo do mostrado.

Para obter mais informações sobre a sintaxe de englobamento, consulte a


Seção 3.6, “Nomes de caminhos e englobamento” (p 65).

Englobar c/ ext.
Modifica o caminho do diretório original mantendo a extensão do arquivo.
Se você clicar uma vez, /etc/apache2/arquivo.ext se tornará
/etc/apache2/*.ext, com o acréscimo do curinga (asterisco) no lugar

36 Guia de Administração do Novell AppArmor 2.0


do nome do arquivo. Isso permite ao programa acessar todos os arquivos
dos diretórios sugeridos que tiverem a extensão .ext. Se você clicar duas
vezes, a opção permitirá acesso a todos os arquivos (com essa extensão) e
subdiretórios abaixo do mostrado.

Editar
Permite a edição da linha realçada. A nova linha (editada) aparece na parte
inferior da lista.

Interromper
Interrompe o logprof, descartando todas as mudanças de regra inseridas e
deixando inalterados todos os perfis.

Concluir
Fecha o logprof, gravando todas as mudanças de regra inseridas e
modificando todos os perfis.

Clique em Permitir ou Negar para cada entrada do modo de aprendizagem. Isso


contribuirá para criar o perfil do Novell AppArmor.

NOTA

O número de entradas do modo de aprendizagem corresponde à


complexidade do aplicativo.

Repita as etapas anteriores se precisar executar mais funções do aplicativo.

Ao terminar, clique em Concluir. Clique em Sim no pop-up exibido para sair do


Assistente de Criação de Perfis. O perfil será gravado e carregado no módulo do
Novell AppArmor.

3.3.6 Gerenciando o status do Novell


AppArmor e dos eventos de segurança
O Novell AppArmor permite-lhe mudar o status do Novell AppArmor e configurar a
notificação de eventos.

Criando perfis do Novell AppArmor 37


Mudando o status do Novell AppArmor
Você pode mudar o status do Novell AppArmor habilitando-o e desabilitando-o.
A habilitação do Novell AppArmor protege o sistema contra potenciais explorações
de programas. A desabilitação do Novell AppArmor remove a proteção do sistema,
mesmo que você tenha configurado os perfis.

Configurando a notificação de eventos


Você pode determinar como e quando será notificado quando ocorrerem eventos
de segurança do sistema.

NOTA

É preciso configurar no servidor SUSE Linux um servidor de correio que


possa enviar correspondência usando SMTP (Simple Mail Transfer Protocol,
Protocolo de Transferência de Correio Simples). Por exemplo, postfix ou
exim, para que a notificação de eventos funcione.

Para configurar a notificação de eventos ou mudar o status do Novell AppArmor, siga


as etapas abaixo:

1 Quando você clica no Painel de Controle do Novell AppArmor, a janela


Configuração do Novell AppArmor é exibida (veja abaixo):

38 Guia de Administração do Novell AppArmor 2.0


2 Na tela Configuração do AppArmor, procure a mensagem de status habilitado
para saber se o Novell AppArmor e a notificação de eventos de segurança estão
em execução.

• Para mudar o status do Novell AppArmor, continue conforme descrito em


“Mudando o status do Novell AppArmor” (p 39).

• Para configurar a notificação de eventos de segurança, continue conforme


descrito na Seção 4.2.2, “Configurando notificações de eventos de segurança”
(p 71).

Mudando o status do Novell AppArmor


Ao mudar o status do Novell AppArmor, você o define como habilitado ou desabilitado.
Quando está habilitado, o Novell AppArmor está instalado, em execução e forçando
as políticas de segurança do Novell AppArmor.

1 Para habilitar o Novell AppArmor, abra YaST → Novell AppArmor. O menu


principal do Novell AppArmor é aberto.

2 No menu principal do Novell AppArmor, clique em Painel de Controle do


AppArmor. A janela Configuração do AppArmor será exibida.

3 Na seção Habilitar Novell AppArmor da janela, clique em Configurar. A caixa


de diálogo Habilitar Novell AppArmor será aberta.

Criando perfis do Novell AppArmor 39


4 Habilite o Novell AppArmor selecionando Habilitar ou desabilite-o selecionando
Desabilitar. Em seguida, clique em OK.

5 Clique em Concluído na janela Configuração do AppArmor.

6 Clique em Arquivo → Sair no Centro de Controle do YaST.

3.4 Criando perfis do Novell


AppArmor usando a interface da
linha de comando
O Novell AppArmor permite-lhe usar uma interface de linha de comando em vez da
GUI para gerenciar e configurar a segurança do sistema.

3.4.1 Verificando o status do módulo


AppArmor
O módulo AppArmor pode ter um de três status:

Descarregado
O módulo AppArmor não está carregado no kernel.

Em execução
O módulo AppArmor está carregado no kernel e forçando políticas de programa
do Novell AppArmor.

Interrompido
O módulo AppArmor está carregado no kernel, mas nenhuma política está sendo
forçada.

40 Guia de Administração do Novell AppArmor 2.0


É possível detectar qual o status do módulo AppArmor inspecionando /sys/kernel/
security/apparmor/profiles. Se cat
/sys/kernel/security/apparmor/profiles fornecer uma lista de perfis,
o Novell AppArmor está em execução. Se estiver vazio e não retornar nada, o AppArmor
foi interrompido. Se o arquivo não existir, o AppArmor está descarregado.

O módulo AppArmor pode ser carregado e descarregado com os comandos de módulo


padrão do Linux, como modprobe, insmod, lsmod e rmmod, mas isso não é
recomendável. Recomendamos, em vez disso, gerenciar o Novell AppArmor através
do script rcapparmor, que pode executar as seguintes operações:

rcapparmor start
O script tem diferentes comportamentos, dependendo do status do módulo
AppArmor. Se este tiver sido descarregado, start carrega o módulo e o inicia,
colocando-o em estado de execução. Se tiver sido interrompido, o script start
faz o módulo pesquisar de novo os perfis do Novell AppArmor geralmente
encontrados em /etc/apparmor.d e o coloca em estado de execução. Se o
módulo já estiver em execução, o script start fornece um aviso e não empreende
nenhuma ação.

rcapparmor stop
Se o módulo AppArmor estiver em execução, interrompe-o através da remoção de
todos os perfis da memória do kernel, desabilitando inteiramente todos os controles
de acesso e colocando o módulo em estado de interrupção. Se o módulo AppArmor
estiver descarregado ou já tiver sido interrompido, o script stop tenta descarregar
os perfis novamente, mas nada acontece.

rcapparmor restart
Faz o módulo AppArmor pesquisar de novo os perfis geralmente encontrados em
/etc/apparmor.d sem deixar de delimitar os processos em execução,
adicionando novos perfis e removendo os que tiverem sido apagados de /etc/
apparmor.d.

rcapparmor kill
Remove irreversivelmente o módulo AppArmor do kernel. Isso não é seguro, pois
envolve a descarga de módulos do kernel do Linux. Esse comando destina-se apenas
a depurações e emergências, quando o módulo por acaso tiver de ser removido.

Criando perfis do Novell AppArmor 41


NOTA

O Novell AppArmor é um sistema de controle de acesso tão potente que


pode promover o bloqueio de sua máquina até para você mesmo, a ponto
de levá-lo a ter de inicializar o sistema a partir de mídia de recuperação
(como o CD 1 do SUSE Linux) para reaver o controle.

Para evitar esse tipo de problema, sempre efetue login não delimitado
como Root na máquina que está sendo configurada quando reiniciar o
módulo AppArmor. Caso o sistema se danifique a ponto de impedir o login
(por exemplo, decompondo o perfil associado ao daemon SSH), você pode
repará-lo usando seu prompt de Root em execução e reiniciando o módulo
AppArmor.

3.4.2 Criando perfis do Novell AppArmor


As definições de perfis do módulo AppArmor estão armazenadas no diretório /etc/
apparmor.d/ como arquivos de texto simples.

ATENÇÃO

Todos os arquivos do diretório /etc/apparmor.d/ são interpretados como


perfis e carregados como tais. A renomeação dos arquivos que estão nesse
diretório não constitui um meio eficaz de impedir que os perfis sejam
carregados. É preciso removê-los desse diretório para gerenciá-los de forma
eficaz.

Use um editor de texto, como o vim, para acessar e modificar esses perfis. As opções
a seguir contêm etapas detalhadas para criar perfis:

Adicionando ou criando perfis do Novell AppArmor


Consulte a Seção 3.4.3, “Adicionando ou criando um perfil do Novell AppArmor”
(p 43).

Editando perfis do Novell AppArmor


Consulte a Seção 3.4.4, “Editando um perfil do Novell AppArmor” (p 43).

Apagando perfis do Novell AppArmor


Consulte a Seção 3.4.5, “Apagando um perfil do Novell AppArmor” (p 44).

42 Guia de Administração do Novell AppArmor 2.0


Para visualizar e editar perfis usando o vim, digite vim em uma janela de terminal. Para
habilitar o colorido de sintaxe ao editar um perfil do Novell AppArmor no vim, use os
comandos :syntax on e, em seguida, :set syntax=apparmor. Para obter
mais informações sobre o vim e o colorido de sintaxe, consulte “apparmor.vim” (p 63).

NOTA

Após fazer mudanças em um perfil, use o comando rcapparmor restart,


descrito na seção anterior. Ele faz o Novell AppArmor reler os perfis. Para obter
uma descrição detalhada da sintaxe desses arquivos, consulte o Capítulo 3,
Criando perfis do Novell AppArmor (p 11).

3.4.3 Adicionando ou criando um perfil do


Novell AppArmor
Para adicionar ou criar um perfil do Novell AppArmor para um aplicativo, use um
método sistêmico ou independente de geração de perfis, dependendo de suas
necessidades.

Geração independente de perfis


Presta-se à criação de perfis de aplicativos pequenos, com tempo de execução finito
(por exemplo: aplicativos clientes de usuário, como os clientes de e-mail). Consulte
a Seção 3.5.1, “Geração independente de perfis” (p 45).

Geração sistêmica de perfis


Presta-se à criação simultânea de perfis de muitos programas, bem como de
aplicativos cujo tempo de execução é de dias, semanas ou contínuo ao longo de
reinicializações (por exemplo: aplicativos de servidores de rede, como servidores
Web e de e-mail). Consulte a Seção 3.5.2, “Geração sistêmica de perfis” (p 46).

3.4.4 Editando um perfil do Novell


AppArmor
As etapas a seguir descrevem o procedimento para editar um perfil do Novell AppArmor.
Para entender melhor em que consiste um perfil, consulte a Seção 3.1, “Componentes
e sintaxe dos perfis” (p 11).

Criando perfis do Novell AppArmor 43


1 Se não estiver conectado como Root, digite su em uma janela de terminal.

2 Digite a senha de Root quando solicitado.

3 Para ir ao diretório, digite cd /etc/apparmor.d/.

4 Digite ls para visualizar todos os perfis atualmente instalados.

5 Abra o perfil a editar em um editor de texto, como o vim.

6 Faça as correções necessárias e grave o perfil.

7 Reinicie o Novell AppArmor digitando rcapparmor restart em uma janela


de terminal.

3.4.5 Apagando um perfil do Novell


AppArmor
As etapas a seguir descrevem o procedimento para apagar um perfil do Novell
AppArmor.

1 Se não estiver conectado como Root, digite su em uma janela de terminal.

2 Digite a senha de Root quando solicitado.

3 Para ir ao diretório do Novell AppArmor, digite cd /etc/apparmor.d/.

4 Digite ls para ver todos os perfis do Novell AppArmor atualmente instalados.

5 Apague o perfil de saída com rm nome do perfil.

6 Reinicie o Novell AppArmor digitando rcapparmor restart em uma janela


de terminal.

44 Guia de Administração do Novell AppArmor 2.0


3.5 Dois métodos de criação de perfis
Tendo em vista a sintaxe dos perfis do Novell AppArmor (consulte a Seção 3.1,
“Componentes e sintaxe dos perfis” (p 11)), você pode criá-los sem recorrer a
ferramentas. Entretanto, o trabalho será muito maior. Para evitar esse inconveniente,
use as ferramentas do Novell AppArmor para automatizar a criação e o aprimoramento
de perfis.

Há duas formas de criar perfis do Novell AppArmor e ferramentas de suporte a ambos


os métodos.

Geração independente de perfis


Presta-se à criação de perfis de aplicativos pequenos, com tempo de execução finito
(por exemplo: aplicativos clientes de usuário, como os clientes de e-mail). Para
obter mais informações, consulte a Seção 3.5.1, “Geração independente de perfis”
(p 45).

Geração sistêmica de perfis


Presta-se à criação simultânea de perfis de muitos programas, bem como de
aplicativos cujo tempo de execução é de dias, semanas ou contínuo ao longo de
reinicializações (por exemplo: aplicativos de servidores de rede, como servidores
Web e de e-mail). Para obter mais informações, consulte a Seção 3.5.2, “Geração
sistêmica de perfis” (p 46).

O desenvolvimento automatizado de perfis fica mais fácil com as ferramentas do Novell


AppArmor:

1 Escolha qual método de criação de perfis atende às suas necessidades.

2 Execute uma análise estática. Execute genprof ou autodep, dependendo do método


de criação de perfis escolhido.

3 Habilite a aprendizagem dinâmica. Habilite o modo de aprendizagem para todos


os programas cujo perfil deseja criar.

3.5.1 Geração independente de perfis


A geração e o aprimoramento independentes de perfis são gerenciados por um programa
chamado genprof. Trata-se de um método fácil porque o genprof cuida de tudo, mas é

Criando perfis do Novell AppArmor 45


limitado porque requer que o genprof seja executado durante toda a execução do teste
do programa (você não pode reinicializar a máquina enquanto estiver desenvolvendo
o perfil).

Para usar o genprof no método de geração independente de perfis, consulte “genprof”


(p 51).

3.5.2 Geração sistêmica de perfis


Este método se chama geração sistêmica de perfis porque atualiza de uma só vez todos
os perfis do sistema, ao contrário do genprof ou da geração independente de perfis,
que se volta apenas para um ou poucos perfis.

Com a geração sistêmica, a criação e o aprimoramento de perfis são um pouco menos


automatizados, porém mais flexíveis. Este método se presta à criação de perfis de
aplicativos de execução longa, cujo comportamento persiste após a reinicialização, ou
de grandes quantidades de programas cujos perfis devem ser criados de uma só vez.

Crie um perfil do Novell AppArmor para um grupo de aplicativos da seguinte forma:

1 Crie perfis para cada programa que compõe o aplicativo. Embora esse
método seja sistêmico, o Novell AppArmor ainda monitora apenas os programas
que têm perfis e seus filhos. Desta forma, para que o Novell AppArmor considere
um programa, é necessário que pelo menos o autodep crie um perfil aproximado
para ele. Para criar esse perfil aproximado, consulte “autodep” (p 48).

2 Coloque os perfis relevantes no modo de aprendizagem ou reclamação.


Habilite o modo de aprendizagem ou reclamação para todos os programas que
têm perfis digitando complain /etc/apparmor.d/* em uma janela de
terminal quando estiver conectado como Root.

Quando o modo de aprendizagem está habilitado, não há bloqueio das solicitações


de acesso mesmo que o perfil informe que elas devem ser bloqueadas. Isso lhe
permite executar diversos testes (como mostra o Passo 3 (p 47)) e "aprender" as
necessidades de acesso do programa para que ele funcione adequadamente. Com
essas informações, você pode decidir qual o grau de segurança do perfil.

Consulte “Modo de aprendizagem ou reclamação” (p 49) para obter instruções


mais detalhadas sobre o uso do modo de aprendizagem ou reclamação.

46 Guia de Administração do Novell AppArmor 2.0


3 Exercite o aplicativo. Execute o aplicativo e exerça suas funções. Cabe a
você decidir o quanto durará o teste do programa, mas é preciso que ele acesse
todos os arquivos que representam suas necessidades de acesso. Como a execução
não é supervisionada pelo genprof, esta etapa pode durar vários dias ou semanas
e abranger reinicializações completas do sistema.

4 Analise o registro. Na geração sistêmica de perfis, execute o logprof


diretamente, em vez de deixar que o genprof o execute (como na geração
independente). A forma geral do logprof é:
logprof [ -d /caminho/dos/perfis ] [ -f /caminho/do/arquivo/de/perfil
]

Consulte “logprof” (p 57) para obter mais informações sobre o uso do logprof.

5 Repita as etapas 3-4. Isso promoverá a geração de perfis ideais. A abordagem


iterativa capta conjuntos de dados menores, que podem ser treinados e
recarregados no mecanismo de políticas. As repetições subseqüentes geram menos
mensagens e se processam mais rápido.

6 Edite os perfis. Procure examinar os perfis gerados. Abra-os e edite-os em


/etc/apparmor.d/ usando o vim. Para obter informações sobre como extrair
o máximo do vim, consulte “apparmor.vim” (p 63).

7 Retorne ao modo “forçado”. É neste momento que o sistema volta a forçar


as regras dos perfis, em vez de apenas registrar informações. Isso pode ser feito
manualmente, através da remoção do texto flags=(complain) dos perfis,
ou automaticamente, através do uso do comando enforce (forçar), que funciona
da mesma forma que o comando complain (reclamar), mas coloca os perfis no
modo forçado.

Para garantir que todos os perfis saiam do modo de reclamação e entrem no modo
forçado, digite enforce /etc/apparmor.d/*.

8 Pesquise de novo todos os perfis. Para que o Novell AppArmor pesquise de


novo todos os perfis e mude o modo forçado no kernel, digite
/etc/init.d/apparmor restart.

Criando perfis do Novell AppArmor 47


3.5.3 Resumo das ferramentas de perfil
Todos os utilitários de criação de perfis do Novell AppArmor são fornecidos no pacote
RPM apparmor-utils. A maioria está armazenada em /usr/sbin. As seções a
seguir apresentam cada ferramenta.

autodep
Ferramenta que cria um perfil aproximado para o programa ou aplicativo que você está
submetendo a autodep. Você pode gerar perfis aproximados para executáveis binários
e programas de scripts interpretados. O perfil resultante é chamado de “aproximado”
porque não contém necessariamente todas as entradas de perfil que o programa precisa
para ser adequadamente delimitado pelo Novell AppArmor. O perfil aproximado mínimo
do autodep tem pelo menos uma diretiva de inclusão básica, a qual contém as entradas
de perfil essenciais à maioria dos programas. No caso de certos tipos de programa, o
autodep gera um perfil mais extenso. O perfil é gerado chamando recursivamente
ldd(1) nos executáveis relacionados na linha de comando.

Para gerar um perfil aproximado, use o programa autodep. O argumento do programa


pode ser simplesmente o nome do programa, que o autodep encontra pesquisando a
variável do caminho de seu shell, ou um caminho plenamente qualificado. O programa
em si pode ser de qualquer tipo (binário ELF, script de shell, script de Perl etc.), e o
autodep gera um perfil aproximado que deve ser aprimorado através do procedimento
dinâmico apresentado a seguir.

O perfil aproximado resultante é gravado no diretório /etc/apparmor.d usando a


convenção do Novell AppArmor segundo a qual o perfil é nomeado com base no
caminho absoluto do programa, substituindo-se as barras (/) do caminho por pontos
(.). A forma geral do autodep requer que você digite o seguinte em uma janela de
terminal quando estiver conectado como Root:
autodep [ -d /caminho/dos/perfis ] [programa1 programa2...]

Se você não digitar o(s) nome(s) do programa, um prompt lhe solicitará que o faça.
/caminho/dos/perfis substitui a localização padrão /etc/apparmor.d.

Para dar início ao processo, você deve criar perfis para o serviço de cada um dos
principais executáveis que fazem parte do aplicativo (tudo que possa começar sem a
condição de filho de outro programa que já tem um perfil). Se todos esses programas

48 Guia de Administração do Novell AppArmor 2.0


serão encontrados depende do aplicativo em questão. Eis aqui várias estratégias para
encontrar esse tipo de programa:

Diretórios
Se todos os programas cujos perfis você quer criar estiverem em um diretório que
não tenha nenhum outro programa, basta usar o comando autodep
/caminho/dos/seus/programas/* para criar perfis nominais para todos
os programas existentes nesse diretório.

Comando ps
Execute o aplicativo e use o comando padrão ps do Linux para detectar todos os
processos em execução. Em seguida, você terá de localizar manualmente esses
programas e executar o autodep para cada um. Se os programas estiverem em seu
caminho, o autodep os localizará para você. Se não estiverem, o comando padrão
locate (localizar) do Linux o ajudará a localizar esses programas. Se o comando
locate não funcionar (ele não é instalado por padrão no SUSE Linux), use find
. -name '*foo*' -print.

Modo de aprendizagem ou reclamação


A ferramenta do modo de aprendizagem ou reclamação detecta violações de regras de
perfis do Novell AppArmor (por exemplo, quando um programa acessa arquivos não
permitidos por seu perfil). Embora sejam permitidas, as violações são também
registradas. Para aprimorar perfis, habilite o modo de reclamação, execute o programa
através de um conjunto de testes para gerar eventos de registro que caracterizem as
necessidades de acesso do programa e façam o pós-processamento do registro com as
ferramentas do Novell AppArmor, a fim de transformar os eventos de registro em perfis
aprimorados.

A habilitação manual do modo de reclamação (usando a linha de comando) adiciona


um flag ao início do perfil, de modo que /bin/foo se torna /bin/foo
flags=(complain). Para usar o modo de reclamação, abra uma janela de terminal
quando estiver conectado como usuário Root e digite uma das linhas a seguir.

• Se o programa de exemplo (programa1) estiver em seu caminho, use:


complain [programa1 programa2 ...]

• Se o programa não estiver em seu caminho, especifique o caminho inteiro da


seguinte forma:

Criando perfis do Novell AppArmor 49


complain /sbin/programa1

• Se os perfis não estiverem em /etc/apparmor.d, digite o seguinte para substituir


a localização padrão:
complain /caminho/dos/perfis/ programa1

• Especifique o perfil para o programa1 da seguinte forma:


complain /etc/apparmor.d/sbin.programa1

Cada um dos comandos acima habilita o modo de reclamação para os perfis/programas


relacionados. O comando pode relacionar tanto programas quanto perfis. Se o nome
do programa não incluir seu caminho na íntegra, a ferramenta pesquisará $PATH para
o programa. Então, para exemplificar, complain /usr/sbin/* localiza perfis
associados a todos os programas existentes em /usr/sbin e os coloca no modo de
reclamação, e complain /etc/apparmor.d/* coloca todos os perfis existentes
em /etc/apparmor.d no modo de reclamação.

Modo forçado
A ferramenta do modo forçado detecta violações de regras de perfis do Novell AppArmor
(por exemplo, quando um programa acessa arquivos não permitidos por seu perfil). As
violações são registradas e não são permitidas. Por padrão, o modo forçado está
habilitado. Habilite o modo de reclamação quando quiser que os perfis do Novell
AppArmor controlem o acesso de um programa que possua perfil. O modo forçado
alterna com o de reclamação.

A habilitação manual do modo forçado (usando a linha de comando) adiciona um flag


ao início do perfil, de modo que /bin/foo se torna /bin/foo
flags=(enforce). Para usar o modo forçado, abra uma janela de terminal quando
estiver conectado como usuário Root e digite uma das linhas a seguir.

• Se o programa de exemplo (programa1) estiver em seu caminho, use:


enforce [programa1 programa2 ...]

• Se o programa não estiver em seu caminho, especifique o caminho inteiro da


seguinte forma:
enforce /sbin/programa1

50 Guia de Administração do Novell AppArmor 2.0


• Se os perfis não estiverem em /etc/apparmor.d, digite o seguinte para substituir
a localização padrão:
enforce /caminho/dos/perfis/ programa1

• Especifique o perfil para o programa1 da seguinte forma:


enforce /etc/apparmor.d/sbin.programa1

Cada um dos comandos acima habilita o modo forçado para os perfis e programas
relacionados.

Se você não digitar o nome do programa ou perfil, um prompt lhe solicitará que o faça.
/caminho/dos/perfis substitui a localização padrão /etc/apparmor.d.

O argumento pode ser tanto uma lista de programas quanto uma lista de perfis. Se o
nome do programa não incluir seu caminho na íntegra, a ferramenta pesquisará $PATH
para o programa. Para exemplificar, enforce /usr/sbin/* localiza perfis
associados a todos os programas existentes em /usr/sbin e os coloca no modo
forçado, e enforce /etc/apparmor.d/* coloca todos os perfis existentes em
/etc/apparmor.d no modo forçado.

genprof
genprof (ou Gerar Perfil) é o utilitário de geração de perfis do Novell AppArmor. Ele
executa autodep para o programa especificado, criando um perfil aproximado (caso o
programa ainda não tenha perfil), coloca-o no modo de reclamação, recarrega-o no
Novell AppArmor, marca o syslog e solicita ao usuário que execute o programa e exerça
suas funções. Sua sintaxe é a seguinte:
genprof [ -d /caminho/dos/perfis ]programa

Caso desejasse criar um perfil para o programa httpd2-prefork do servidor Web do


Apache, você teria de fazer o seguinte no shell do Root:

1 Digitar rcapache2 stop.

2 Em seguida, digitar genprof httpd2-prefork.

Então o genprof faria o seguinte:

Criando perfis do Novell AppArmor 51


• Resolveria o caminho inteiro do httpd2-prefork com base nas variáveis do
caminho de seu shell. Você também poderia especificar um caminho inteiro.
No SUSE Linux, o caminho completo seria /usr/sbin/
httpd2-prefork.

• Verificaria se já havia algum perfil para httpd2-prefork. Se houvesse, ele o


atualizaria. Se não, ele criaria um usando o programa autodep, descrito na
Seção 3.5.3, “Resumo das ferramentas de perfil” (p 48).

NOTA

Existe uma convenção de nomeação que relaciona o caminho


completo de um programa ao nome de arquivo de seu perfil, de
forma que as várias ferramentas de perfil do Novell AppArmor possam
manipulá-lo com consistência. A convenção é substituir a barra (/)
pelo ponto (.), de modo que o perfil do /usr/sbin/
httpd2-prefork seja armazenado em /etc/apparmor.d/usr
.sbin.httpd2-prefork.

• Colocaria o perfil desse programa no modo de aprendizagem ou reclamação


para que as violações de perfis fossem registradas, porém permitidas. O
evento de registro teria a seguinte aparência:
Oct 9 15:40:31 AppArmor: PERMITTING r access to
/etc/apache2/httpd.conf (httpd2-prefork(6068) profile
/usr/sbin/httpd2-prefork active /usr/sbin/httpd2-prefork)

• Marcaria o syslog com um sinalizador de início de eventos de registro para


consideração. Exemplo:
Sep 13 17:48:52 h2o root: GenProf: e2ff78636296f16d0b5301209a04430d

3 Quando a ferramenta solicitar, execute o aplicativo cujo perfil deve ser criado
em outra janela de terminal e use o máximo possível de funções do aplicativo
para que o modo de aprendizagem possa registrar os arquivos e diretórios cujo
acesso o programa exige para funcionar adequadamente. Por exemplo, digite
rcapache2 start em outra janela de terminal.

4 Selecione uma das seguintes opções quando concluir a execução das funções do
programa:

52 Guia de Administração do Novell AppArmor 2.0


• S executa o logprof com base no registro do sistema a partir do ponto em
que foi marcado quando o genprof foi iniciado e recarrega o perfil.

Se houver eventos de sistema no registro, o Novell AppArmor analisará os


arquivos de registro do modo de aprendizagem. Isso gera uma série de
perguntas que devem ser respondidas para guiar o genprof na geração do
perfil de segurança.

• F sai da ferramenta e retorna ao menu principal.

NOTA

Se houver solicitações para adicionar hats, vá para o Capítulo 5, Criando


perfil dos aplicativos web com o ChangeHat Apache (p 99).

5 Você deve responder a dois tipos de perguntas:

• Um programa que tem perfil requisita um recurso que não consta do perfil
(consulte o Exemplo 3.1, “Exceção do modo de aprendizagem: controlando
o acesso a recursos específicos” (p 53)).

• O programa cujo perfil foi gerado executa outro programa e a transição do


domínio de segurança não foi definida (consulte o Exemplo 3.2, “Exceção
do modo de aprendizagem: definindo permissões de execução para uma
entrada” (p 54)).

Cada um desses casos gera uma série de perguntas que devem ser respondidas
para adicionar o recurso ou o programa ao perfil. As duas figuras a seguir são
um exemplo de cada caso. As etapas subseqüentes mostram as opções de resposta
a essas perguntas.

Exemplo 3.1 Exceção do modo de aprendizagem: controlando o acesso a recursos


específicos
Lendo entradas de registro de /var/log/messages.
Atualizando perfis do apparmor em /etc/apparmor.d.

Perfil: /usr/sbin/xinetd
Executar: /usr/sbin/vsftpd

[(I)nherit] (Herdar)/ (P)rofile (Perfil) / (U)nconfined (Não delimitado)


/ (D)eny (Negar) / Abo(r)t (Interromper) / (F)inish) (Concluir)

Criando perfis do Novell AppArmor 53


Não é fácil lidar com acessos de execução. Você deve decidir qual dos três tipos
de permissões de execução deve conceder ao programa:

herdar (ix)
O filho herda o perfil do pai, sendo executado com os mesmos controles de
acesso que ele. Esse modo é útil quando um programa delimitado precisa
chamar outro programa delimitado sem ganhar as permissões do perfil de
destino nem perder as permissões do perfil atual. Ele é usado muitas vezes
quando o programa filho é um aplicativo ajudante, como quando o cliente
de /usr/bin/mail usa o programa inferior como pager ou o navegador
Mozilla usa o programa Acrobat para exibir arquivos PDF.

perfil (px)
O filho é executado usando seu próprio perfil, que deve ser carregado no
kernel. Se o perfil não estiver presente, as tentativas de execução do filho
serão malsucedidas (permissão negada). Isso tudo é mais útil quando o
programa pai está invocando um serviço global, como as pesquisas DNS,
ou enviando e-mail através do MTA do sistema.

não delimitado (ux)


O filho é executado sem nenhuma delimitação e sem a aplicação de nenhum
perfil do Novell AppArmor ao recurso em execução.

Exemplo 3.2 Exceção do modo de aprendizagem: definindo permissões de execução


para uma entrada
Adicionando /bin/ps ix ao perfil.

Perfil: /usr/sbin/xinetd Caminho: /etc/hosts.allow Novo Modo: r

[1 - /etc/hosts.allow]

[(A)llow] (Permitir) / (D)eny (Negar) / (N)ew (Novo) / (G)lob (Englobar)


/ Glob w/(E)xt (Englobar c/ Ext) / Abo(r)t (Interromper) / (F)inish
(Concluir)

O menu acima mostra o Novell AppArmor sugerindo entradas de caminho de


diretório que foram acessadas pelo aplicativo cujo perfil você está criando. Talvez
ele exigisse que você definisse permissões de execução para entradas.

O Novell AppArmor fornece um ou mais nomes de caminho ou inclusões. Clique


no número da opção para selecionar dentre uma ou mais das seguintes opções e
vá para a próxima etapa.

54 Guia de Administração do Novell AppArmor 2.0


NOTA

Nem sempre essas opções são apresentadas no menu do Novell


AppArmor.

#include
É a parte de um perfil do Novell AppArmor relativa a um arquivo de inclusão
(arquivo que 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. É recomendável selecionar inclusões
quando sugerido.

Versão englobada
Para acessá-la, clique em Englobar, conforme descrito na próxima etapa.
Para obter informações sobre a sintaxe de englobamento, consulte a Seção 3.6,
“Nomes de caminhos e englobamento” (p 65).

Nome do caminho
O próprio caminho que o programa precisa acessar para funcionar
adequadamente.

6 Após selecionar o nome do caminho ou inclusão, você pode processá-lo como


entrada no perfil do Novell AppArmor. Para isso, clique em Permitir ou Negar.
Caso não fique satisfeito com a entrada de caminho de diretório exibida, você
poderá usar as opções Englobar ou Editar.

As seguintes opções estão disponíveis para processar as entradas do modo de


aprendizagem e criar o perfil:

Pressionar Enter
Permite acesso ao caminho de diretório selecionado.

Permitir
Permite acesso às entradas de caminho de diretório especificadas. O Novell
AppArmor sugere acesso a permissão de arquivo. Para obter mais
informações, consulte a Seção 3.7, “Modos de acesso a permissões de
arquivo” (p 66).

Criando perfis do Novell AppArmor 55


Negar
Impede que o programa acesse as entradas de caminho de diretório
especificadas. O Novell AppArmor então passa para o próximo evento.

Nova
Solicita-lhe que forneça sua própria regra para esse evento, permitindo que
você especifique a forma da expressão regular que quiser. Se a expressão
fornecida não satisfizer ao evento que deu origem à solicitação, o Novell
AppArmor pedirá confirmação e solicitará que você redigite a expressão.

Englobar
Se acessada com um clique, esta opção modifica o caminho do diretório
(usando curingas) para incluir todos os arquivos no diretório de entrada
sugerido. Se acessada com dois cliques, ela permite acesso a todos os arquivos
e subdiretórios abaixo do mostrado.

Para obter mais informações sobre a sintaxe de englobamento, consulte a


Seção 3.6, “Nomes de caminhos e englobamento” (p 65).

Englobar c/ ext.
Quando selecionada, esta opção modifica o caminho do diretório original
mantendo a extensão do arquivo. Por exemplo, /etc/apache2/arquivo
.ext se tornará /etc/apache2/*.ext, com o acréscimo do curinga
(asterisco) no lugar do nome do arquivo. Isso permite ao programa acessar
todos os arquivos do diretório sugerido que tiverem a extensão .ext. Se
acessada com dois cliques, a opção permite acesso a todos os arquivos (que
tiverem a extensão indicada) e subdiretórios abaixo do mostrado.

Editar
Permite a edição da linha selecionada. A nova linha (editada) aparece na
parte inferior da lista.

Interromper
Interrompe o logprof, descartando todas as mudanças de regra inseridas e
deixando inalterados todos os perfis.

Concluir
Fecha o logprof, gravando todas as mudanças de regra inseridas e
modificando todos os perfis.

56 Guia de Administração do Novell AppArmor 2.0


7 Para visualizar e editar um perfil usando o vim, digite vim
/etc/apparmor.d/nome do perfil em uma janela de terminal. Para
habilitar o colorido de sintaxe ao editar um perfil do Novell AppArmor no vim,
use os comandos :syntax on e, em seguida, :set syntax=apparmor.
Para obter mais informações sobre o vim e o colorido de sintaxe, consulte
“apparmor.vim” (p 63).

logprof
O logprof é uma ferramenta interativa usada para examinar a saída dos modos de
aprendizagem ou reclamação encontrada nas entradas do syslog e depois gerar novas
entradas nos perfis de segurança do Novell AppArmor.

Quando é executado, o logprof começa a verificar os arquivos de registro produzidos


no modo de aprendizagem ou reclamação. Se houver novos eventos de segurança que
não estejam cobertos pelo conjunto de perfis existentes, ele sugere modificações para
o perfil. O modo de aprendizagem ou reclamação rastreia o comportamento dos
programas e o registra no syslog. O logprof usa essas informações para observar o
comportamento dos programas.

Quando um programa delimitado bifurca e executa outro programa, o logprof percebe


isso e pergunta ao usuário qual modo de execução deve ser usado ao iniciar o processo
filho. Os seguintes modos de execução são opções para iniciar o processo filho: ix, px
e ux. Se o processo filho possui um perfil à parte, a seleção padrão é px. Caso contrário,
o padrão do perfil é ix. Os processos filhos que possuem perfil à parte são submetidos
à execução do autodep e carregados no Novell AppArmor, caso este esteja em execução.

Quando o logprof é encerrado, os perfis são atualizados com as mudanças. Se o módulo


AppArmor estiver em execução, os perfis atualizados serão recarregados. Se algum
processo que tenha gerado eventos de segurança ainda estiver em execução no null-
complain-profile, ele passará a ser executado com base em seu próprio perfil.

Para executar o logprof, digite logprof em uma janela de terminal quando estiver
conectado como Root. As opções a seguir também podem ser usadas com o logprof:

logprof -d /caminho/do/diretório/do/perfil/
Especifica o caminho completo da localização dos perfis se eles não estiverem
armazenados no diretório padrão, /etc/apparmor.d/.

Criando perfis do Novell AppArmor 57


logprof -f /caminho/do/arquivo/de/perfil/
Especifica o caminho inteiro para a localização do arquivo de registro se este não
estiver armazenado no diretório padrão, /var/log/messages.

logprof -m "string marker in logfile"


Marca o ponto em que o logprof deve iniciar a pesquisa do registro do sistema. O
logprof ignora todos os eventos do registro que estiverem antes da marca
especificada. Se essa marca contiver espaços, deve estar entre aspas para funcionar
corretamente. Exemplo: logprof -m
e2ff78636296f16d0b5301209a04430d

O logprof verifica o registro, perguntando como lidar com cada evento registrado. Cada
pergunta contém uma lista numerada de regras do Novell AppArmor, as quais podem
ser adicionadas pressionando-se o número correspondente.

Por padrão, o logprof busca perfis em /etc/apparmor.d/ e verifica o registro de


/var/log/messages. Portanto, em muitos casos, basta executar logprof como
Root para criar o perfil.

Contudo, às vezes é preciso pesquisar arquivos de registro arquivados, como é o caso


quando o período de exercício do programa excede janela de rotação do registro (quando
o arquivo de registro é arquivado e um novo arquivo de registro é iniciado). Nesse caso,
digite zcat -f `ls -1tr /var/log/messages*` | logprof -f -.

Exemplo 1 do logprof
A seguir, é apresentado um exemplo de como o logprof lida com o acesso do httpd2-
prefork ao arquivo /etc/group. O exemplo usa [] para indicar a opção padrão.

Nesse exemplo, o acesso a /etc/group é parte do acesso do httpd2-prefork a serviços


de nomes. A resposta adequada é 1, a qual extrai um conjunto predefinido de regras
do Novell AppArmor. Ao selecionar 1 para #include, o pacote de serviços de nomes
resolve todas as perguntas futuras relativas às pesquisas DNS, além de tornar o perfil
menos frágil, pois qualquer mudança na configuração DNS e no respectivo pacote de
perfis de serviços de nomes só precisará ser feita uma vez, em vez de exigir a revisão
de muitos perfis.
Perfil: /usr/sbin/httpd2-prefork
Caminho: /etc/group
Novo Modo: r

[1 - #include <abstractions/nameservice>]

58 Guia de Administração do Novell AppArmor 2.0


2 - /etc/group
[(A)llow] (Permitir) / (D)eny (Negar) / (N)ew (Novo) / (G)lob (Englobar) /
Glob w/(E)xt (Englobar c/ Ext) / Abo(r)t (Interromper) / (F)inish (Concluir)

Selecione uma das seguintes respostas:

Pressionar Enter
Permite acesso ao caminho de diretório selecionado.

Permitir
Permite acesso às entradas de caminho de diretório especificadas. O Novell
AppArmor sugere acesso a permissão de arquivo. Para obter mais informações
sobre isso, consulte a Seção 3.7, “Modos de acesso a permissões de arquivo” (p 66).

Negar
Impede que o programa acesse as entradas de caminho de diretório especificadas.
O Novell AppArmor então move para o próximo evento.

Nova
Solicita-lhe que forneça sua própria regra para esse evento, permitindo que você
especifique a forma da expressão regular que quiser. Se a expressão fornecida não
atender ao evento que deu origem à solicitação, o Novell AppArmor pedirá
confirmação e solicitará que você redigite a expressão.

Englobar
Se acessada com um clique, esta opção modifica o caminho do diretório (usando
curingas) para incluir todos os arquivos no diretório de entrada sugerido. Se acessada
com dois cliques, ela permite acesso a todos os arquivos e subdiretórios abaixo do
mostrado.

Para obter mais informações sobre a sintaxe de englobamento, consulte a Seção 3.6,
“Nomes de caminhos e englobamento” (p 65).

Englobar c/ ext.
Quando selecionada, esta opção modifica o caminho do diretório original mantendo
a extensão do arquivo. Por exemplo, /etc/apache2/arquivo.ext se tornará
/etc/apache2/*.ext, com o acréscimo do curinga (asterisco) no lugar do
nome do arquivo. Isso permite ao programa acessar todos os arquivos do diretório
sugerido que tiverem a extensão .ext. Se acessada com dois cliques, a opção
permite acesso a todos os arquivos (que tiverem a extensão indicada) e subdiretórios
abaixo do mostrado.

Criando perfis do Novell AppArmor 59


Editar
Permite a edição da linha selecionada. A nova linha (editada) aparece na parte
inferior da lista.

Interromper
Interrompe o logprof, descartando todas as mudanças de regra inseridas e deixando
inalterados todos os perfis.

Concluir
Fecha o logprof, gravando todas as mudanças de regra inseridas e modificando
todos os perfis.

Exemplo 2 do logprof
Ao criar o perfil de vsftpd, vemos a seguinte pergunta:
Perfil: /usr/sbin/vsftpd
Caminho: /y2k.jpg
Novo Modo: r

[1 - /y2k.jpg]

(A)llow (Permitir) / [(D)eny] (Negar) / (N)ew (Novo) / (G)lob (Englobar) /


Glob w/(E)xt (Englobar c/ Ext) / Abo(r)t (Interromper) / (F)inish (Concluir)

A pergunta traz à tona várias coisas interessantes. Em primeiro lugar, observe que o
vsftpd está solicitando uma entrada de caminho no topo da árvore, embora no SUSE
Linux por padrão ele atenda arquivos de FTP de /srv/ftp. Isso é porque o httpd2-
prefork usa chroot e, na parte de código dentro da cadeia chroot, o Novell AppArmor
vê os acessos a arquivos em termos do ambiente chroot, em vez do caminho absoluto
global.

O segundo ponto de interesse é que, caso se queira conceder acesso de leitura no FTP
a todos os arquivos JPEG do diretório, é possível usar Englobar c/ Ext e o caminho
sugerido (/*.jpg). Isso derrubaria todas as regras que antes concediam acesso
individualmente a cada arquivo .jpg e evitaria todas as futuras perguntas relativas ao
acesso a arquivos .jpg.

Por fim, pode ser que o objetivo seja conceder mais acesso geral a arquivos de FTP.
Se você selecionasse Englobar na última entrada, o logprof substituiria o caminho
sugerido (/y2k.jpg) por /*. Ou, se você quisesse conceder ainda mais acesso a toda
a árvore do diretório, poderia usar a opção de caminho Nova e digitar /**.jpg (o que

60 Guia de Administração do Novell AppArmor 2.0


concederia acesso a todos os arquivos .jpg de toda a árvore do diretório) ou /** (o
que concederia acesso a todos os arquivos da árvore do diretório).

O exemplo acima diz respeito a acessos de leitura. Os acessos de gravação são similares.
Mas é recomendável mais cautela no emprego de expressões regulares para esse tipo
de acesso.

Os acessos de execução são mais complexos. Você deve decidir qual dos três tipos de
permissões de execução deve conceder:

Herdar (ix)
O filho herda o perfil do pai, sendo executado com os mesmos controles de acesso
que ele. Esse modo é útil quando um programa delimitado precisa chamar outro
programa delimitado sem ganhar as permissões do perfil de destino nem perder as
permissões do perfil atual. Ele é usado muitas vezes quando o programa filho é um
aplicativo ajudante, como quando o cliente de /usr/bin/mail usa o programa
inferior como pager ou o navegador Mozilla usa o programa Acrobat para exibir
arquivos PDF.

perfil (px)
O filho é executado usando seu próprio perfil, que deve ser carregado no kernel.
Se o perfil não estiver presente, as tentativas de execução do filho serão
malsucedidas (permissão negada). Isso tudo é mais útil quando o programa pai está
invocando um serviço global, como as pesquisas DNS, ou enviando e-mail através
do MTA do sistema.

não delimitado (ux)


O filho é executado sem nenhuma delimitação e sem a aplicação de nenhum perfil
do Novell AppArmor ao recurso em execução.

No exemplo seguinte, está sendo criado o perfil do /usr/bin/mail, um cliente de


e-mail, e o logprof descobriu que o /usr/bin/mail executa o /usr/bin/less
como aplicativo ajudante para fazer a “paginação” de mensagens de e-mail longas.
Conseqüentemente, ele apresenta este prompt:
/usr/bin/nail -> /usr/bin/less
(I)nherit (Herdar) / (P)rofile (Perfil) / (U)nconstrained (Não delimitado) /
(D)eny (Negar)

Criando perfis do Novell AppArmor 61


DICA

Ocorre que o arquivo executável real do /usr/bin/mail é o /usr/bin/


nail, o que não é um erro tipográfico.

Aparentemente, o /usr/bin/less é um programa simples para rolagem de texto


mais longo que a tela e, com efeito, é para isso que o /usr/bin/mail o utiliza.
Porém, na verdade, o less é um programa grande e potente que usa muitos outros
aplicativos ajudantes, como tar e rpm.

DICA

Execute o less em um arquivo tarball ou RPM para exibir o inventário desses


containers.

Não se deve executar o rpm automaticamente ao ler mensagens de e-mail (isso


promoveria ataques de vírus do tipo Microsoft* Outlook, pois o rpm pode instalar e
modificar programas do sistema). Nesse caso, a melhor opção é usar Herdar. Isso fará
o programa less ser executado nesse contexto com o perfil de /usr/bin/mail, o
que terá dois efeitos:

• Você terá de adicionar todos os acessos de arquivo básicos de /usr/bin/less


ao perfil do /usr/bin/mail.

• Você poderá evitar adicionar os aplicativos ajudantes, como tar e rpm, ao perfil do
/usr/bin/mail, de modo que quando o /usr/bin/mail executar o /usr/
bin/mail/less nesse contexto, o programa less se torne bem menos perigoso
do que seria sem a proteção do Novell AppArmor.

Em outras circunstâncias, você poderia usar a opção Perfil. Isso teria dois efeitos sobre
o logprof:

• A regra gravada no perfil seria px, o que forçaria a transição para o perfil do próprio
filho.

• O logprof interpretaria um perfil para o filho e começaria a criá-lo da mesma forma


que havia criado o perfil do pai: atribuindo eventos do processo do filho ao perfil
do filho e fazendo ao usuário perguntas como as acima.

62 Guia de Administração do Novell AppArmor 2.0


Finalmente, você poderia conceder ao processo filho um acesso muito amplo
especificando Não delimitado, o que gravaria ux no perfil do pai. Desse modo, quando
fosse executado, o filho não estaria aplicando nenhum perfil do Novell AppArmor. Isso
significa execução sem proteção e só deve ser feito quando absolutamente necessário.

apparmor.vim
Para realçar com cores as várias características de um perfil do Novell AppArmor, use
um arquivo de colorido de sintaxe do editor de texto vim. Usando o vim e o modo de
sintaxe que o Novell AppArmor tem para ele, você pode visualizar as implicações
semânticas de seus perfis realçadas em diferentes cores. Para visualizar e editar perfis
usando o vim, digite vim em uma janela de terminal.

Para habilitar o colorido de sintaxe ao editar um perfil do Novell AppArmor no vim,


use os comandos :syntax on e, em seguida, :set syntax=apparmor. Outra
opção é colocar as seguintes linhas em seu arquivo ~/.vimrc:
syntax on
set modeline
set modelines=5

Quando esse recurso é habilitado, o vim colore as linhas do perfil da seguinte forma:

Azul
Linhas #include que extraem outras regras e comentários do Novell AppArmor
que começam com #

Branco
Linhas de acesso de leitura normais

Marrom
Declarações de capacidade e flags de reclamação

Amarelo
Linhas que concedem acesso para gravação

Verde
Linhas que concedem permissão de execução (ix ou px)

Vermelho
Linhas que concedem acesso não delimitado (ux)

Criando perfis do Novell AppArmor 63


Fundo vermelho
Erros de sintaxe que não estão sendo adequadamente carregados nos módulos
AppArmor

NOTA

Existe um risco de segurança quando se usam essas linhas no arquivo .vimrc,


pois assim o vim passa a confiar no modo de sintaxe apresentado nos arquivos
que estão sendo editados. Isso poderia permitir a um invasor que lhe enviasse
um arquivo perigoso para abertura no vim.

Use as páginas de manual apparmor.vim e vim e a sintaxe :help a partir do editor


vim para obter ajuda do próprio vim quanto a realce de sintaxe. A sintaxe do Novell
AppArmor está armazenada em /usr/share/vim/current/syntax/apparmor
.vim.

Não delimitado
O comando unconfined (não delimitado) examina as portas de rede abertas no
sistema, compara-as ao conjunto de perfis carregados no sistema e informa os serviços
de rede que não possuem perfis do Novell AppArmor. Ele requer privilégio de Root e
ausência de delimitação por um perfil do Novell AppArmor.

O comando unconfined deve ser executado como Root para recuperar o link executável
do sistema de arquivos do processo. Esse programa é suscetível às seguintes condições
de race (falhas):

• Um executável não vinculado será mal gerenciado

• Um executável iniciado antes que um perfil do Novell AppArmor seja carregado


não aparecerá na saída, apesar de ser executado sem delimitação

• Um processo terminado entre netstat(8) e verificações subseqüentes será mal


gerenciado

64 Guia de Administração do Novell AppArmor 2.0


NOTA

Esse programa só lista processos usando TCP e UDP. Em resumo, ele não se
presta a investigações, sendo fornecido apenas para auxiliar na criação dos
perfis dos processos disponíveis em rede no laboratório.

Para obter mais informações sobre a tecnologia e a segurança do Novell AppArmor,


consulte os seguintes documentos:

SubDomain: Parsimonious Server Security, de Crispin Cowan, Steve Beattie, Greg


Kroah-Hartman, Calton Pu, Perry Wagle e Virgil Gligor
Descreve o design e a implementação inicial do Novell AppArmor. Publicado nos
anais da USENIX LISA Conference, dezembro de 2000, Nova Orleans, LA.

Esse documento agora está desatualizado, descrevendo recursos e sintaxe diferentes


do atual Novell AppArmor. Ele deve ser usado apenas como base científica, e não
como documentação técnica.

Defcon Capture the Flag: Defending Vulnerable Code from Intense Attack, de Crispin
Cowan, Seth Arnold, Steve Beattie, Chris Wright e John Viega
Um bom guia para uso estratégico e tático do Novell AppArmor na solução a curto
prazo de problemas graves de segurança. Publicado nos anais da DARPA
Information Survivability Conference and Expo (DISCEX III), abril de 2003,
Washington, DC.

3.6 Nomes de caminhos e


englobamento
O englobamento (ou correspondência de expressões regulares) consiste em modificar
o caminho do diretório com curingas para inclusão de um grupo de arquivos ou
subdiretórios. Os recursos dos arquivos podem ser especificados com uma sintaxe de
englobamento semelhante à usada por shells comuns, como csh, bash e zsh.

* Substitui qualquer número de caracteres, exceto


/.

Criando perfis do Novell AppArmor 65


Exemplo: Um número arbitrário de elementos
de caminho, inclusive diretórios inteiros.

** Substitui qualquer número de caracteres,


inclusive /.

Exemplo: Um número arbitrário de elementos


de caminho, inclusive diretórios inteiros.

? Substitui qualquer caractere, exceto /.

[abc] Substitui o caractere a, b ou c.

Exemplo: Uma regra que corresponda a


/home[01]/*/.plan permite a um programa
acessar arquivos .plan, estejam os usuários em
/home0 ou /home1.

[a-c] Substitui o caractere a, b ou c.

{ab,cd} Expande para uma regra que corresponda a ab


e uma regra que corresponda a cd.

Exemplo: Uma regra que corresponda a


/{usr,www}/pages/** que conceda acesso
a páginas da Web tanto em /usr/pages
quanto em /www/pages.

3.7 Modos de acesso a permissões de


arquivo
Os modos de acesso a permissões de arquivo consistem em combinações dos seis
seguintes modos:

r modo de leitura

66 Guia de Administração do Novell AppArmor 2.0


w modo de gravação

px modo de execução de perfil distinto

ux modo de execução irrestrito

ix modo de execução herdar

l modo de link

3.7.1 Modo de leitura


Permite que o programa tenha acesso de leitura ao recurso. O acesso de leitura é
necessário a scripts de shell e outros conteúdos interpretados e determina se um processo
executor pode ter dump de memória ou ser anexado a ptrace(2) (ptrace(2) é
usado por utilitários como strace(1), ltrace(1) e gdb(1)).

3.7.2 Modo de gravação


Permite que o programa tenha acesso de gravação ao recurso. Os arquivos que devem
ser desvinculados (removidos) precisam ter essa permissão.

3.7.3 Modo de execução de perfil distinto


Este modo requer a definição de um perfil de segurança distinto para os recursos
executados em uma transição de domínio do Novell AppArmor. Se não houver nenhum
perfil definido, o acesso é negado. Incompatível com as entradas de execução inherit
(herdar) e unconstrained (irrestrito).

3.7.4 Modo de execução irrestrito


Permite ao programa executar o recurso sem a aplicação de nenhum perfil do Novell
AppArmor. Requer listagem do modo de execução. Incompatível com as entradas de
execução inherit (herdar) e discrete profile (perfil distinto).

Criando perfis do Novell AppArmor 67


Esse modo é útil quando um programa delimitado precisa executar uma operação que
requer privilégios, como a reinicialização da máquina. Colocando a parte privilegiada
em outro executável e concedendo direitos irrestritos de execução, é possível evitar as
restrições mandatórias impostas a todos os processos delimitados. Para obter mais
informações acerca do que está sujeito a restrições, consulte a página de manual
apparmor(7).

3.7.5 Modo de execução herdar


Evita a transição de domínio normal do Novell AppArmor em execve(2) quando
um programa que tem perfil executa o recurso. Nesse caso, o recurso executado herda
o perfil atual. Incompatível com as entradas de execução unconstrained (irrestrito) e
discrete profile (perfil distinto). Esse modo é útil quando um programa delimitado
precisa chamar outro programa delimitado sem ganhar as permissões do perfil de destino
nem perder as permissões do perfil atual. Esse modo normalmente não é usado.

3.7.6 Modo de link


O modo de link negocia acesso a symlinks e hardlinks, além do privilégio de desvincular
(ou apagar) arquivos. Quando se cria um link, o arquivo vinculado deve ter as mesmas
permissões de acesso que o link criado (com a exceção de que o destino não precisa ter
acesso de link).

68 Guia de Administração do Novell AppArmor 2.0


Gerenciando aplicativos em perfil
Após criar perfis e imunizar os seus aplicativos, o SUSE Linux se torna mais eficiente
4
e melhor protegido se você realizar manutenção de perfil do Novell AppArmor, o que
envolve o rastreamento de problemas comuns. Você pode tratar as questões e assuntos
comuns antes que se tornem um problema, configurando notificação de evento por e-
mail, executando relatórios periódicos, atualizando perfis de entradas de registro de
sistema (basicamente com a execução da ferramenta logprof pelo YaST), e tratando as
questões de manutenção. As instruções para realizar estas tarefas estão disponíveis em:

• Seção 4.1, “Monitorando seus aplicativos protegidos” (p 69)

• Seção 4.5, “Mantendo perfis de segurança” (p 96).

4.1 Monitorando seus aplicativos


protegidos
Os aplicativos delimitados por perfis de segurança do Novell AppArmor geram
mensagens quando os aplicativos são executados de maneiras inesperadas ou fora do
perfil especificado. Estas mensagens podem ser monitoradas por notificação de evento,
geração de relatórios periódicos ou integração em um mecanismo de relatório de
terceiros. As seções a seguir fornecem detalhes sobre o uso destes recursos e localização
de recursos adicionais.

• Seção 4.2, “Configurando notificações de evento” (p 70)

Gerenciando aplicativos em perfil 69


• Seção 4.3, “Relatórios” (p 73)

• Seção 4.4, “Reagindo a eventos de segurança” (p 95)

4.2 Configurando notificações de


evento
A notificação de eventos de segurança é um recurso do Novell AppArmor que informa
um destinatário específico de e-mail da ocorrência de uma atividade sistêmica no Novell
AppArmor. Esse recurso está disponível atualmente através do YaST.

Quando você digita um endereço de e-mail, é notificado por e-mail quando ocorrem
eventos de segurança no Novell AppArmor. É possível habilitar três tipos de notificações,
que são:

Conciso
Notificações concisas resumem o número total de eventos do sistema sem fornecer
detalhes. Por exemplo:
dhcp-101.up.wirex.com has had 10 security events since Tue Oct 12 11:10:00
2004

Notificação resumida
A notificação resumida exibe os eventos de segurança do Novell AppArmor
registrados e relaciona o número de ocorrências individuais, incluindo a data da
última ocorrência. Por exemplo:
AppArmor: PERMITTING access to capability ’setgid’ (httpd2-prefork(6347)
profile /usr/sbin/httpd2-prefork active /usr/sbin/httpd2-prefork) 2 times,
the latest at Sat Oct 9 16:05:54 2004.

Notificação prolixa
A notificação prolixa exibe eventos de segurança do Novell AppArmor registrados
e não modificados. Informa toda vez que ocorre um evento e grava uma nova linha
no registro prolixo. Esses eventos de segurança incluem a data e a hora de ocorrência
do evento, quando o perfil do aplicativo permite e rejeita o acesso e o tipo de acesso
da permissão de arquivo que é permitido ou rejeitado. A notificação prolixa também
relata várias mensagens que a ferramenta logprof (consulte “logprof” (p 57)) usa
para interpretar perfis. Por exemplo:

70 Guia de Administração do Novell AppArmor 2.0


Oct 9 15:40:31 AppArmor: PERMITTING r access to /etc/apache2/httpd.conf
(httpd2-prefork(6068) profile /usr/sbin/httpd2-prefork active
/usr/sbin/httpd2-prefork)

NOTA

Para configurar notificações de evento, consulte a Seção 4.2.2, “Configurando


notificações de eventos de segurança” (p 71). Após configurar a notificação
do evento de segurança, leia os relatórios e determine se os eventos exigem
acompanhamento. O acompanhamento pode incluir os procedimentos
apresentados na Seção 4.4.1, “Recebendo uma rejeição de evento de segurança”
(p 95).

4.2.1 Notificação de nível de gravidade


É possível configurar o Novell AppArmor para lhe enviar mensagens de eventos sobre
fatos que estão no banco de dados de gravidade e acima do nível selecionado. Eles são
numerados de um a dez, dez sendo o incidente de segurança mais grave. O arquivo
severity.db define o nível de gravidade dos eventos de segurança potenciais. Os
níveis de segurança são determinados pela importância dos diversos eventos de
segurança, como determinados recursos acessados ou serviços negados.

4.2.2 Configurando notificações de eventos


de segurança
A notificação de eventos de segurança é um recurso do Novell AppArmor que informa
quando ocorrem atividades sistêmicas no Novell AppArmor. Ao selecionar uma
freqüência de notificação (recebimento de notificação diária, por exemplo), você ativa
a notificação. Você é solicitado a digitar um endereço de e-mail, de maneira que possa
ser notificado por e-mail quando ocorrerem eventos de segurança no Novell AppArmor.

NOTA

É preciso configurar um servidor de correio no SUSE Linux que possa enviar


mensagens de saída usando o protocolo SMTP (por exemplo, postfix ou exim)
para garantir o funcionamento correto da notificação de eventos.

Gerenciando aplicativos em perfil 71


1 Na seção Habilitar Notificação de Evento de Segurança da janela Configuração
do AppArmor, clique em Configurar.

2 Na janela Notificação de Evento de Segurança, você tem a opção de habilitar


notificação de evento Concisa, Resumida ou Prolixa, que são definidas na
Seção 4.2.1, “Notificação de nível de gravidade” (p 71). Para receber uma
mensagem de notificação apresentando os eventos de segurança do Novell
AppArmor recentes, determine a sua preferência de tipo de notificação.

3 Em cada seção de tipo de notificação aplicável, digite os endereços de e-mail de


quem deve receber a notificação no campo fornecido. Se a notificação estiver
habilitada, você deve digitar um endereço de e-mail. Caso contrário, você recebe
uma mensagem de erro. Separe vários endereços de e-mail com vírgulas.

4 Para cada tipo de notificação que deseja habilitar, selecione a freqüência da


notificação.

Selecione uma freqüência de notificação entre as seguintes opções:

• Desabilitado

• 1 minuto

72 Guia de Administração do Novell AppArmor 2.0


• 5 minutos

• 10 minutos

• 15 minutos

• 30 minutos

• 1 hora

• 1 dia

• 1 semana

5 Para cada tipo de notificação selecionado, selecione o nível de gravidade mais


baixo para o qual uma notificação deve ser enviada. Os eventos de segurança
são registrados e as notificações são enviadas no momento indicado pelo intervalo
em que os eventos forem iguais ou superiores ao nível de gravidade selecionado.
Se o intervalo for de 1 dia, a notificação será enviada diariamente, caso ocorram
eventos de segurança. Consulte a Seção 4.2.1, “Notificação de nível de gravidade”
(p 71) para obter mais informações sobre os níveis de gravidade.

6 Clique em OK.

7 Clique em Concluído na janela Configuração do AppArmor.

8 Clique em Arquivo → Sair no Centro de Controle do YaST.

4.3 Relatórios
O recurso de geração de relatório do Novell AppArmor confere flexibilidade, o que
aprimora a maneira como os usuários podem ver os dados de evento de segurança. A
ferramenta de relatório executa o seguinte:

• Cria relatórios sob demanda

• Exporta relatórios

• Programa relatórios periódicos para arquivamento

Gerenciando aplicativos em perfil 73


• Envia relatórios periódicos por e-mail

• Filtra dados de relatório por data

• Filtra dados de relatório por outras opções, como nome de programa

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 datas ou nome de programa. Também é possível exportar
um arquivo html ou csv .

Os três tipos de relatórios disponíveis no Novell AppArmor são:

Resumo de Segurança Executivo


Um relatório combinado, que consiste em um ou mais relatórios de incidente de
segurança em uma ou mais máquinas. Este relatório pode fornecer uma visão única
dos eventos de segurança em várias máquinas. Para obter mais detalhes, consulte
“Resumo de Segurança Executivo” (p 83).

Relatório de Auditoria de Aplicativos


Uma ferramenta de auditoria que informa quais servidores de aplicativos estão em
execução e se os aplicativos são delimitados pelo AppArmor. Os servidores de
aplicativos são aplicativos que aceitam conexões de entrada de rede. Para obter
mais detalhes, consulte “Relatório de Auditoria de Aplicativos” (p 80).

Relatório de Incidentes de Segurança


Um relatório que exibe a segurança de aplicativo de um único host. Ele relata as
violações de política para aplicativos delimitados localmente durante um período
de tempo específico. Você pode editar e personalizar este relatório ou adicionar
novas versões. Para obter mais detalhes, consulte “Relatório de Incidentes de
Segurança” (p 81).

Para usar os recursos de relatório do Novell AppArmor, prossiga com as seguintes


etapas:

1 Para executar relatórios, abra YaST → Novell AppArmor. A interface do Novell


AppArmor é aberta.

74 Guia de Administração do Novell AppArmor 2.0


2 Em Novell AppArmor, clique em Relatórios do AppArmor. A janela Relatório
de Eventos de Segurança do AppArmor será exibida. Na janela Relatórios,
selecione uma opção e prossiga para a seção para obter instruções:

Visualizar Arquivo
Exibe todos os relatórios que foram executados e armazenados em /var/
log/apparmor/reports-archived/. Selecione o relatório que deseja

Gerenciando aplicativos em perfil 75


ver detalhadamente e clique em Exibir. Para obter instruções sobre Visualizar
Arquivo, vá para a Seção 4.3.1, “Visualizando relatórios arquivados” (p 76).

Executar Agora
Produz uma versão instantânea do tipo de relatório selecionado. Se você
selecionar um relatório de incidente de segurança, ele pode ser filtrado ainda
mais de várias maneiras. Para obter instruções sobre Executar Agora, vá
para a Seção 4.3.2, “Executar Agora: executando relatórios sob demanda”
(p 85).

Adicionar
Cria um relatório de incidente de segurança programado. Para obter instruções
sobre Adicionar, vá para a Seção 4.3.3, “Adicionando novos relatórios”
(p 88).

Editar
Edita um relatório de incidente de segurança programado.

Apagar
Apaga um relatório de incidente de segurança programado. Todos os
relatórios de ações ou padronizados não podem ser apagados.

Voltar
Retorna à tela principal do Novell AppArmor.

Interromper
Retorna à tela principal do Novell AppArmor.

Próximo
Executa a mesma função do botão Executar Agora.

4.3.1 Visualizando relatórios arquivados


Visualizar Relatórios permite que você especifique a localização de um acúmulo de
relatórios de um ou mais sistemas, incluindo a capacidade de filtrar por data ou nomes
de programas acessados e exibi-los juntos em um relatório.

1 Na janela Relatório de Eventos de Segurança do AppArmor, selecione Visualizar


Arquivo.

76 Guia de Administração do Novell AppArmor 2.0


2 Selecione o tipo de relatório a ser visualizado. Alterne entre os diversos tipos
(SIR, App Aud e ESS (Relatório de Incidente de Segurança - Auditoria de
Aplicativos - Resumo de Segurança Executivo).

3 Você pode alterar a localização do diretório dos relatórios arquivados em


Localização dos Relatórios Arquivados. Selecione Aceitar para usar o diretório
atual ou selecione Pesquisar para encontrar uma nova localização de relatório.
O diretório padrão é /var/log/apparmor/reports-archived/.

4 Para visualizar todos os relatórios no arquivo, selecione Visualizar Tudo. Para


visualizar um relatório específico, selecione um arquivo de relatório indicado no
campo Relatório, e selecione Visualizar.

5 Para os relatórios Auditoria de Aplicativos e Resumo de Segurança Executivo,


prossiga para o Passo 9 (p 79).

6 A Caixa de Diálogo Configuração de Relatório abre para relatórios de Incidentes


de Segurança.

Gerenciando aplicativos em perfil 77


7 A Caixa de Diálogo Configuração de Relatório permite filtrar os relatórios
selecionados na tela anterior. Digite os detalhes de filtro desejados. Os campos
são:

Faixa de Data
Para exibir relatórios para um determinado período de tempo, selecione
Filtrar por Faixa de Data. Digite as datas de início e término que definem
o escopo do relatório.

Nome do Programa
Ao digitar um padrão ou nome de programa que corresponda ao nome do
arquivo binário executável do programa de interesse, o relatório exibirá
eventos de segurança que ocorreram para um programa específico.

Nome do Perfil
Ao digitar o nome do perfil, o relatório exibirá os eventos de segurança
gerados para o perfil especificado. Use isso para ver o que está sendo
delimitado por um perfil específico.

Número do PID
O Número do PID identifica exclusivamente um processo ou programa em
execução específico (esse número é válido somente durante o tempo de vida
desse processo).

78 Guia de Administração do Novell AppArmor 2.0


Nível de Gravidade
Selecione o nível de gravidade mais baixo para os eventos de segurança que
deseja incluir no relatório. O nível de gravidade selecionado e acima serão
incluídos nos relatórios.

Detalhe
Uma fonte à qual o perfil negou acesso. Isso inclui recursos e arquivos. Use
esse campo para relatar os recursos aos quais os perfis impedem acesso.

Tipo de Acesso
O tipo de acesso descreve o que está realmente acontecendo com o evento
de segurança. As opções são: PERMITTING, REJECTING ou AUDITING.

Modo
O Modo é a permissão concedida pelo perfil ao programa ou processo ao
qual ele é aplicado. As opções são: r (ler) w (gravar) l (vincular) x
(executar).

Tipo de Exportação
Permite que você exporte um arquivo CSV (valores separados por vírgula)
ou HTML. O arquivo CSV usa vírgulas para separar partes de dados nas
entradas de registro, usando um formato de dados padrão para importar para
aplicativos orientados a tabelas. Você pode digitar um nome de caminho
completo para seu relatório exportado no campo fornecido.

Localização para Armazenar Registro


Permite mudar a localização de armazenamento do relatório exportado. A
localização padrão é /var/log/apparmor/reports-exported. Ao
mudar esta localização, selecione Aceitar. Selecione Pesquisar para pesquisar
o sistema de arquivos.

8 Para ver o relatório, filtrado como desejado, selecione Próximo. É exibido um


dos três relatórios.

9 Consulte as seções a seguir para obter informações detalhadas sobre cada tipo
de relatório.

• Para o relatório de auditoria de aplicativos, consulte “Relatório de Auditoria


de Aplicativos” (p 80).

Gerenciando aplicativos em perfil 79


• Para o relatório de incidentes de segurança, consulte “Relatório de Incidentes
de Segurança” (p 81).

• Para o relatório de resumo executivo, consulte “Resumo de Segurança


Executivo” (p 83).

Relatório de Auditoria de Aplicativos


Uma ferramenta de auditoria que informa quais servidores de aplicativos estão em
execução e se os aplicativos são delimitados pelo AppArmor. Os servidores de
aplicativos são aplicativos que aceitam conexões de entrada de rede. Esse relatório
fornece o endereço IP da máquina de host, a data de execução do Relatório de Auditoria
de Aplicativos, o nome e caminho do servidor de aplicativos ou programa não delimitado,
o perfil sugerido ou um marcador para um perfil de um programa não delimitado, o
número de ID do processo, o estado do programa (delimitado ou não) e o tipo de
delimitação que o perfil está executando (forçado/reclamação).

A tela a seguir representa um relatório de auditoria de aplicativos:

Veja abaixo as definições para os campos do relatório de auditoria de aplicativos:

80 Guia de Administração do Novell AppArmor 2.0


Host
A máquina protegida pelo AppArmor para a qual os eventos de segurança são
relatados.

Data
A data em que ocorreram os eventos de segurança.

Programa
O nome do processo em execução.

Perfil
O nome absoluto do perfil de segurança aplicado ao processo.

PID
O número de ID do processo identifica exclusivamente um processo ou programa
em execução específico (esse número é válido somente durante o tempo de vida
desse processo).

Estado
Este campo revela se o programa indicado no campo de programa é delimitado. Se
não for delimitado, é possível criar um perfil para ele.

Tipo
O campo revela o tipo de delimitação que o evento de segurança representa. Diz
se é reclamação ou aplicação. Se o aplicativo não for delimitado (estado), nenhum
tipo de delimitação é relatado.

Relatório de Incidentes de Segurança


Um relatório que exibe eventos de segurança de interesse para o administrador. Ele
relata as violações de política para aplicativos delimitados localmente durante um
período de tempo específico. O estado do mecanismo de política e as exceções de
política dos relatórios SIR mudam. Esses dois tipos de eventos de segurança são
definidos da seguinte forma:

Exceções de Política
Quando um aplicativo solicita um recurso não definido em seu perfil, um evento
de segurança é gerado. É gerado um relatório que exibe eventos de segurança de
interesse para o administrador. Ele relata as violações de política para aplicativos

Gerenciando aplicativos em perfil 81


delimitados localmente durante um período de tempo específico. O estado do
mecanismo de política e as exceções de política dos relatórios SIR mudam.

Mudanças do Estado de Mecanismo de Política


Aplica a política nos aplicativos e mantém seu próprio estado, inclusive quando o
mecanismo inicia ou pára, quando a política é recarregada e quando o recurso de
segurança global é habilitado ou desabilitado.

A tela a seguir representa um relatório SIR:

Veja abaixo as definições para os campos do relatório SIR:

Host
A máquina protegida pelo AppArmor para a qual os eventos de segurança são
relatados.

Data
A data em que ocorreram os eventos de segurança.

Programa
O nome do processo em execução.

82 Guia de Administração do Novell AppArmor 2.0


Perfil
O nome absoluto do perfil de segurança aplicado ao processo.

PID
O número de ID do processo identifica exclusivamente um processo ou programa
em execução específico (esse número é válido somente durante o tempo de vida
desse processo).

Gravidade
Os níveis de gravidade dos eventos são relatados do banco de dados de gravidade.
O banco de dados de gravidade define a importância dos eventos de segurança
potenciais e numera-os de um a dez, dez sendo o incidente de segurança mais grave.
Os níveis de segurança são determinados pela ameaça ou importância dos diversos
eventos de segurança, como determinados recursos acessados ou serviços negados.

Modo
O modo é a permissão concedida pelo perfil ao programa ou processo ao qual ele
é aplicado. As opções são r (ler) w (gravar) l (vincular) x (executar).

Detalhe
Uma fonte à qual o perfil negou acesso. Isso inclui recursos e arquivos. Use esse
campo para relatar os recursos aos quais os perfis impedem acesso.

Tipo de Acesso
O tipo de acesso descreve o que está realmente acontecendo com o evento de
segurança. As opções são PERMITTING, REJECTING ou AUDITING.

Resumo de Segurança Executivo


Um relatório combinado que consiste em um ou mais relatórios de alto nível de uma
ou mais máquinas. Esse relatório poderá fornecer uma visão única dos eventos de
segurança em várias máquinas, se os dados de cada máquina forem copiados para o
diretório de relatórios arquivados: /var/log/apparmor/reports-archived.
Esse relatório fornece o endereço IP da máquina de host, as datas de início e término
dos eventos em poll, número total de rejeições, número total de eventos, média dos
níveis de gravidade relatados e o nível mais alto de gravidade relatado. Uma linha do
relatório ESS representa uma faixa dos relatórios SIR.

A tela a seguir representa um Resumo de Segurança Executivo:

Gerenciando aplicativos em perfil 83


Veja abaixo as definições para os campos do resumo de segurança executivo:

Host
A máquina protegida pelo AppArmor para a qual os eventos de segurança são
relatados.

Data inicial
A primeira data em uma faixa de datas durante as quais eventos de segurança são
relatados.

Data de término
A última data em uma faixa de datas durante as quais eventos de segurança são
relatados.

Nº de Rejeições
Na faixa de datas determinada, o número total de eventos de segurança que são
tentativas de acesso negadas.

Nº de Eventos
Na faixa de datas determinada, o número total de eventos de segurança.

84 Guia de Administração do Novell AppArmor 2.0


Média de Gravidade
É a média dos níveis de gravidade relatados na faixa de datas dada. Gravidades
desconhecidas são desconsideradas neste número.

Gravidade Alta
É a gravidade do evento de gravidade mais alta relatada na faixa de datas
determinada.

4.3.2 Executar Agora: executando relatórios


sob demanda
O recurso de relatório Executar Agora permite que você extraia informações de relatório
instantaneamente dos registros de evento do Novell AppArmor sem esperar pelos
eventos programados. Retorne ao início desta seção se precisar de ajuda para navegar
para a tela de relatório principal (consulte a Seção 4.3, “Relatórios” (p 73)). Execute
as seguintes etapas para executar um relatório da lista de relatórios:

1 Selecione o relatório a executar instantaneamente da lista de relatórios na janela


Relatórios de Programação.

2 Selecione Executar Agora ou Próximo. A tela seguinte depende do relatório


selecionado na etapa anterior. Para os relatórios Auditoria de Aplicativos e Resumo
de Segurança Executivo, prossiga para o Passo 6 (p 87).

3 A Caixa de Diálogo Configuração de Relatório é exibida para relatórios de


incidente de segurança.

Gerenciando aplicativos em perfil 85


4 A Caixa de Diálogo Configuração de Relatório permite que você filtre os
relatórios selecionados na tela anterior. Digite os detalhes de filtro desejados. As
seguintes opções de filtro estão disponíveis:

Faixa de Data
Para limitar relatórios a um determinado período de tempo, selecione Filtrar
por Faixa de Data. Digite as datas de início e término que definem o escopo
do relatório.

Nome do Programa
Ao digitar um padrão ou nome de programa que corresponda ao nome do
arquivo binário executável do programa de interesse, o relatório exibirá
eventos de segurança que ocorreram para um programa específico.

Nome do Perfil
Ao digitar o nome do perfil, o relatório exibirá os eventos de segurança
gerados para o perfil especificado. Use isso para ver o que está sendo
delimitado por um perfil específico.

Número do PID
O número de ID do processo identifica exclusivamente um processo ou
programa em execução específico (esse número é válido somente durante o
tempo de vida desse processo).

86 Guia de Administração do Novell AppArmor 2.0


Nível de Gravidade
Selecione o nível de gravidade mais baixo para os eventos de segurança que
deseja incluir no relatório. O nível de gravidade selecionado e acima serão
incluídos nos relatórios.

Detalhe
Uma fonte à qual o perfil negou acesso. Isso inclui recursos e arquivos. Use
esse campo para relatar os recursos aos quais os perfis impedem acesso.

Tipo de Acesso
O tipo de acesso descreve o que está realmente acontecendo com o evento
de segurança. As opções são PERMITTING, REJECTING ou AUDITING.

Modo
O modo é a permissão concedida pelo perfil ao programa ou processo ao
qual ele é aplicado. As opções são r (ler) w (gravar) l (vincular) x (executar).

Tipo de Exportação
Permite que você exporte um arquivo CSV (valores separados por vírgula)
ou HTML. O arquivo CSV usa vírgulas para separar partes de dados nas
entradas de registro, usando um formato de dados padrão para importar para
aplicativos orientados a tabelas. Você pode digitar um nome de caminho
completo para seu relatório exportado no campo fornecido.

Localização para Armazenar Registro


Permite que você mude a localização de armazenamento do relatório
exportado. A localização padrão é /var/log/apparmor/
reports-exported. Ao mudar esta localização, selecione Aceitar.
Selecione Pesquisar para pesquisar o sistema de arquivos.

5 Para ver o relatório, filtrado como desejado, selecione Próximo. É exibido um


dos três relatórios.

6 Consulte as seções a seguir para obter informações detalhadas sobre cada tipo
de relatório.

• Para o relatório de auditoria de aplicativos, consulte “Relatório de Auditoria


de Aplicativos” (p 80).

• Para o relatório de incidente de segurança, consulte “Relatório de Incidentes


de Segurança” (p 81).

Gerenciando aplicativos em perfil 87


• Para o relatório de resumo executivo, consulte “Resumo de Segurança
Executivo” (p 83).

4.3.3 Adicionando novos relatórios


Adicionar novos relatórios permite que você crie um relatório de incidente de segurança
programado que exibe eventos de segurança do Novell AppArmor de acordo com filtros
predefinidos. Quando um relatório é configurado em Relatórios de Programação, ele
inicia periodicamente um relatório de eventos de segurança do Novell AppArmor que
ocorreram no sistema.

Você pode configurar relatórios para serem executados em um período especificado a


cada mês, semana, dia ou hora. Você pode configurar o relatório para exibir rejeições
para determinados níveis de gravidade ou para filtrar por nome de programa, nome de
perfil, nível de gravidade ou recursos negados. Este relatório pode ser exportado para
um formato de arquivo HTML (Hypertext Markup Language) ou CSV (Comma
Separated Values).

NOTA

Retorne ao início desta seção se precisar de ajuda para navegar para a tela de
relatório principal (consulte a Seção 4.3, “Relatórios” (p 73)).

Para adicionar um novo relatório de incidente de segurança programado:

1 Clique em Adicionar para criar um novo relatório de incidente de segurança. A


primeira página de Adicionar SIR Programado é aberta.

88 Guia de Administração do Novell AppArmor 2.0


2 Preencha os campos com as seguintes informações sobre filtro, conforme a
necessidade:

Nome de Relatório
Especifique o nome do relatório. Use nomes que diferenciem facilmente um
relatório do próximo.

Dia do Mês
Selecione um dia do mês para ativar a filtragem mensal nos relatórios. Se
você selecionar Todos, a filtragem mensal não será realizada.

Dia da Semana
Selecione o dia da semana para programar relatórios semanais, se desejado.
Se você selecionar Todos, a filtragem semanal não é realizada. Se for
selecionado relatório mensal, este campo assume como padrão Todos.

Hora e Minuto
Selecione a hora. Especifica a hora e o minuto em que deseja executar os
relatórios. Se não mudar a hora, os relatórios selecionados são executados à
meia-noite. Se nem mês ou dia da semana forem selecionados, o relatório é
executado diariamente na hora especificada.

Enviar por E-mail ao Destino


Você tem a capacidade de enviar o relatório de incidente de segurança
programado por e-mail a até três destinatários. Basta inserir os endereços de
e-mail de quem solicita informações de incidentes de segurança.

Gerenciando aplicativos em perfil 89


Tipo de Exportação
Permite que você exporte um arquivo CSV (valores separados por vírgula)
ou HTML. O arquivo CSV usa vírgulas para separar partes de dados nas
entradas de registro, usando um formato de dados padrão para importar para
aplicativos orientados a tabelas. Você pode digitar um nome de caminho
completo para seu relatório exportado no campo fornecido.

Localização para Armazenar Registro


Permite que você mude a localização de armazenamento do relatório
exportado. A localização padrão é /var/log/apparmor/
reports-exported. Ao mudar esta localização, selecione Aceitar.
Selecione Pesquisar para pesquisar o sistema de arquivos.

3 Clique em Próximo para ir até a segunda página de Adicionar SIR Programado.

4 Preencha os campos com as seguintes informações sobre filtro, conforme a


necessidade:

Nome do Programa
Você pode especificar um padrão ou nome de programa que corresponda ao
nome do arquivo binário executável do programa de interesse. O relatório
exibe eventos de segurança que ocorreram apenas para o programa
especificado.

90 Guia de Administração do Novell AppArmor 2.0


Nome do Perfil
Você pode especificar o nome do perfil para o qual o relatório deve exibir
eventos de segurança. Use isso para ver o que está sendo delimitado por um
perfil específico.

Número do PID
O número de ID do processo identifica exclusivamente um processo ou
programa em execução específico (esse número é válido somente durante o
tempo de vida desse processo).

Detalhe
Uma fonte à qual o perfil negou acesso. Isso inclui recursos e arquivos. Use
esse campo para criar um relatório dos recursos aos quais os perfis impedem
acesso.

Gravidade
Selecione o nível de gravidade mais baixo para os eventos de segurança a
incluir no relatório. O nível de gravidade selecionado e acima serão incluídos
nos relatórios.

Tipo de Acesso
O tipo de acesso descreve o que está realmente acontecendo com o evento
de segurança. As opções são PERMITTING, REJECTING ou AUDITING.

Modo
O modo é a permissão concedida pelo perfil ao programa ou processo ao
qual ele é aplicado. As opções são r (ler) w (gravar) l (vincular) x (executar).

5 Clique em Salvar para gravar este relatório. O Novell AppArmor retorna para a
janela principal Relatórios Programados, onde o relatório recém-programado
aparece na lista de relatórios.

4.3.4 Editando relatórios


Na tela Relatórios do AppArmor, você pode selecionar e editar um relatório. Os
relatórios de ações não podem ser editados nem apagados.

Gerenciando aplicativos em perfil 91


NOTA

Retorne ao início desta seção se precisar de ajuda para navegar para a tela de
relatório principal (consulte a Seção 4.3, “Relatórios” (p 73)).

Execute as seguintes etapas para executar um relatório da lista de relatórios:

1 Na lista de relatórios da janela Relatórios Programados, selecione o relatório a


editar.

2 Clique em Editar para editar o relatório de incidente de segurança. A primeira


página de Adicionar SIR Programado é aberta.

3 Digite as seguintes informações de filtragem, conforme a necessidade:

Dia do Mês
Selecione um dia do mês para ativar a filtragem mensal nos relatórios. Se
você selecionar Todos, a filtragem mensal não será realizada.

Dia da Semana
Selecione o dia da semana para programar relatórios semanais, se desejado.
Se você selecionar Todos, a filtragem semanal não será realizada. Se for
selecionado relatório mensal, este campo assume como padrão Todos.

Hora e Minuto
Selecione a hora. Especifica a hora e o minuto em que deseja executar os
relatórios. Se você não mudar a hora, os relatórios selecionados serão
executados à meia-noite. Se nem dia do mês ou dia da semana forem
selecionados, o relatório será executado diariamente na hora especificada.

92 Guia de Administração do Novell AppArmor 2.0


Enviar por E-mail ao Destino
Você tem a capacidade de enviar o relatório de incidente de segurança
programado por e-mail a até três destinatários. Basta inserir os endereços de
e-mail de quem solicita informações de incidentes de segurança.

Tipo de Exportação
Permite que você exporte um arquivo CSV (valores separados por vírgula)
ou HTML. O arquivo CSV usa vírgulas para separar partes de dados nas
entradas de registro, usando um formato de dados padrão para importar para
aplicativos orientados a tabelas. Você pode digitar um nome de caminho
completo para seu relatório exportado no campo fornecido.

Localização para Armazenar Registro


Permite que você mude a localização de armazenamento do relatório
exportado. A localização padrão é /var/log/apparmor/
reports-exported. Ao mudar esta localização, selecione Aceitar.
Selecione Pesquisar para pesquisar o sistema de arquivos.

4 Clique em Próximo para ir até a página seguinte de Editar SIR Programado. A


segunda página de Editar Relatórios Programados é aberta.

5 Preencha os campos com as seguintes informações sobre filtro, conforme a


necessidade:

Nome do Programa
Você pode especificar um padrão ou nome de programa que corresponda ao
nome do arquivo binário executável do programa de interesse. O relatório

Gerenciando aplicativos em perfil 93


exibe eventos de segurança que ocorreram apenas para o programa
especificado.

Nome do Perfil
Você pode especificar o nome do perfil para o qual o relatório deve exibir
eventos de segurança. Use isso para ver o que está sendo delimitado por um
perfil específico.

Número do PID
O número de ID do processo identifica exclusivamente um processo ou
programa em execução específico (esse número é válido somente durante o
tempo de vida desse processo).

Detalhe
Uma fonte à qual o perfil negou acesso. Isso inclui recursos e arquivos. Use
esse campo para criar um relatório dos recursos aos quais os perfis impedem
acesso.

Gravidade
Selecione o nível de gravidade mais baixo para os eventos de segurança que
deseja incluir no relatório. O nível de gravidade selecionado e acima serão
incluídos nos relatórios.

Tipo de Acesso
O tipo de acesso descreve o que está realmente acontecendo com o evento
de segurança. As opções são PERMITTING, REJECTING ou AUDITING.

Modo
O modo é a permissão concedida pelo perfil ao programa ou processo ao
qual ele é aplicado. As opções são r (ler) w (gravar) l (vincular) x (executar).

6 Selecione Salvar para gravar as mudanças a este relatório. O Novell AppArmor


retorna para a janela principal Relatórios Programados, onde o relatório
programado aparece na lista de relatórios.

4.3.5 Apagando relatórios


Apagar um Relatório permite que você remova permanentemente um relatório da lista
de relatórios programados do Novell AppArmor. Para apagar um relatório, siga estas
instruções:

94 Guia de Administração do Novell AppArmor 2.0


1 Para remover um relatório da lista de relatórios, destaque o relatório e clique em
Apagar.

2 No pop-up de confirmação, selecione Cancelar se não quiser apagar o relatório


selecionado. Se tem certeza de que deseja remover o relatório permanentemente
da lista de relatórios, selecione Apagar.

4.4 Reagindo a eventos de segurança


Há poucos problemas de manutenção comuns que você deve inspecionar e com os quais
lidar de acordo com as regras estabelecidas. Alguns dos problemas de manutenção
comuns que você pode encontrar são:

• Seção 4.4.1, “Recebendo uma rejeição de evento de segurança” (p 95).

• Seção 4.5.2, “Mudando perfis de segurança” (p 97).

4.4.1 Recebendo uma rejeição de evento de


segurança
Quando você receber uma rejeição, examine a violação de acesso e determine se aquele
evento indicou uma ameaça ou foi parte de um comportamento normal do aplicativo.
É necessário conhecimento específico sobre o aplicativo para julgar. Se a rejeição
representa um comportamento normal de aplicativo, executar logprof na linha de
comando de Assistente para Atualizar Perfil do Novell AppArmor permite que você
repita todas as mensagens rejeitadas. Ao selecionar a que corresponde com a rejeição
específica, é possível atualizar automaticamente o seu perfil.

Se a rejeição não for parte do comportamento normal do aplicativo, este acesso deve
ser considerado como uma possível tentativa de invasão (que foi impedida) e esta
notificação deve ser transmitida à pessoa responsável pela segurança na sua organização.

4.4.2 Mudando a segurança do aplicativo


Os usuários podem sempre editar manualmente o perfil, usando vim na linha de comando
ou Editar Perfil no YaST.

Gerenciando aplicativos em perfil 95


4.5 Mantendo perfis de segurança
Em um ambiente de produção, você deve planejar ou manter perfis para todos os
aplicativos distribuídos. As políticas de segurança são parte integral da sua distribuição.
Você deve planejar ou providenciar para fazer backup e restaurar os arquivos de política
de segurança, planejar mudanças de software e permitir qualquer modificação necessária
das políticas de segurança ditado pelo ambiente. Estes itens são abordados nas seguintes
seções:

• Seção 4.5.1, “Fazendo backup dos perfis de segurança” (p 96).

• Seção 4.5.2, “Mudando perfis de segurança” (p 97).

• Seção 4.5.3, “Instalando novos programas de software no ambiente” (p 97).

4.5.1 Fazendo backup dos perfis de


segurança
Como leva tempo para fazer os perfis, é sensato fazer backup. Fazer backup dos perfis
pode evitar que você tenha que refazer o perfil de todos os seus programas após uma
falha no disco. Da mesma maneira, se os perfis mudam, você pode restaurar facilmente
as configurações anteriores usando os arquivos de backup.

Faça backup dos perfis copiando os arquivos de perfil em um diretório especificado.

1 Primeiro, arquive os arquivos em um único arquivo. Para isso, abra uma janela
de terminal e digite o seguinte como Root:
tar zclpf profiles.tgz /etc/apparmor.d

O método mais simples de garantir que seus arquivos de política de segurança


têm backup regularmente é incluir o diretório /etc/apparmor.d na lista de
diretórios arquivados pelo seu sistema de backup.

2 Também é possível usar scp ou um gerenciador de arquivos do tipo Konqueror


ou Nautilus para armazenar os arquivos em algum tipo de mídia de
armazenamento, na rede ou em outro computador.

96 Guia de Administração do Novell AppArmor 2.0


4.5.2 Mudando perfis de segurança
A manutenção dos perfis de segurança inclui mudá-los se decidir que o sistema requer
mais ou menos segurança para seus aplicativos. Para mudar seus perfis no Novell
AppArmor, consulte a Seção 3.3.3, “Editando um perfil” (p 30).

4.5.3 Instalando novos programas de


software no ambiente
Quando você adiciona uma nova versão de aplicativo ou patch ao seu sistema, atualize
sempre o perfil para atender às suas necessidades. Há várias opções que dependem da
estratégia de distribuição de software da sua empresa. Você pode distribuir os seus
patches e atualizar em um ambiente de teste ou produção. Veja como fazer isso com
cada método.

Se pretende distribuir um patch ou atualização em um ambiente de teste, o melhor


método para atualizar os seus perfis é um dos seguintes:

• Selecione Assistente para Adicionar Perfil no YaST para executar o assistente de


perfil. Isso atualiza a sua configuração de perfil de aplicativo com a produção atual
usando esforços mínimos. Para obter instruções passo a passo, consulte a
Seção 3.3.1, “Adicionando um perfil usando o assistente” (p 18).

• Conectado como Root, digite genprof em um terminal para executar genprof.


Para obter informações detalhadas, consulte “genprof” (p 51).

Se pretende distribuir um patch ou atualização em um ambiente de teste, o melhor


método de atualizar os seus perfis é um dos seguintes:

• Monitore o sistema com freqüência para determinar se quaisquer novas rejeições


devem ser adicionadas ao perfil e atualize conforme a necessidade usando logprof.
Para obter informações detalhadas, consulte “logprof” (p 57).

• Execute as ferramentas de perfil para aprender o novo comportamento (risco de


segurança alto porque todos os acessos são aceitos e efetuados, não rejeitados).
Para obter instruções passo a passo, consulte a Seção 3.3.5, “Atualizando perfis a
partir de entradas do Syslog” (p 32).

Gerenciando aplicativos em perfil 97


Criando perfil dos aplicativos web
com o ChangeHat Apache
Um perfil do Novell® AppArmor representa política de segurança para uma instância
5
de programa ou processo individual. Aplica-se a um programa executável, mas se uma
parte do programa precisar de permissões de acesso diferentes de outras partes, o
programa poderá “mudar hats” para usar um contexto de segurança diferente, distinto
do acesso do programa principal. É conhecido como hat ou subperfil.

O ChangeHat permite que programas mudem para ou de um hat dentro de um perfil


do Novell AppArmor. Ele permite que você defina segurança em um nível mais refinado
que o processo.

Este recurso exige que cada aplicativo “reconheça changehats”, ou seja, ele é modificado
para fazer uma solicitação ao módulo do Novell AppArmor para alternar domínios de
segurança em horas arbitrárias durante a execução do aplicativo.

Um perfil pode ter um número arbitrário de subperfis, mas há apenas dois níveis: um
subperfil não pode ter outros sub-subperfis. Um subperfil é escrito como um perfil
separado e nomeado como o perfil que contém, seguido do nome do subperfil, separado
por um ^. Os subperfis devem ser armazenados no mesmo arquivo do perfil do pai.

NOTA

Para obter mais informações, consulte a página de manual change_hat.

Criando perfil dos aplicativos web com o ChangeHat Apache 99


5.1 Apache ChangeHat
O Novell AppArmor fornece um módulo mod-apparmor para o programa Apache.
O módulo mod-apparmor funciona no seu SUSE Linux para fazer com que o servidor
web do Apache “reconheça ChangeHats”. Ele é instalado se o Apache estiver no seu
sistema.

Quando o Apache reconhece ChangeHats, ele verifica os seguintes perfis de segurança


personalizados do Novell AppArmor na ordem dada para toda solicitação de URI
recebida.

• Hat específico de URI (por exemplo, ^phpsysinfo-dev/templates/


classic/images/bar_left.gif)

• DEFAULT_URI

• HANDLING_UNTRUSTED_INPUT

Se você tiver o Apache 2 exigido no sistema, o módulo mod-apparmor será instalado


automaticamente com o Novell AppArmor assim como adicionado à configuração do
Apache. Não há suporte para o Apache 1.3.

NOTA

Se você instalar o mod-apparmor sem o Novell AppArmor, será necessário


verificar se o módulo para carregar o Apache tem um comando no arquivo de
configuração que carrega o módulo mod-apparmor adicionando a seguinte
linha ao arquivo de configuração do Apache:
LoadModule change_hat_module modules/mod_change_hat.so

5.1.1 Ferramentas para gerenciar aplicativos


que reconheçam ChangeHats
Como na maioria das ferramentas do Novell AppArmor, você pode usar dois métodos
para gerenciar ChangeHat, YaST ou a interface da linha de comando. O gerenciamento
de aplicativos que reconheçam ChangeHats é muito mais flexível na linha de comando,

100 Guia de Administração do Novell AppArmor 2.0


mas o processo também é mais complicado. Ambos os métodos permitem que você
gerencie os hats do aplicativo e os preencha com entradas de perfil.

Nas etapas a seguir, uma demonstração o orientará a adicionar hats a um perfil Apache
usando o YaST. No Assistente para Adicionar Perfil, os utilitários de perfil do Novell
AppArmor solicitarão que você crie novos hats para solicitações de URI distintas.
Escolher criar um novo hat permite que você crie perfis individuais para cada URI. Isto
permite criar regras muito rígidas para cada solicitação.

Se o URI em processamento não representar um processamento importante ou não


representar um risco de segurança importante, você poderá selecionar com segurança
Usar Hat Padrão para processar este URI no hat padrão, que é o perfil de segurança
padrão.

Na demonstração, criamos um novo hat para o URI phpsysinfo-dev e seus acessos


subseqüentes. Usando os utilitários de perfil, delegamos o que é adicionado a este novo
hat. O hat resultante se torna um container de segurança rígida que abrange todo o
processamento no servidor que ocorre quando o URI phpsysinfo-dev é passado
para o servidor web do Apache.

Nesta demonstração, geramos um perfil para o aplicativo phpsysinfo (para obter mais
informações, consulte http://phpsysinfo.sourceforge.net). Assume-se
que o pacote phpsysinfo-dev esteja instalado em /srv/www/htdocs/
phpsysinfo-dev/ em uma instalação limpa (nova) do Novell AppArmor.

1 Com phpsysinfo-dev instalado, você está pronto para adicionar hats ao perfil do
Apache. Na interface de usuário do Novell AppArmor, selecione Assistente para
Adicionar Perfil.

Criando perfil dos aplicativos web com o ChangeHat Apache 101


2 Em Perfil para Adicionar, digite httpd2-prefork.

3 Clique em Criar Perfil. A janela Assistente de Perfil do AppArmor será exibida.

4 Reinicie o Apache digitando rcapache2 restart em uma janela de terminal.

102 Guia de Administração do Novell AppArmor 2.0


NOTA

Reinicie qualquer programa para o qual esteja criando perfis neste ponto.

5 Abra http://localhost/phpsysinfo-dev/ em uma janela de browser


da web. A janela de browser deve exibir o uso da rede e informações do sistema.

NOTA

Para garantir que a solicitação será processada pelo servidor e você não
analisará os dados em cache no seu browser, é necessário atualizar a
página. Para isso, clique no botão Atualizar do browser para ter certeza
que o Apache processará a solicitação para o URI phpsysinfo-dev.

6 Clique em Explorar Entradas no Registro do Sistema para Adicionar a Perfis.


O Novell AppArmor inicia a ferramenta logprof, que explora todas as informações
aprendidas na etapa anterior. Começa a solicitar as perguntas sobre perfil.

7 Na nossa demonstração, primeiro o logprof exibe Adicionar Hat Solicitado ou


Usar Hat Padrão porque observou que um URI foi acessado phpsysinfo-dev.
Selecione Adicionar Hat Selecionado.

Criando perfil dos aplicativos web com o ChangeHat Apache 103


8 Clique em Permitir.

Escolher Adicionar Hat Solicitado na etapa anterior cria um novo hat no perfil
e especifica que as perguntas subseqüentes sobre as ações do script são
adicionadas ao hat recentemente criado em vez do hat padrão deste aplicativo.

Na tela seguinte, o Novell AppArmor exibe um programa externo que foi


executado pelo script. Você pode especificar que o programa deve ser executado
delimitado pelo phpsysinfo-dev hat (escolha Herdar), delimitado por um perfil
separado (escolha Perfil), ou que deve ser executado não delimitado ou sem
qualquer perfil de segurança (escolha Não delimitado). Para o caso da opção
Perfil, um novo perfil é criado para o programa se ainda não existir nenhum.

NOTA

Selecionar Não delimitado pode criar uma brecha de segurança


importante e deve ser feito com cautela.

a Selecione Herdar para o caminho /bin/bash. Isto adiciona /bin/bash/


(acessado pelo Apache) ao perfil de hat phpsysinfo-dev com as permissões
necessárias.

b Clique em Permitir.

104 Guia de Administração do Novell AppArmor 2.0


9 As questões restantes solicitam que você gere novos hats e adicione entradas
para o perfil e seus hats. O processo de adicionar entradas aos perfis é abordado
em detalhes na Seção 3.3.1, “Adicionando um perfil usando o assistente” (p 18).

Quando todas as questões de perfil são respondidas, clique em Concluir para


gravar as suas mudanças e sair do assistente.

A seguir um exemplo da aparência do phpsyinfo-dev hat.

Exemplo 5.1 Exemplo de phpsysinfo-dev Hat


^phpsysinfo {
#include <program-chunks/base-files>
/bin/df ix,
/bin/bash ix,
/dev/tty rw,
/etc/SuSE-release r,
/etc/fstab r,
/etc/hosts r,
/etc/mtab r,
/proc/** r,
/sbin/lspci ix,
/srv/www/htdocs/sysinfo/** r,
/sys/bus/pci/devices r,
/sys/devices/** r,
/usr/bin/who ix,
/usr/share/pci.ids r,
/var/log/apache2/{access,error}_log w,
/var/run/utmp r,
}

NOTA

O perfil, ^phpsysinfo-dev, só é válido no contexto de um processo sendo


executado sob o perfil do pai httpd2-prefork.

5.1.2 Adicionando hats e entradas a hats


Quando usar a caixa de diálogo Editar Perfil (para obter instruções, consulte a
Seção 3.3.3, “Editando um perfil” (p 30)) ou quando adicionar um novo perfil usando
Adicionar Manualmente Perfil do Novell AppArmor (para obter instruções, consulte a
Seção 3.3.2, “Adicionar Perfil Manualmente” (p 24)), você receberá a opção de adicionar
hats (subperfis) aos seus perfis do Novell AppArmor.

Criando perfil dos aplicativos web com o ChangeHat Apache 105


É possível adicionar um subperfil do ChangeHat da janela Caixa de Diálogo Perfil do
AppArmor.

1 Na janela Caixa de Diálogo Perfil do AppArmor, clique em Adicionar Entrada


e selecione Hat. A caixa de diálogo Digitar Nome do Hat é aberta:

2 Digite o nome do hat a adicionar ao perfil do Novell AppArmor. O nome é o


URI que, quando acessado, recebe as permissões configuradas no hat.

3 Clique em Criar Hat. Você retornará à tela Caixa de Diálogo Perfil do AppArmor.

4 Após adicionar o novo hat, clique em Concluído.

106 Guia de Administração do Novell AppArmor 2.0


NOTA

Para obter um exemplo de um perfil do Novell AppArmor, consulte o


Exemplo 5.1, “Exemplo de phpsysinfo-dev Hat” (p 105).

5.2 Configuração do Apache para


mod-apparmor
O Apache é configurado pela colocação de diretivas nos arquivos de configuração de
texto simples. O principal arquivo de configuração normalmente é httpd.conf.
Quando você compila o Apache, pode indicar a localização deste arquivo. As diretivas
podem ser colocadas em quaisquer destes arquivos de configuração para alterar o
comportamento do Apache. Quando você efetua mudanças nos arquivos de configuração
principais, precisa iniciar ou reiniciar o Apache para que as mudanças sejam
reconhecidas.

5.2.1 Diretivas de hosts virtuais


As diretivas de hosts virtuais controlam se as solicitações que contêm informações de
nome de caminho à direita, após um nome de arquivo real (ou arquivo não existente
em um diretório existente), são aceitas ou rejeitadas. Para obter a documentação do
Apache sobre diretivas de hosts virtuais, consulte http://httpd.apache.org/
docs-2.0/mod/core.html#virtualhost

A tecla de configuração específica de change_hat é ImmDefaultHatName e é usada


da mesma maneira que ImmHatName, por exemplo, ImmDefaultHatName
My_Funky_Default_Hat.

A opção de configuração é na realidade baseada em uma diretiva de servidor, que lhe


permite usar a palavra-chave para outras opções, desta maneira configurando-a para o
servidor padrão. Hosts virtuais são considerados internamente no Apache como
“servidores” separados, de maneira que você pode configurar um nome de hat padrão
para o servidor padrão, assim como um para cada host virtual, se desejar.

Quando chega uma solicitação, as seguintes etapas refletem a seqüência em que


mod-apparmor tenta aplicar hats.

Criando perfil dos aplicativos web com o ChangeHat Apache 107


1. Um hat de localização ou diretório conforme especificado pela palavra-chave
ImmHatName.

2. Um hat nomeado por todo o caminho do URI.

3. Um hat de servidor padrão conforme especificado pela palavra-chave


ImmDefaultHatName.

4. DEFAULT_URI (e se não existir nenhum, volta para o hat “pai” do Apache).

5.2.2 Diretivas de localização e diretório


Diretivas de localização e diretório especificam nomes de hat no arquivo de configuração
de programa, de maneira que o programa chama o hat relativo à sua segurança. Para o
Apache, é possível encontrar documentações sobre diretivas de localização e diretório
em http://httpd.apache.org/docs-2.0/sections.html.

O exemplo de diretiva de localização abaixo especifica que, para um determinado local,


mod-apparmor deve usar um hat específico:
<Location /foo/>
ImmHatName MY_HAT_NAME
</Location>

Tenta usar MY_HAT_NAME para qualquer URI iniciando com /foo/ (/foo/, /foo/
bar, /foo/cgi/path/blah_blah/blah, etc.).

A diretiva de diretório funciona da mesma maneira que a diretiva de localização, salvo


que se refere a um nome de caminho no sistema de arquivos, no exemplo a seguir:
<Directory "/srv/www/www.immunix.com/docs"> # Note lack of trailing slash
ImmHatName immunix.com
</Directory>

Exemplo: O programa phpsysinfo é usado para ilustrar uma diretiva de localização


no exemplo a seguir. O tarball pode ser descarregado de http://phpsysinfo
.sourceforge.com.

1 Após descarregar o tarball, instale-o em /srv/www/htdocs/sysinfo/.

2 Crie /etc/apache2/conf.d/sysinfo.conf e adicione o texto a seguir


a ele:

108 Guia de Administração do Novell AppArmor 2.0


<Location "/sysinfo">
ImmHatName sysinfo
</Location>

O hat a seguir deve, então, funcionar para phpsyinfo:


^sysinfo {
#include <program-chunks/base-files>
/bin/df ix,
/bin/bash ix,
/dev/tty rw,
/etc/SuSE-release r,
/etc/fstab r,
/etc/hosts r,
/etc/mtab r,
/proc/** r,
/sbin/lspci ix,
/srv/www/htdocs/sysinfo/** r,
/sys/bus/pci/devices r,
/sys/devices/** r,
/usr/bin/who ix,
/usr/share/pci.ids r,
/var/log/apache2/{access,error}_log w,
/var/run/utmp r,
}

3 Recarregue perfis do Novell AppArmor digitando rcapparmor restart


na janela de terminal como Root.

4 Conectado como Root, reinicie o Apache digitando rcapache2 restart na


janela de terminal.

5 Digite http://hostname/sysinfo/ em um browser para receber as


informações do sistema enviadas por phpsysinfo.

6 Para rastrear os erros de configuração, vá para /var/log/syslog ou execute


dmesg e procure quaisquer rejeições na saída.

Criando perfil dos aplicativos web com o ChangeHat Apache 109


Suporte
Este capítulo resume as tarefas relativas à manutenção. Aprenda como atualizar o
6
Novell® AppArmor e obtenha a lista das páginas do manual disponíveis que oferecem
ajuda básica sobre o uso das ferramentas de linha de comando fornecidas pelo Novell
AppArmor. Use a seção de solução de problemas para aprender sobre os problemas
comuns encontrados no Novell AppArmor e suas soluções. Finalmente, tenha uma
visão geral das opções de suporte fornecidas com a cópia do SUSE Linux.

6.1 Atualizando o Novell AppArmor


online
Atualizações para pacotes do Novell AppArmor serão fornecidas da mesma forma que
qualquer outra atualização para produtos baseados no SUSE Linux. Recupere-os e
aplique-os exatamente como qualquer outro pacote que seja fornecido como parte do
produto SUSE Linux.

6.2 Usando as páginas de manual


Há páginas de manual disponíveis para seu uso. Em um terminal, digite man
apparmor para abrir a página de manual do apparmor. As páginas do manual são
distribuídas em seções numeradas de 1 a 8. Cada seção é específica para uma categoria
de documentação:

Suporte 111
Tabela 6.1 Páginas de manual: Seções e categorias

Seção Categoria

1 Comandos do usuário

2 Chamadas do sistema

3 Funções de biblioteca

4 Informações de driver do dispositivo

5 Formatos de arquivo de configuração

6 Jogos

7 Conceitos de alto nível

8 Comandos do administrador

Os números da seção são usados para diferenciar as páginas de manual entre si. Por
exemplo, exit(2) descreve uma chamada do sistema de saída, enquanto exit(3)
descreve a função de biblioteca exit C.

As páginas de manual do Novell AppArmor são:

• unconfined(8)

• autodep(1)

• complain(1)

• enforce(1)

• genprof(1)

• logprof(1)

• change_hat(2)

• logprof.conf(5)

112 Guia de Administração do Novell AppArmor 2.0


• apparmor.conf(5)

• apparmor.d(5)

• apparmor.vim(5)

• apparmor(7)

• apparmor_parser(8)

6.3 Mais informações


Mais informações sobre o produto AppArmor podem ser encontradas na página do
produto Novell AppArmor: http://www.novell.com/products/apparmor/
.

A documentação do produto para o Novell AppArmor, incluindo este documento, pode


ser encontrada em http://www.novell.com/documentation/apparmor/
ou no sistema instalado em /usr/share/doc/packages/apparmor-docs/.

Há listas de discussão específicas para o AppArmor que os usuários podem usar para
se comunicar com desenvolvedores.

apparmor-general@forge.novell.com
Esta é uma lista de discussão para usuários finais do AppArmor. Um bom local
para perguntas sobre como usar o AppArmor para proteger seus aplicativos.

apparmor-dev@forge.novell.com
Esta é uma lista de discussão para desenvolvedores do AppArmor e membros da
comunidade. Ela é destinada questões sobre o desenvolvimento de recursos
principais do AppArmor — o módulo de kernel, as ferramentas de criação de perfis.
Se você estiver interessado em revisar o código para o AppArmor e contribuir com
revisões ou patches, essa é a lista ideal.

apparmor-announce@forge.novell.com
Esta é uma lista de baixo tráfego que anuncia a disponibilidade de novos recursos
ou versões.

Suporte 113
6.4 Solução de problemas
A seção a seguir lista os problemas e as mensagens de erro mais comuns que podem
ocorrer no uso do Novell AppArmor.

O SUSE Linux está instalado, mas o AppArmor não aparece no menu do YaST
O AppArmor é instalado como padrão se a área de trabalho do KDE ou GNOME
for escolhida no momento da instalação. Se você escolher Sistema Gráfico Mínimo
ou Modo de Texto, o AppArmor não será incluído como padrão. Nestes casos, use
o YaST para instalar os pacotes que faltam. Para obter mais informações, consulte
o Guia de Instalação e Inicialização Rápida do Novell AppArmor 2.0.

Comportamento anormal de aplicativo


Se você observar um comportamento anormal do aplicativo ou qualquer outro tipo
de problema, primeiro verifique as mensagens rejeitadas nos arquivos de registro
para verificar se o AppArmor está limitando demais o seu aplicativo.

Para verificar mensagens rejeitadas, inicie o YaST → Novell AppArmor e vá para


Relatórios do AppArmor. Selecione Visualizar Arquivo e App Aud para obter o
relatório de auditoria de aplicativos. Você pode filtrar datas e horas para restringir
os períodos específicos em que teve início o comportamento do aplicativo.

Problemas com o Apache


O Apache não está iniciando adequadamente, ou não está atendendo as páginas da
Web e você acabou de instalar um novo módulo ou mudou a configuração.

Quando instalar módulos adicionais do Apache (como mod-apparmor) ou mudar


a configuração no Apache, execute a criação de perfis no Apache novamente para
capturar quaisquer regras adicionais que devam ser incluídas ao perfil.

Os relatórios não estão sendo enviados via e-mail


Quando o recurso de relatório gera um arquivo HTML ou CSV que exceda o
tamanho padrão, o arquivo não é enviado. Os servidores de correio têm um limite
fixo padrão de tamanhos de e-mail. Esta limitação pode impedir a capacidade do
AppArmor de enviar e-mails que sejam gerados para fins de relatório. Se o seu
correio não estiver chegando, pode ser esta a razão.

Os usuários devem estar cientes dos limites de tamanho do correio e devem verificar
seus arquivos se os e-mails não forem recebidos.

114 Guia de Administração do Novell AppArmor 2.0


Apagar certos perfis da lista de perfis usados
O AppArmor sempre carrega e aplica todos os perfis disponíveis em seu diretório
de perfis (/etc/apparmor.d/). Se decidir não aplicar um perfil a um
determinado aplicativo, apague o perfil adequado ou mova-o para outro local onde
o AppArmor não o verificaria.

A operação do AppArmor pode gerar vários erros. A seguir, uma lista dos erros possíveis
e como resolvê-los.

Can’t find apparmor_parser


Se você executar logprof como usuário não-raiz, como tux, é provável que veja
este erro:
tux@localhost:~> /usr/sbin/logprof
Can’t find apparmor_parser.

NOTA

Você deve executar logprof apenas como root.

/usr/sbin/genprof deve ser executado como root


Executar genprof como um usuário que não seja root produz um resultado
semelhante:
tux@localhost:~> /usr/sbin/genprof
/usr/sbin/genprof must be run as root.

Unloading AppArmor profiles..failed


Você deve executar scripts de início e interrupção de apparmor como root. Executá-
los como um usuário que não seja root resulta no seguinte:
tux@localhost:~> /etc/init.d/apparmor stop
/sbin/apparmor_parser: Sorry. You need root priveleges to run this program.
Unloading AppArmor profiles..failed

AppArmor parser error


O exemplo abaixo mostra a sintaxe de todo o erro do analisador.

Editar manualmente os perfis do Novell AppArmor pode gerar erros de sintaxe.


Se você tentar iniciar ou reiniciar o AppArmor com erros de sintaxe nos perfis,
verá resultados de erro como este:
localhost:~ # /etc/init.d/apparmor start
Loading AppArmor profiles
AppArmor parser error, line 2: Found unexpected character: ’h’

Suporte 115
Profile /etc/apparmor.d/usr.sbin.squid failed to load
failed

6.5 Relatando erros do AppArmor


Os desenvolvedores do AppArmor e do SUSE Linux estão ansiosos para distribuir
produtos da maior qualidade. O seu feedback e relatórios de erro nos ajudam a garantir
a qualidade do nosso trabalho. Assim, sempre que encontrar um erro em AppArmor,
arquive um relatório de erros para este produto:

1 Use o browser da Web para ir para https://bugzilla.novell.com/


index.cgi.

2 Digite os dados da sua conta da Novell e clique em Login

ou

Crie uma nova conta Novell da seguinte maneira:

a Clique em Create New Account (Criar Nova Conta) na página Login to


Continue (Login para Continuar).

b Forneça um nome de usuário e senha e dados de endereço adicional e clique


em Create Login (Criar Login) para fazer imediatamente a criação do login.

ou

Forneça dados de outras contas Novell que você mantém para sincronizar
todas elas em uma conta.

3 Para verificar se um problema semelhante ao seu já foi relatado, clique em Search


Reports (Pesquisar Relatórios)

Faça uma busca rápida contra um determinado produto e palavra-chave ou use


Advanced Search (Pesquisa Avançada).

4 Se o seu problema já tiver sido relatado, verifique o relatório de erro e adicione


informações extras a ele, se necessário.

116 Guia de Administração do Novell AppArmor 2.0


5 Se o seu problema ainda não tiver sido relatado, selecione New (Novo) na parte
superior da barra de navegação e passe para a página Enter Bug (Inserir Erro)

6 Selecione o produto para o qual deseja arquivar o erro. No seu caso, seria a sua
versão do SUSE Linux. Clique em Submit (Submeter).

7 Selecione a versão do produto, componente (AppArmor, neste caso), plataforma


de hardware e gravidade.

8 Digite um título curto descrevendo o seu problema e adicione uma descrição


mais elaborada incluindo os arquivos de registro abaixo.

Você pode criar anexos ao seu relatório de erro com capturas de tela, arquivos
de registro ou casos de teste.

9 Clique em Submit (Submeter) após ter digitado todos os detalhes para enviar o
relatório aos desenvolvedores.

Suporte 117
Glossário
Apache
O Apache é um servidor Web baseado em UNIX disponível gratuitamente.
Atualmente é o servidor Web mais usado na Internet. Mais informações sobre o
Apache são encontradas no site da Web do Apache em http://www.apache
.org.

assinatura de ataque
Padrão em um sistema ou atividade de rede que indica a possibilidade de vírus ou
ataque de hackers. Sistemas de detecção de invasões podem usar assinaturas de
ataque para distinguir entre atividades legítimas das potencialmente mal-
intencionadas.

Por não confiar nas assinaturas de ataque, o Novell AppArmor oferece defesa
"proativa" em vez de "reativa" aos ataques. É melhor, porque não há janela de
vulnerabilidade onde a assinatura de ataque possa ser definida para o Novell
AppArmor como há nos produtos que usam assinaturas de ataque para proteger
suas redes.

classes de fundação de perfil


Blocos de construção de perfil necessários para atividades comuns de aplicativos,
como pesquisa de DNS e autenticação de usuário.

controle de acesso obrigatório


Um meio de restringir acesso a objetos baseado em atributos de segurança fixos
atribuídos a usuários, arquivos e outros objetos. Os controles são obrigatórios no
sentido de que não podem ser modificados pelos usuários ou seus programas.

controle de acesso otimizado


O Novell AppArmor fornece controle de acesso otimizado para serviços de rede,
especificando que arquivos cada programa pode ler, gravar e executar. Dessa forma,
cada programa cumpre sua função e nada mais.

firewall de aplicativos
O Novell AppArmor contém aplicativos e restringe as ações que são permitidas.
Utiliza a delimitação de privilégios para impedir ataques de programas mal-
intencionados no servidor protegido e até mesmo o uso de aplicativos confiáveis
de maneiras não desejadas.
HIP
Host Intrusion Prevention. Funciona com o kernel do sistema operacional para
bloquear comportamentos anormais de aplicativos considerando que o
comportamento anormal represente um ataque desconhecido. Bloqueia pacotes
mal-intencionados no host no nível de rede antes que possam “agredir” o aplicativo
a que se destinam.

Interface gráfica do usuário (GUI)


Interface gráfica do usuário. Refere-se a um front end de software destinado a
fornecer uma interface atrativa e fácil de usar entre um usuário de computador e o
aplicativo. Seus elementos incluem janelas, ícones, botões, cursores e barras de
rolagem.

RPM
Gerenciador de pacotes RPM. Um sistema de pacotes abertos disponível para uso
de todos. Funciona no Red Hat Linux, SUSE Linux e em outros sistemas Linux e
UNIX. É capaz de instalar, desinstalar, verificar, consultar e atualizar pacotes de
software de computador. Consulte http://www.rpm.org/ para obter mais
informações.

SSH
Secure Shell. Este serviço permite que você acesse seu servidor de um computador
remoto e emita comandos de texto através de uma conexão segura.

URI
Universal Resource Identifiers. Termo genérico para todos os tipos de nomes e
endereços que se referem a objetos na Web. Um URL é um tipo de URI.

URL
Uniform Resource Locator. Endereço global de documentos e outros recursos na
Web.

A primeira parte do endereço indica que protocolo usar e a segunda parte especifica
o endereço IP ou o nome de domínio onde o recurso está localizado.

Por exemplo, em http://www.immuix.com/index.html, http é o protocolo


a ser usado.

vulnerabilidades
Aspecto de um sistema ou rede que o deixa aberto a ataques. Características de
sistemas de computador pelos quais um indivíduo não o mantém funcionando

120 Guia de Administração do Novell AppArmor 2.0


corretamente ou que permite a usuários não autorizados assumirem o controle do
sistema. Pontos fracos de design, administrativo ou de implementação ou falhas
no hardware, firmware ou software. Se explorada, uma vulnerabilidade pode
provocar um impacto inaceitável sob a forma de acesso não autorizado a informações
ou interrupção de processamentos críticos.

Glossário 121

Vous aimerez peut-être aussi