===== Gerenciamento do AppArmor - Nível Básico ===== ==== Nível Básico ==== * **Verificar o status do AppArmor:** - sudo aa-status - 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:** - sudo apparmor_status - 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):** - sudo aa-enforce /etc/apparmor.d/usr.sbin.mysqld - Coloca o perfil do **MySQL** em **modo enforcement**, onde o AppArmor aplica suas políticas de segurança ativamente. * **Habilitar o modo complain temporariamente:** - sudo aa-complain /etc/apparmor.d/usr.sbin.mysqld - 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:** - sudo dmesg | grep 'apparmor' - 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:** - sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld - 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:** - sudo apparmor_parser -r /etc/apparmor.d/usr.bin.firefox - Recarrega o perfil de segurança do **Firefox**, aplicando as novas regras sem reiniciar o sistema. * **Remover temporariamente o confinamento de um perfil:** - sudo aa-disable /etc/apparmor.d/usr.sbin.mysqld - 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:** - sudo systemctl reload apparmor - 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:** - **Editar o perfil:** sudo nano /etc/apparmor.d/usr.sbin.mysqld - **Exemplo de permissão:** /var/log/mysql/** rw, /var/run/mysqld/mysqld.pid rw, - 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:** - sudo aa-genprof /usr/sbin/apache2 - 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:** - sudo aa-logprof - 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:** - sudo aa-complain /etc/apparmor.d/usr.sbin.mysqld
sudo aa-notify -p /etc/apparmor.d/usr.sbin.mysqld - Mostra uma lista detalhada de todos os arquivos monitorados e protegidos pelo perfil **MySQL**. * **Adicionar permissões de rede a um perfil:** - **Editar o perfil do serviço:** sudo nano /etc/apparmor.d/usr.sbin.mysqld - **Adicionar a permissão de rede:** network inet stream, network inet dgram, - 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:** - sudo aa-enforce /path/to/script.sh - 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:** - sudo ps auxZ | grep apache2 - 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:** - sudo aa-complain /etc/apparmor.d/usr.sbin.mysqld - 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:** - sudo tail -f /var/log/syslog | grep 'apparmor' - 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:** - sudo apparmor_parser -p /etc/apparmor.d/usr.sbin.mysqld - 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:** - sudo systemctl reload apparmor - 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:** - **Editar o perfil do serviço:** sudo nano /etc/apparmor.d/usr.sbin.mysqld - **Remover as permissões de rede:** # network inet stream, # network inet dgram, - 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:** - **Criar o arquivo de perfil:** sudo nano /etc/apparmor.d/usr.local.bin.custom - **Exemplo de perfil básico:** #include /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, } - 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:** - sudo apparmor_parser -r /etc/apparmor.d/usr.local.bin.custom - 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:** - **Para Docker (exemplo de permissões para um container):** sudo docker run --security-opt apparmor=profile_name container_image - 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:** - sudo ausearch -m avc --success no -c /usr/local/bin/custom - 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:** - **Editar o perfil:**
sudo nano /etc/apparmor.d/usr.sbin.mysqld
- **Adicionar permissões de rede específicas:**
# 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, - 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:** - **Editar o perfil:**
sudo nano /etc/apparmor.d/usr.local.bin.custom
- **Adicionar permissões de bloqueio e uso de memória:**
# Permissões de bloqueio de arquivos capability fowner, capability fsetid, # Permissões de uso de memória capability ipc_lock, - 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:** - sudo aa-disable /etc/apparmor.d/usr.sbin.mysqld - Desativa temporariamente o perfil do **MySQL**, removendo o controle do **AppArmor** para permitir testes ou debugging. * **Testar permissões de perfis em modo permissivo:** - sudo aa-complain /etc/apparmor.d/usr.local.bin.custom - 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:** - **Editar o perfil:**
sudo nano /etc/apparmor.d/usr.sbin.mysqld
- **Restringir capacidades avançadas:**
# Restringir o uso de capacidades do sistema deny capability sys_admin, deny capability sys_ptrace, - 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:** - **Exportar perfil para outro servidor:** sudo apparmor_parser -p -W /etc/apparmor.d/usr.sbin.mysqld > mysqld_profile.txt - **Importar o perfil no novo servidor:** sudo apparmor_parser -r mysqld_profile.txt - Exporta e importa perfis **AppArmor** entre servidores, permitindo que políticas de segurança sejam compartilhadas entre diferentes ambientes.