Académique Documents
Professionnel Documents
Culture Documents
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
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.
1 Imunizando programas 1
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.
Imunizando programas
Descreve a operação do Novell AppArmor.
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:
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.
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)).
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).
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.
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.
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.
NOTA
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.
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.
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).
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).
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 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.
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.
❶ 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
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.
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/.
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.
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).
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.
NOTA
Você também pode acessar a GUI do YaST abrindo uma janela de terminal,
conectando-se como Root e digitando yast2.
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).
Relatórios do AppArmor
Para obter detalhes sobre as etapas, consulte a Seção 4.3, “Relatórios” (p 73).
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.
2 Se você ainda não tiver feito isso, na GUI do YaST, clique em Novell AppArmor
→ Assistente para Adicionar Perfil.
NOTA
• 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.
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.
#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.
Herdar
Permanecer no mesmo perfil de segurança (perfil do pai).
Perfil
Requer a existência de um perfil à parte para o programa executado.
ATENÇÃO
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.
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
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.
NOTA
Arquivo
Na janela pop-up, especifique o caminho absoluto para um arquivo e o tipo
de acesso permitido. Ao terminar, clique em OK.
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.
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).
4 Clique em Próximo.
• 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)).
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.
#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.
Herdar
permanecer no mesmo perfil de segurança (perfil do pai)
Perfil
requer a existência de um perfil à parte para o programa executado
ATENÇÃO
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.
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
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.
NOTA
NOTA
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.
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.
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.
ATENÇÃO
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:
NOTA
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).
Consulte “logprof” (p 57) para obter mais informações sobre o uso do logprof.
Para garantir que todos os perfis saiam do modo de reclamação e entrem no modo
forçado, digite enforce /etc/apparmor.d/*.
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.
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
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 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.
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
NOTA
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:
NOTA
• 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)).
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.
Perfil: /usr/sbin/xinetd
Executar: /usr/sbin/vsftpd
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.
[1 - /etc/hosts.allow]
#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.
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).
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.
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.
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.
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/.
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.
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.
[1 - #include <abstractions/nameservice>]
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.
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 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
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.
DICA
• 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.
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.
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)
NOTA
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):
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.
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.
r modo de leitura
l modo de link
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:
NOTA
NOTA
• Desabilitado
• 1 minuto
• 10 minutos
• 15 minutos
• 30 minutos
• 1 hora
• 1 dia
• 1 semana
6 Clique em OK.
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:
• Exporta relatórios
Visualizar Arquivo
Exibe todos os relatórios que foram executados e armazenados em /var/
log/apparmor/reports-archived/. Selecione o relatório que deseja
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.
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).
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.
9 Consulte as seções a seguir para obter informações detalhadas sobre cada tipo
de relatório.
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.
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
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.
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.
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.
Gravidade Alta
É a gravidade do evento de gravidade mais alta relatada na faixa de datas
determinada.
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).
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.
6 Consulte as seções a seguir para obter informações detalhadas sobre cada tipo
de relatório.
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)).
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.
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.
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.
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)).
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.
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.
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
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).
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.
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
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
• DEFAULT_URI
• HANDLING_UNTRUSTED_INPUT
NOTA
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.
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.
Reinicie qualquer programa para o qual esteja criando perfis neste ponto.
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.
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.
NOTA
b Clique em Permitir.
NOTA
3 Clique em Criar Hat. Você retornará à tela Caixa de Diálogo Perfil do AppArmor.
Tenta usar MY_HAT_NAME para qualquer URI iniciando com /foo/ (/foo/, /foo/
bar, /foo/cgi/path/blah_blah/blah, etc.).
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
6 Jogos
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.
• unconfined(8)
• autodep(1)
• complain(1)
• enforce(1)
• genprof(1)
• logprof(1)
• change_hat(2)
• logprof.conf(5)
• apparmor.d(5)
• apparmor.vim(5)
• apparmor(7)
• apparmor_parser(8)
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.
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.
A operação do AppArmor pode gerar vários erros. A seguir, uma lista dos erros possíveis
e como resolvê-los.
NOTA
Suporte 115
Profile /etc/apparmor.d/usr.sbin.squid failed to load
failed
ou
ou
Forneça dados de outras contas Novell que você mantém para sincronizar
todas elas em uma conta.
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).
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.
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.
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.
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
Glossário 121