O AppArmor é o principal “concorrente” do SELinux, que é usado do Fedora, CentOS e em algumas outras distribuições. Ambos desempenham a mesma função: monitorar os aplicativos em execução (restringindo os privilégios às operações necessárias para cada um executar seu trabalho), bloqueando operações potencialmente perigosas, que possam colocar em risco a segurança do sistema.
A ideia é tornar o sistema mais seguro, evitando que um invasor que obtenha algum tipo de acesso limitado (explorando uma falha em algum serviço ou aplicativo), consiga explorar outras falhas até obter controle total sobre o sistema. Outro objetivo é oferecer uma camada de proteção contra brechas de segurança ainda não identificadas, como no caso dos “zero-day exploits”, que são brechas divulgadas e exploradas antes que uma correção esteja disponível.
Apesar disso, o SELinux e o AppArmor trabalham de forma bastante diferente, seguindo conceitos quase que opostos em termos de usabilidade. O SELinux foi desenvolvido com o intuito de ser usado em servidores, priorizando a segurança e não a facilidade de uso (já que a ideia é que o sistema seja configurado por um administrador experiente). O AppArmor também é bastante seguro, mas foi desenvolvido com o propósito de ser mais intuitivo e simples de usar, o que nos leva os módulos do YaST:
A configuração do AppArmor é baseada no uso de profiles individuais para cada aplicativo protegido. O AppArmor protege por padrão apenas alguns utilitários básicos de rede, como o ping e o traceroute (você pode ver os perfis ativos usando o “Editar Perfil”), mas você pode criar profiles para outros aplicativos usando o “Assistente para Adicionar Perfil” ou o “Adicionar Perfil Manualmente”.
A opção manual exige que você forneça vários detalhes sobre os arquivos usados pelo aplicativo (o que exigiria uma boa dose de pesquisa), mas o wizard é relativamente simples de usar. O primeiro passo é descobrir o caminho para o executável do aplicativo, o que você pode fazer rapidamente usando o comando “which”, como em:
# which firefox /usr/bin/firefox
A localização do executável é justamente a primeira pergunta que é feita pelo assistente:
A tela seguinte pede que você abra o aplicativo que será protegido e use-o como faria normalmente. É importante que você abra o aplicativo depois de iniciar o assistente (ou seja, que ele esteja fechado ao clicar na opção). Ao criar um profile para um serviço de rede, como o Apache ou o Squid, pare o serviço antes de abrir o assistente (/etc/init.d/serviço stop) e execute-o novamente depois de abrí-lo:
Este é um modo de treinamento, que permite que o assistente monitore as ações executadas pelo aplicativo, aprendendo sobre seu comportamento, sobre os arquivos e bibliotecas utilizados, e assim por diante.
No caso do Firefox, por exemplo, você navegaria nos sites que costuma acessar, visualizaria algumas animações em flash, acessaria algum site que usasse o plugin java e outras atividades corriqueiras. Durante o treinamento, as operações consideradas suspeitas são logadas e ficam disponíveis no “Explorar eventos do AppArmor” para que você possa autorizá-las. Ao terminar, clique no “Concluir” para que o profile seja finalmente criado.
No caso do Firefox, o “/usr/bin/firefox” é um link que aponta para o “/usr/lib/firefox/firefox.sh”. No screenshot anterior você pode notar que o assistente levou isso em conta, criando o profile para o executável real, e não para o link.
Outro aliado importante é o “Assistente de Atualização de Perfil”, que vasculha os logs do sistema em busca de eventos relacionados ao AppArmor, exibindo os eventos e pedindo sua confirmação sobre a autorização ou não de ocorrências futuras de cada um. Os profiles são ajustados automaticamente a partir das suas respostas, permitindo que aprenda como tratar o aplicativo.
Ao criar um perfil para um aplicativo complexo, como o Firefox, você receberá um grande volume de perguntas das primeiras vezes que executar o assistente de atualização, mas logo elas diminuem, permitindo que você diferencie o que são operações normais de potenciais abusos.
O Firefox é um bom candidato para ganhar um perfil no AppArmor, pois hoje em dia os navegadores são os aplicativos que possuem mais brechas de segurança e são alvo do maior número de ataques em qualquer desktop. Diferente de outros aplicativos, que operam dentro da tranquilidade da rede local, o navegador é quem dá a cara a tapa para ir buscar as páginas e arquivos na grande rede. A partir daí, você pode ir adicionando perfis para mais aplicativos e assim ir blindando progressivamente o sistema.