User Tools

Site Tools


wiki:linux:comandos:comando_apparmor

Gerenciamento do AppArmor - Nível Básico

Nível Básico

  • Verificar o status do AppArmor:
    1. sudo aa-status
    2. Exibe o status atual do AppArmor, listando os perfis carregados, perfis em modo enforcing (aplicação), complain (modo permissivo) e processos que não estão confinados.
  • Listar os perfis ativos no sistema:
    1. sudo apparmor_status
    2. Lista todos os perfis ativos e suas permissões atuais (modo enforcement ou complain), além de processos não monitorados.
  • Habilitar o AppArmor temporariamente (modo enforcement):
    1. sudo aa-enforce /etc/apparmor.d/usr.sbin.mysqld
    2. Coloca o perfil do MySQL em modo enforcement, onde o AppArmor aplica suas políticas de segurança ativamente.
  • Habilitar o modo complain temporariamente:
    1. sudo aa-complain /etc/apparmor.d/usr.sbin.mysqld
    2. Coloca o perfil do MySQL em modo complain, onde o AppArmor registra violações, mas não as impede. Útil para diagnósticos.
  • Verificar logs de violações do AppArmor:
    1. sudo dmesg | grep 'apparmor'
    2. Exibe logs de violações e eventos do AppArmor diretamente a partir do buffer de mensagens do kernel.
  • Exibir detalhes sobre um perfil específico:
    1. sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
    2. Analisa e exibe informações sobre um perfil específico, incluindo regras e permissões aplicadas ao processo.
  • Carregar um novo perfil do AppArmor manualmente:
    1. sudo apparmor_parser -r /etc/apparmor.d/usr.bin.firefox
    2. Recarrega o perfil de segurança do Firefox, aplicando as novas regras sem reiniciar o sistema.
  • Remover temporariamente o confinamento de um perfil:
    1. sudo aa-disable /etc/apparmor.d/usr.sbin.mysqld
    2. Desativa temporariamente o perfil do MySQL, removendo o confinamento aplicado pelo AppArmor até que ele seja novamente habilitado.
  • Restaurar o AppArmor para seu estado padrão:
    1. sudo systemctl reload apparmor
    2. Reinicia o AppArmor e recarrega todos os perfis, útil para garantir que as alterações manuais sejam aplicadas corretamente.
  • Adicionar permissões simples a um perfil:
    1. Editar o perfil:
sudo nano /etc/apparmor.d/usr.sbin.mysqld
  1. Exemplo de permissão:
    /var/log/mysql/** rw,
    /var/run/mysqld/mysqld.pid rw,
  1. Adiciona permissões de leitura e escrita ao diretório `/var/log/mysql` e ao arquivo `mysqld.pid` para o serviço MySQL.

Gerenciamento do AppArmor - Nível Intermediário

Nível Intermediário

  • Gerar um perfil básico automaticamente com aa-genprof:
    1. sudo aa-genprof /usr/sbin/apache2
    2. Inicia um assistente para gerar automaticamente um perfil AppArmor básico para o serviço Apache com base em seu comportamento atual.
  • Modificar um perfil existente com o assistente interativo:
    1. sudo aa-logprof
    2. Analisa os logs de eventos do AppArmor e permite a modificação interativa de perfis existentes com base nas violações registradas.
  • Listar todos os arquivos que estão sendo monitorados por um perfil:
    1. sudo aa-complain /etc/apparmor.d/usr.sbin.mysqld

      <br>

sudo aa-notify -p /etc/apparmor.d/usr.sbin.mysqld
  1. Mostra uma lista detalhada de todos os arquivos monitorados e protegidos pelo perfil MySQL.
  • Adicionar permissões de rede a um perfil:
    1. Editar o perfil do serviço:
sudo nano /etc/apparmor.d/usr.sbin.mysqld
  1. Adicionar a permissão de rede:
    network inet stream,
    network inet dgram,
  1. Adiciona permissões para permitir que o serviço utilize conexões INET (TCP e UDP).
  • Aplicar um perfil de AppArmor a um script ou binário específico:
    1. sudo aa-enforce /path/to/script.sh
    2. Aplica um perfil AppArmor em modo enforcement para um script ou binário específico, criando uma camada de proteção para execuções futuras.
  • Exibir o contexto de segurança atual de um processo:
    1. sudo ps auxZ | grep apache2
    2. Mostra o contexto de segurança do AppArmor aplicado ao processo Apache2 em execução, permitindo verificar a conformidade do perfil.
  • Definir um perfil como permissivo permanentemente:
    1. sudo aa-complain /etc/apparmor.d/usr.sbin.mysqld
    2. Coloca o perfil MySQL no modo Complain permanentemente, permitindo que violações sejam registradas, mas sem bloqueio.
  • Monitorar todas as violações de perfis AppArmor em tempo real:
    1. sudo tail -f /var/log/syslog | grep 'apparmor'
    2. Exibe as violações e eventos de perfis AppArmor em tempo real, diretamente do log do sistema.
  • Verificar permissões detalhadas de um arquivo em um perfil:
    1. sudo apparmor_parser -p /etc/apparmor.d/usr.sbin.mysqld
    2. Analisa o perfil e exibe as permissões detalhadas para cada arquivo e recurso definido no perfil do MySQL.
  • Recarregar todos os perfis após uma modificação:
    1. sudo systemctl reload apparmor
    2. Recarrega todos os perfis do AppArmor, aplicando as modificações feitas sem a necessidade de reiniciar o sistema.
  • Remover permissões de rede de um perfil:
    1. Editar o perfil do serviço:
sudo nano /etc/apparmor.d/usr.sbin.mysqld
  1. Remover as permissões de rede:
    # network inet stream,
    # network inet dgram,
  1. Remove as permissões para impedir que o serviço faça conexões de rede TCP ou UDP.

Gerenciamento do AppArmor - Nível Avançado

Nível Avançado

  • Criar um perfil de segurança AppArmor manualmente:
    1. Criar o arquivo de perfil:
sudo nano /etc/apparmor.d/usr.local.bin.custom
  1. Exemplo de perfil básico:
    #include <tunables/global>
    /usr/local/bin/custom {
        # Permissões de leitura
        /usr/local/bin/custom r,
        /etc/passwd r,
        # Permissões de leitura e execução
        /usr/local/bin/custom ixr,
        # Restringir acesso a diretórios e arquivos
        /home/*/ r,
        /home/*/.ssh/ rw,
        # Permissões de rede
        network inet stream,
    }
  1. Cria manualmente um perfil AppArmor para o binário `/usr/local/bin/custom`, definindo permissões detalhadas de leitura, execução e acesso à rede.
  • Carregar manualmente um perfil personalizado:
    1. sudo apparmor_parser -r /etc/apparmor.d/usr.local.bin.custom
    2. Recarrega e aplica o perfil personalizado criado no diretório `/etc/apparmor.d/`, ativando as regras definidas no perfil.
  • Aplicar perfis de segurança a containers ou máquinas virtuais:
    1. Para Docker (exemplo de permissões para um container):
sudo docker run --security-opt apparmor=profile_name container_image
  1. Aplica um perfil específico do AppArmor ao iniciar um container Docker, garantindo que ele siga as regras de segurança definidas.
  • Verificar o log detalhado de eventos de segurança para um perfil:
    1. sudo ausearch -m avc --success no -c /usr/local/bin/custom
    2. Exibe eventos de segurança relacionados ao perfil do AppArmor para o binário `custom`, mostrando todos os acessos negados.
  • Adicionar permissões avançadas de rede a um perfil:
    1. Editar o perfil:<br>
sudo nano /etc/apparmor.d/usr.sbin.mysqld

<br>

  1. Adicionar permissões de rede específicas:<br>
    # Permitir conexões TCP e UDP
    network inet dgram,
    network inet stream,
    # Permitir escuta em portas específicas
    network inet stream,
    capability net_bind_service,
  1. Adiciona permissões avançadas para o serviço MySQL, permitindo escuta em portas específicas e o uso de capacidades de rede.
  • Configurar permissões para memória e bloqueio de arquivos:
    1. Editar o perfil:<br>
sudo nano /etc/apparmor.d/usr.local.bin.custom

<br>

  1. Adicionar permissões de bloqueio e uso de memória:<br>
    # Permissões de bloqueio de arquivos
    capability fowner,
    capability fsetid,
    # Permissões de uso de memória
    capability ipc_lock,
  1. Permite que o processo bloqueie arquivos e use memória de forma controlada, garantindo que essas operações sejam monitoradas.
  • Desativar temporariamente um perfil AppArmor para testes:
    1. sudo aa-disable /etc/apparmor.d/usr.sbin.mysqld
    2. Desativa temporariamente o perfil do MySQL, removendo o controle do AppArmor para permitir testes ou debugging.
  • Testar permissões de perfis em modo permissivo:
    1. sudo aa-complain /etc/apparmor.d/usr.local.bin.custom
    2. Coloca o perfil `custom` no modo Complain, permitindo testes de permissões sem bloquear acessos, mas registrando violações.
  • Bloquear capacidades específicas de processos:
    1. Editar o perfil:<br>
sudo nano /etc/apparmor.d/usr.sbin.mysqld

<br>

  1. Restringir capacidades avançadas:<br>
    # Restringir o uso de capacidades do sistema
    deny capability sys_admin,
    deny capability sys_ptrace,
  1. Impede que o serviço MySQL utilize capacidades de administração de sistema ou depuração, garantindo maior segurança ao limitar permissões avançadas.
  • Migrar perfis AppArmor entre servidores:
    1. Exportar perfil para outro servidor:
sudo apparmor_parser -p -W /etc/apparmor.d/usr.sbin.mysqld > mysqld_profile.txt
  1. Importar o perfil no novo servidor:
sudo apparmor_parser -r mysqld_profile.txt
  1. Exporta e importa perfis AppArmor entre servidores, permitindo que políticas de segurança sejam compartilhadas entre diferentes ambientes.
wiki/linux/comandos/comando_apparmor.txt · Last modified: by Wiki Administrator