O AppArmor é um Controle de Acesso Obrigatório (MAC) Linux Security Module (LSM), usado, entre outros, pelo Ubuntu e SUSE Linux. As regras de controle de acesso do AppArmor são definidas nos perfis do AppArmor em /etc/apparmor.d/
. Os perfis são simplesmente arquivos de texto, que contêm informações sobre os recursos aos quais o aplicativo pertence ao perfil.
Tipicamente, quando desenhando perfis , um deles executaria o aplicativo com o AppArmor configurado para o modo complain
, no qual violações de controle de acesso são permitidas, mas registradas. Usando os logs, um seria refinar iterativamente o perfil. Quando o perfil é concluído, o AppArmor pode ser alternado para o modo enforce
, no qual as regras de controle de acesso definidas no perfil são aplicadas e quaisquer tentativas de violação registradas.
O contorno de um perfil do AppArmor é semelhante ao seguinte:
#include <tunables/global>
/path/to/application {
[...]
}
As diretivas #include
permitem que declarações pertencentes a vários aplicativos sejam colocadas em um arquivo comum e incluídas no perfil de cada aplicativo relevante.
O arquivo <tunables/global>
, correspondente a /etc/apparmor.d/tunables/global
, por sua vez, inclui definições que devem estar disponíveis para todos os perfis. Uma dessas inclusões adicionais é /etc/apparmor/tunables/home
, que junto com uma @{HOME}/** rw
(ou diretiva semelhante) concede aos aplicativos acesso aos diretórios base dos usuários.
Se este for o caso, a fim de negar o acesso a certos arquivos no diretório home do usuário, seria necessário adiciona uma regra de perfil para negar explicitamente o acesso aos arquivos . Isso pode ser feito usando a diretiva deny
, como no exemplo a seguir:
#include <tunables/global>
/path/to/application {
[...]
# Allow directory listings (i.e. 'r' on directories).
@{HOME}/ r
# This is needed for saving files in the home directory.
@{HOME}/** rw
# Revoke access to specific file
deny /home/user/file rwa
}
O que seria negado é ler ( r
), escrever ( w
) e anexar ( a
) o acesso a /home/user/file
.
Uma alternativa é adicionar os caminhos que você deseja proteger a /etc/apparmor.d/abstractions/private-files
ou /etc/apparmor.d/abstractions/private-files-strict
e garantir que o perfil do AppArmor de cada aplicativo a ser afetado inclua <abstractions/private-files>
ou <abstraction/private-files-strict>
. Esses arquivos já devem conter regras para arquivos comuns que devem ser protegidos para fins de privacidade ou outras considerações de segurança.
Para obter uma lista completa dos detalhes do modo de acesso e mais informações sobre os perfis de segurança do AppArmor, consulte o apparmor.d
página de manual e Guia de Administração do Novell AppArmor (pdf) .