APPArmor

Os Ubuntu’s possuem um sistema semelhante ao SELinux chamado AppArmor! Conheça essa camada de segurança nativa dos sistemas e seus sabores.


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


1. História

Desenvolvido pela Novell de 1999 a 2008, foi posteriormente adquirido pela Canonical que o implementou no Ubuntu 7.10, permanecendo na família do sistema desde então. O AppArmor é um sistema de segurança que fica habilitado o tempo todo apenas aguardando ser configurado! Constituído basicamente de um conjunto de daemons que controlam acessos e permissões aos aplicativos, reforça a já muito boa segurança padrão do Linux. Para ver o status básico do aplicativo, execute no terminal:

$ sudo apparmor_status

ou, se preferir:

$ sudo aa-status

Você terá uma listagem de tudo que ele controla e monitora no momento em que seu computador está ligado.
Apesar de ter normativas mais simples que o SELinux, no Ubuntu ele é bastante eficiente a ponto de ser o favorito entre muitos sysadmins no mundo Linux.

Provavelmente ao executar esse comando ele retornará “vazio”, pois nada está protegido pelo APPArmor até aquele momento. Apesar de vir habilitado, o aplicativo não cuida da segurança de nada até que o usuário o faça configurando-o.

Lembrando que, o aplicativo está nativo em todas as atuais versões do Ubuntu e seus sabores. Além disso está disponível nos repositórios do Debian para quem faz uso desse sistema. – Se você usa um sistema baseado em ArchLinux também pode usar, tá no repositório padrão!

2. Mas afinal, o que é o AppArmor?

AppArmor é um sistema classificado como Controle de Acesso Mandatório (MAC – Mandatory Access Control) construído sobre a interface LSM (Linux Security Modules) do kernel Linux. Na prática, o kernel consulta o aplicativo antes de cada chamada do sistema para saber se o processo está autorizado a fazer a operação dada, funcionando como uma espécie de firewall interno.

Enquanto um Firewall comum (UFW por exemplo) é projetado pra cuidar de acessos externos – aplicações da interface de usuário que acessam a internet -, o aplicativo trabalha internamente, entre os processos, reforçando a segurança a nível de daemons e kernel, e evitando que programas executem com credenciais erradas ou mesmo que programas mal intencionados executando no sistema, como um rootkit, façam mudanças não autorizadas.

Por mais que alguns usuários cadastrados tenham permissões quase irrestritas no sistema, a menos que ele possua permissão (o root, por exemplo, exige uma senha), ele terá maior dificuldade de escalar privilégios e fazer alterações na máquina sem consentimento do usuário. Inclusive isso é válido para todos os programas, sejam eles os malwares, o browser, algum game, etc.

Esse sistema MAC se baseia nos caminhos dos arquivos para definir seu contexto de segurança, isto é, seu papel no sistema e suas permissões de acesso. Essa categoria se chama Pathname-based security.

O aplicativo, quando devidamente configurado, pode aplicar um conjunto de regras (conhecidas como “perfil”) customizado para cada programa no computador. O perfil aplicado pelo kernel depende do caminho (“path”) de instalação do programa sendo executado. Ao contrário do SELinux, as regras aplicadas não dependem do usuário. Todos os usuários encontram o mesmo conjunto de regras quando eles estão executando o mesmo programa – mas as permissões tradicionais do usuário ainda se aplicam e podem resultar em um comportamento diferente!

Os arquivos de configuração dos perfis, assim com os domínios de segurança, se localizam nos diretórios /etc/apparmor/ e /etc/apparmor.d/.

Os perfis são compilados e carregados no kernel pelo comando apparmor_parser. Cada perfil pode ser carregado tanto em modo de aplicação (“enforcing”) quanto em modo de registro (“complaining”). O primeiro aplica a política e reporta as tentativas de violação, enquanto que o último não aplica a política mas mantém os registros de chamadas de sistema que deveriam ter sido negadas.

3. Fail-Safe

Uma das funções curiosas desse aplicativo é o modo Panic:

Caso o usuário assim deseje e configure, ele poderá fazer o seguinte: Se durante o processo de boot do sistema o daemon não conseguir iniciar suas diretrizes/regras – por exemplo por culpa de um malware ou má configuração – ele vai automaticamente emitir um alerta no log de eventos e depois forçar o sistema a iniciar no runlevel 1, em modo single user.

Ao iniciar no runlevel 1, o sistema entra em modo seguro, sem internet e sem acesso aos programas do servidor gráfico – Aprenda mais detalhes sobre os runlevels neste post!

Há ainda o modo build-panic, onde o daemon tentará recompilar o aplicativo e, somente em caso de fracasso, emitirá o alerta e forçará o runlevel 1.

4. Instalação

A instalação do daemon é muito simples:

$ sudo apt install apparmor apparmor-profiles apparmor-utils

Para ativar e deixa-lo efetivado em seu sistema, você precisa dizer ao kernel Linux que quer iniciá-lo. Faça isso editando uma linha do GRUB do seu sistema para as seguintes definições:

GRUB_CMDLINE_LINUX="apparmor=1 security=apparmor"

Lembre-se de atualizar seu grub!

$ sudo update-grub2

5. Executando

O aplicativo é executado como um serviço do sistema.
Portanto, pode ser completamente iniciado com um simples:

# /etc/init.d/apparmor start

E desabilitado com um:

# /etc/init.d/apparmor stop

Se estiver mais interessado em como customizar e configurar seu AppArmor para atender melhor as suas necessidades, consulte o manual do Debian aqui.

Ele possui diversos exemplos e está com detalhes para uma customização granular, ao gosto do usuário.

Opostamente ao SELinux, esse aplicativo é um pouco mais fácil de lidar. Mas ainda mais complicado que se comparado à tipica configuração de um firewall.

#UrbanCompassPony

4 comentários em “APPArmor”

  1. Interessante a matéria.

    Eu sou usuário iniciante do Ubuntu e como todo viciado em Windows sempre há necessidade do Antivírus.

    Tenho instalado no Ubuntu o Eset antivírus para Linux versão 4.90 que ganhei em um sorteio.
    Vejo que ele mostra em seus logs algumas mensagens de bloqueio e acredito que seja pela incompatibilidade de trabalhar com apparmor.

    Existe a possibilidade de eliminar estas mensagens mantendo os dois ativados?

    As mensagens do Eset são estas e se puder me ajudar nesta questão fico grato.

    11/11/2018 20:32:15 Preload library access control Cannot connect to /tmp/esets.sock: Permission denied
    11/11/2018 20:30:48 Preload library access control Cannot connect to /tmp/esets.sock: Permission denied
    11/11/2018 20:30:17 Preload library access control Cannot connect to /tmp/esets.sock: Permission denied
    11/11/2018 19:32:28 Preload library access control Cannot connect to /tmp/esets.sock: Permission denied
    11/11/2018 19:31:57 Preload library access control Cannot connect to /tmp/esets.sock: Permission denied
    11/11/2018 18:34:08 Preload library access control Cannot connect to /tmp/esets.sock: Permission denied
    11/11/2018 18:33:37 Preload library access control Cannot connect to /tmp/esets.sock: Permission denied
    11/11/2018 17:35:48 Preload library access control Cannot connect to /tmp/esets.sock: Permission denied
    11/11/2018 17:35:17 Preload library access control Cannot connect to /tmp/esets.sock: Permission denied
    11/11/2018 17:34:55 Preload library access control Cannot connect to /tmp/esets.sock: Permission denied
    11/11/2018 17:34:43 ESET Daemon Error updating Antivirus modules: An error occurred while downloading update files.
    11/11/2018 17:34:32 Media control access Cannot unblock removable media (org.freedesktop.udisks2.filesystem-mount)
    11/11/2018 07:45:52 ESET Daemon Cannot read from socket: Connection reset by peer

    NO momento a situação do apparmor é esta:

    edson@edson-p6540br:~$ sudo aa-status
    apparmor module is loaded.
    37 profiles are loaded.
    35 profiles are in enforce mode.
    /sbin/dhclient
    /snap/core/5742/usr/lib/snapd/snap-confine
    /snap/core/5742/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
    /usr/bin/evince
    /usr/bin/evince-previewer
    /usr/bin/evince-previewer//sanitized_helper
    /usr/bin/evince-thumbnailer
    /usr/bin/evince//sanitized_helper
    /usr/bin/man
    /usr/lib/NetworkManager/nm-dhcp-client.action
    /usr/lib/NetworkManager/nm-dhcp-helper
    /usr/lib/connman/scripts/dhclient-script
    /usr/lib/cups/backend/cups-pdf
    /usr/lib/snapd/snap-confine
    /usr/lib/snapd/snap-confine//mount-namespace-capture-helper
    /usr/sbin/cups-browsed
    /usr/sbin/cupsd
    /usr/sbin/cupsd//third_party
    /usr/sbin/ippusbxd
    /usr/sbin/tcpdump
    libreoffice-senddoc
    libreoffice-soffice//gpg
    libreoffice-xpdfimport
    man_filter
    man_groff
    snap-update-ns.core
    snap-update-ns.gnome-calculator
    snap-update-ns.gnome-characters
    snap-update-ns.gnome-logs
    snap-update-ns.gnome-system-monitor
    snap.core.hook.configure
    snap.gnome-calculator.gnome-calculator
    snap.gnome-characters.gnome-characters
    snap.gnome-logs.gnome-logs
    snap.gnome-system-monitor.gnome-system-monitor
    2 profiles are in complain mode.
    libreoffice-oopslash
    libreoffice-soffice
    3 processes have profiles defined.
    3 processes are in enforce mode.
    /sbin/dhclient (2047)
    /usr/sbin/cups-browsed (1515)
    /usr/sbin/cupsd (1105)
    0 processes are in complain mode.
    0 processes are unconfined but have a profile defined.

    Desde já agradeço pela atenção

    Edson Santos

    Responder
    • O caso do erro é falta de permissão pra ler a pasta /tmp. Se puder configurar o ESET pra processar seus dados fora dessa pasta, dentro de uma outra; Ou dê uma pesquisada se voce pode colocar o ESET no mesmo grupo de permissões de acesso da /tmp. Uma vez que ele acessar a /tmp e fizer os updates sem riscos, os erros sumirão.

      Responder

Deixe um comentário