===== 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.