Crie um perfil AppArmor personalizado no SUSE Linux.

A SUSE anunciou o SLES 16.0 em 4 de novembro de 2025, com o SELinux substituindo o AppArmor como a estrutura de controle de acesso obrigatória padrão. Se o seu servidor estiver executando o SLES 16, não presuma que o AppArmor esteja instalado ou ativo: confirme a estrutura suportada por essa implementação antes de usar estes comandos. O procedimento abaixo segue a documentação do AppArmor para o SLES 15 SP7 da SUSE, onde o AppArmor está instalado e em execução por padrão.

No SLES 15 SP7, o caminho prático para um aplicativo personalizado é permitir que o sistema aa-genprofcrie um perfil inicial, execute o aplicativo no modo de reclamação, revise cada solicitação registrada e, em seguida, confirme se o perfil está sendo aplicado. O exemplo usa um executável hipotético em /usr/local/bin/report-worker; substitua-o pelo caminho real do executável do seu aplicativo.

Antes de começar

Os perfis do AppArmor são políticas de texto armazenadas em /etc/apparmor.d. O apparmor-utilspacote fornece as ferramentas de criação de perfil. Verifique o host e identifique o executável real, incluindo se uma unidade do systemd inicia um processo wrapper ou filho:

sudo aa-status
command -v aa-genprof
systemctl status apparmor
readlink -f /usr/local/bin/report-worker
Prompt de terminal executando o comando aa-status em um shell no estilo SUSE Linux Enterprise Server 15 SP7.
Visão ilustrativa do terminal com o comando usado para confirmar se o AppArmor está ativo antes de trabalhar com o perfil.

A SUSE lista o AppArmor como habilitado por padrão nas instalações do SLES 15. Se as ferramentas ou o padrão completo do AppArmor estiverem faltando, instale o padrão com [comando de instalação] sudo zypper in -t pattern apparmor. Se o AppArmor não estiver ativo, resolva o problema antes de criar o perfil, em vez de presumir que apenas um arquivo de perfil oferece proteção. Um perfil é associado a um caminho executável; criar um perfil de um wrapper quando a carga de trabalho real é executada como outro binário pode deixar o processo importante sem proteção.

Criar e refinar o perfil

  1. Inicie o gerador. Se o aplicativo já estiver em execução, pare-o e, em seguida, inicie a geração do perfil:

    sudo systemctl stop report-worker
    sudo aa-genprof /usr/local/bin/report-worker
    Prompt do terminal iniciando aa-genprof para o executável de exemplo em /usr/local/bin/report-worker.
    Visão ilustrativa do terminal do aa-genprof iniciando um perfil de aprendizado para o executável de exemplo.

    O nome do serviço é um exemplo. Use o nome real da unidade ou omita o comando de parada se o programa não estiver em execução. aa-genprofCria um perfil aproximado quando não existe um, coloca-o em modo de reclamação (aprendizagem), recarrega-o e marca o log. O modo de reclamação registra solicitações fora da política, mas as permite; é um estado de aprendizagem temporário, não de imposição.

  2. Simule o comportamento real da aplicação. Mantenha o gerador aberto. Em outro terminal, inicie o serviço e execute tarefas ou funcionalidades representativas:

    sudo systemctl start report-worker
    sudo journalctl -f
    Dois comandos de terminal para iniciar o serviço de exemplo report-worker e acompanhar os logs do sistema.
    Visão ilustrativa do terminal ao iniciar o serviço de exemplo e observar sua atividade enquanto ele é executado no modo de aprendizado.

    O perfil abrange a inicialização normal, os caminhos de entrada e saída esperados, as tarefas agendadas, o tratamento de erros e quaisquer programas auxiliares que o aplicativo execute. Um perfil só pode aprender as solicitações geradas durante o teste. Não use cargas de trabalho sensíveis à produção apenas para gerar eventos; um ambiente de teste seguro e dados de teste representativos são preferíveis.

  3. Analise cada solicitação de acesso. Retorne aa-genprofe pressione Spara examinar o intervalo de log marcado. Para cada solicitação, decida se o aplicativo realmente precisa daquele arquivo, recurso ou transição de programa filho. Permita o caminho e a permissão úteis mais restritos. Aceite uma abstração quando ela abranger com precisão uma tarefa comum; use um padrão global somente quando os arquivos correspondentes compartilharem os mesmos requisitos de confiança e acesso. Negue ou ignore solicitações que sejam incidentais ou inexplicáveis.

    Prompt do terminal invocando aa-logprof para revisar eventos de acesso do AppArmor.
    Visão ilustrativa do terminal do aa-logprof, a ferramenta interativa para revisar solicitações de acesso registradas.

    Preste atenção especial às solicitações de execução. Uma transição irrestrita pode permitir que um processo filho escape da política do processo pai; use-a somente quando houver uma necessidade de projeto justificada. Repita o exercício e o ciclo de verificação após adicionar regras legítimas. Quando o perfil abranger o comportamento testado, finalize o gerador. A SUSE observa que a conclusão de um novo aa-genprofciclo de aprendizado normalmente coloca seu perfil em modo de imposição.

  4. Inspecione a política gerada. Para este caminho de exemplo, a convenção de nomenclatura do SUSE converte as barras no caminho do executável em pontos, produzindo /etc/apparmor.d/usr.local.bin.report-worker. Analise o resultado em vez de considerar as regras geradas como automaticamente seguras:

    sudo less /etc/apparmor.d/usr.local.bin.report-worker
    Prompt do terminal abrindo o perfil do report-worker gerado a partir de /etc/apparmor.d.
    Visão ilustrativa do terminal mostrando a abertura do arquivo de perfil cujo nome segue o caminho do executável.

    Verifique se o perfil nomeia o executável pretendido, usa os includes necessários e concede acesso apenas à configuração, aos dados, aos logs, aos sockets e aos programas auxiliares que o aplicativo realmente precisa. Evite regras amplas, como acesso irrestrito a um diretório específico /ou a toda uma árvore de diretórios graváveis, apenas para evitar uma negação. O aplicativo ainda depende da propriedade e das permissões comuns do Unix; o AppArmor adiciona uma camada de restrição separada.

  5. Defina explicitamente o modo desejado. Após a revisão, aplique o perfil ao programa personalizado:

    sudo aa-enforce /usr/local/bin/report-worker
    O prompt do terminal alterna o perfil do AppArmor do report-worker para o modo de imposição.
    Visão ilustrativa do terminal do aa-enforce aplicando as restrições do perfil ao programa de exemplo.

    Se você editou o perfil manualmente após o gerador ser encerrado, recarregue o conjunto de perfis com sudo systemctl reload apparmor. Os documentos do SUSE são recarregados como perfis de reescaneamento sem liberar os processos em execução. Reinicie o serviço do aplicativo para que a nova política se aplique ao seu processo.

Verifique o pedido em vigor.

Execute novamente as mesmas tarefas representativas enquanto o perfil estiver no modo de imposição. Confirme se o serviço inicia, lê as entradas pretendidas, grava a saída esperada e consegue executar as operações auxiliares ou de rede necessárias. Em seguida, inspecione o estado do perfil e as mensagens recentes do kernel:

sudo aa-status
sudo journalctl -k -g apparmor --since today
O terminal solicita a execução do comando aa-status para verificar o estado do perfil do AppArmor.
Visão ilustrativa do terminal da verificação de status usada para confirmar se o perfil personalizado está carregado no modo de imposição.
O prompt do terminal filtra entradas do diário do kernel em busca de mensagens do AppArmor.
Visão ilustrativa do terminal mostrando a filtragem de logs do kernel em busca de eventos do AppArmor durante a verificação.

O executável personalizado deve aparecer como carregado e em modo de imposição. As negações do AppArmor no registro do kernel identificam solicitações que a política bloqueou; use-as para diagnosticar uma falha real do aplicativo, não como motivo para permitir todos os caminhos registrados. Para uma permissão ausente legítima, execute o comando sudo aa-logprof, revise a sugestão, atualize a regra de forma restrita, recarregue o sistema se você editou manualmente e execute novamente o caminho do aplicativo afetado.

Para um serviço em execução contínua cujo perfilamento deve abranger reinicializações ou períodos de observação mais longos, a SUSE documenta um fluxo de trabalho sistêmico separado usando `sudo` aa-autodep, aa-complain`sudo` e aa-logprofvarreduras repetidas. O método independente aa-genprofé mais simples quando a execução de aprendizado pode permanecer aberta durante todo o teste. Nenhum dos fluxos de trabalho consegue inferir o comportamento de um aplicativo que nunca foi testado, portanto, mantenha o perfil sob revisão sempre que houver alterações de software ou configuração.

Fontes

Deixar um comentário

Ative o Live Patching do SLES e verifique se há uma correção no kernel.

Ative o Live Patching do SLES e verifique se há uma correção no kernel.

Configure o caminho correto de aplicação de patches em tempo real para o SLES 16.0 ou 15 SP7, aplique as correções de kernel elegíveis e confirme o que está ativo, sem confundir com uma atualização de kernel que exige reinicialização.

Mantenha os serviços disponíveis durante uma atualização do SLES 15 SP5 para SP6.

Mantenha os serviços disponíveis durante uma atualização do SLES 15 SP5 para SP6.

O SLES 15 SP5 pode ser migrado online para o SP6, mas cada nó precisa ser reinicializado. Use uma atualização gradual testada ou uma transição azul-verde para manter as cargas de trabalho acessíveis.

Crie um perfil AppArmor personalizado no SUSE Linux.

Crie um perfil AppArmor personalizado no SUSE Linux.

Criar, refinar e verificar um perfil AppArmor com privilégios mínimos no SLES 15 SP7, com uma observação clara sobre o padrão SELinux do SLES 16.

Aplique o SLES 15 STIG com segurança usando o OpenSCAP.

Aplique o SLES 15 STIG com segurança usando o OpenSCAP.

Utilize o perfil STIG compatível com a SUSE para analisar o SLES 15, testar a correção, revisar as descobertas restantes e manter as evidências da avaliação.

Restaurar o acesso ao Cockpit no servidor SUSE Linux Enterprise.

Restaurar o acesso ao Cockpit no servidor SUSE Linux Enterprise.

Rastreie uma falha de conexão do Cockpit através de DNS, porta 9090, socket do systemd, firewalld, TLS e configurações de login, utilizando as diretrizes atuais da SUSE.

Configure o failover Ethernet confiável com o SLES 15 Bonding.

Configure o failover Ethernet confiável com o SLES 15 Bonding.

Crie uma conexão Ethernet redundante no SLES 15 com o YaST e o Wicked, configure o bonding ativo-backup e verifique ambas as portas e o failover.

Crie um perfil AutoYaST reutilizável para instalações do SLES 15

Crie um perfil AutoYaST reutilizável para instalações do SLES 15

Transforme um sistema SLES 15 existente em um perfil AutoYaST revisado, valide-o e use-o para implantar um servidor de teste com menos etapas manuais.

Configuração do KVM no SLES 15: Faça com que as VMs selecionadas iniciem na inicialização.

Configuração do KVM no SLES 15: Faça com que as VMs selecionadas iniciem na inicialização.

Instale as ferramentas SLES 15 KVM e libvirt, habilite o serviço de host correto e configure as máquinas virtuais selecionadas para iniciar após uma reinicialização.

Diagnosticar um servidor SUSE que trava na tela de desligamento do systemd.

Diagnosticar um servidor SUSE que trava na tela de desligamento do systemd.

Utilize tarefas do systemd e o registro de inicialização anterior para localizar um serviço lento, uma montagem ou uma dependência de armazenamento e, em seguida, corrija-a sem mascarar a causa.

Permita apenas o tráfego da Web necessário para o seu servidor SLES 15

Permita apenas o tráfego da Web necessário para o seu servidor SLES 15

Use o firewall-cmd para inspecionar a zona ativa, permitir HTTP com segurança, preservar o acesso SSH e verificar se a regra persiste após uma reinicialização no SLES 15.