Creare un profilo AppArmor personalizzato su SUSE Linux

Il 4 novembre 2025 SUSE ha annunciato SLES 16.0, con SELinux che sostituisce AppArmor come framework di controllo degli accessi obbligatorio predefinito. Se il server esegue SLES 16, non dare per scontato che AppArmor sia installato o attivo: verificare il framework supportato da tale implementazione prima di utilizzare questi comandi. La procedura seguente segue la documentazione di SUSE relativa ad AppArmor per SLES 15 SP7, dove AppArmor è installato ed eseguito per impostazione predefinita.

Su SLES 15 SP7, il percorso pratico per un'applicazione personalizzata è quello di aa-genprofcreare un profilo iniziale, testare l'applicazione in modalità di segnalazione, esaminare ogni richiesta registrata e quindi verificare che il profilo venga applicato correttamente. L'esempio utilizza un eseguibile ipotetico in /usr/local/bin/report-worker; sostituirlo con il percorso eseguibile reale della propria applicazione.

Prima di iniziare

I profili AppArmor sono policy di testo memorizzate in /etc/apparmor.d. Il apparmor-utilspacchetto fornisce gli strumenti di profilazione. Controlla l'host e identifica l'eseguibile effettivo, incluso se un'unità systemd avvia un wrapper o un processo figlio:

sudo aa-status
command -v aa-genprof
systemctl status apparmor
readlink -f /usr/local/bin/report-worker
Prompt del terminale con il comando aa-status in esecuzione su una shell in stile SUSE Linux Enterprise Server 15 SP7.
Visualizzazione a schermo del comando utilizzato per verificare che AppArmor sia attivo prima di intervenire sul profilo.

SUSE indica AppArmor come abilitato di default nelle installazioni di SLES 15. Se gli strumenti o il pattern AppArmor completo non sono presenti, installarlo con sudo zypper in -t pattern apparmor. Se AppArmor non è attivo, è necessario individuarne la causa prima di eseguire la profilazione, anziché presumere che un file di profilo da solo fornisca protezione. Un profilo è associato a un percorso eseguibile; la profilazione di un wrapper quando il carico di lavoro reale viene eseguito come un altro binario potrebbe lasciare il processo importante non protetto.

Crea e perfeziona il profilo

  1. Avvia il generatore. Interrompi l'applicazione se è già in esecuzione, quindi avvia la generazione del profilo:

    sudo systemctl stop report-worker
    sudo aa-genprof /usr/local/bin/report-worker
    Prompt del terminale che avvia aa-genprof per l'eseguibile di esempio in /usr/local/bin/report-worker.
    Visualizzazione illustrativa del terminale di aa-genprof durante l'avvio di un profilo di apprendimento per l'eseguibile di esempio.

    Il nome del servizio è un esempio. Utilizzare il nome reale dell'unità oppure omettere il comando di arresto se il programma non è in esecuzione. aa-genprofCrea un profilo approssimativo quando non ne esiste uno, lo mette in modalità di reclamo (apprendimento), lo ricarica e contrassegna il registro. La modalità di reclamo registra le richieste fuori policy ma le consente; è uno stato di apprendimento temporaneo, non di applicazione.

  2. Esegui simulazioni di comportamento reale dell'applicazione. Mantieni il generatore aperto. In un altro terminale, avvia il servizio ed esegui processi o funzionalità rappresentativi:

    sudo systemctl start report-worker
    sudo journalctl -f
    Due comandi da terminale per avviare il servizio report-worker di esempio e visualizzare i log di sistema.
    Visualizzazione a schermo dell'avvio del servizio di esempio e della sua attività durante l'esecuzione in modalità di apprendimento.

    Il profilo deve coprire l'avvio normale, i percorsi di input e output previsti, le attività pianificate, la gestione degli errori e qualsiasi programma di supporto avviato dall'applicazione. Un profilo può apprendere solo le richieste generate durante il test. Non utilizzare carichi di lavoro sensibili all'ambiente di produzione solo per generare eventi; è preferibile un ambiente di test sicuro e dati di test rappresentativi.

  3. Esamina ogni richiesta di accesso. Torna indietro aa-genprofe premi Sper analizzare l'intervallo di registro contrassegnato. Per ogni richiesta, decidi se l'applicazione necessita effettivamente di quel file, di quella funzionalità o di quella transizione tra programmi figli. Consenti il ​​percorso e l'autorizzazione più ristretti e utili. Accetta un'astrazione quando copre accuratamente un'attività comune; usa un pattern glob solo quando i file corrispondenti condividono gli stessi requisiti di fiducia e di accesso. Nega o ignora le richieste incidentali o non spiegate.

    Richiesta del terminale che richiama aa-logprof per esaminare gli eventi di accesso di AppArmor.
    Visualizzazione illustrativa del terminale di aa-logprof, lo strumento interattivo per la revisione delle richieste di accesso registrate.

    Presta particolare attenzione alle richieste di esecuzione. Una transizione non vincolata può consentire a un elemento figlio di eludere la policy dell'elemento padre; utilizzala solo quando vi è una giustificata necessità di progettazione. Ripeti il ​​ciclo di esercizio e scansione dopo aver aggiunto regole legittime. Quando il profilo copre il comportamento testato, termina il generatore. SUSE fa notare che il completamento di un nuovo aa-genprofciclo di apprendimento normalmente mette il suo profilo in modalità di applicazione.

  4. Esamina la policy generata. Per questo percorso di esempio, la convenzione di denominazione di SUSE converte le barre nel percorso dell'eseguibile in punti, producendo /etc/apparmor.d/usr.local.bin.report-worker. Esamina il risultato invece di considerare le regole generate come automaticamente sicure:

    sudo less /etc/apparmor.d/usr.local.bin.report-worker
    Prompt del terminale che apre il profilo report-worker generato da /etc/apparmor.d.
    Visualizzazione a schermo dell'apertura del file di profilo il cui nome segue il percorso del file eseguibile.

    Verifica che il profilo nomini l'eseguibile previsto, utilizzi gli include necessari e conceda l'accesso solo alla configurazione, ai dati, ai log, ai socket e ai programmi di supporto di cui l'applicazione ha effettivamente bisogno. Evita regole generiche come l'accesso illimitato a una sottocartella /o a un'intera directory scrivibile solo per evitare un rifiuto. L'applicazione dipende comunque dalla normale proprietà e dai permessi di Unix; AppArmor aggiunge un ulteriore livello di restrizione.

  5. Impostare esplicitamente la modalità desiderata. Dopo la revisione, applicare il profilo al programma personalizzato:

    sudo aa-enforce /usr/local/bin/report-worker
    Richiesta da terminale per passare il profilo AppArmor report-worker alla modalità di applicazione.
    Visualizzazione a schermo dell'applicazione delle restrizioni del profilo da parte del comando aa-enforce al programma di esempio.

    Se hai modificato il profilo manualmente dopo l'uscita del generatore, ricarica il set di profili con sudo systemctl reload apparmor. I documenti SUSE vengono ricaricati come profili di scansione senza sbloccare i processi in esecuzione. Riavvia il servizio dell'applicazione in modo che la nuova policy venga applicata al suo processo.

Verificare l'applicazione in fase di esecuzione

Eseguire nuovamente le stesse attività rappresentative mentre il profilo è in modalità di applicazione. Verificare che il servizio si avvii, legga gli input previsti, scriva l'output atteso e sia in grado di eseguire le operazioni di supporto o di rete richieste. Quindi, esaminare sia lo stato del profilo che i messaggi recenti del kernel:

sudo aa-status
sudo journalctl -k -g apparmor --since today
Eseguire il comando aa-status nel terminale per verificare lo stato del profilo AppArmor.
Visualizzazione esemplificativa del terminale del controllo di stato utilizzato per confermare che il profilo personalizzato sia caricato in modalità di applicazione forzata.
Filtro delle voci del registro del kernel tramite prompt del terminale per i messaggi di AppArmor.
Visualizzazione esemplificativa nel terminale del filtraggio dei log del kernel per gli eventi di AppArmor durante la verifica.

L'eseguibile personalizzato dovrebbe apparire caricato e in modalità di applicazione. I rifiuti di AppArmor nel registro del kernel identificano le richieste bloccate dalla policy; utilizzali per diagnosticare un errore reale dell'applicazione, non come motivo per consentire ogni percorso registrato. Per un permesso mancante legittimo, esegui sudo aa-logprof, esamina il suggerimento, aggiorna la regola in modo specifico, ricarica se l'hai modificata manualmente e riesegui il percorso dell'applicazione interessato.

Per un servizio in esecuzione continua la cui profilazione deve estendersi ai riavvii o a periodi di osservazione più lunghi, SUSE documenta un flusso di lavoro di sistema separato che utilizza aa-autodepscansioni aa-complainripetute aa-logprof. Il metodo autonomo aa-genprofè più semplice quando l'esecuzione di apprendimento può rimanere aperta per l'intera durata del test. Nessuno dei due flussi di lavoro può dedurre il comportamento dell'applicazione che non è mai stato eseguito, quindi è necessario tenere sotto controllo il profilo in caso di modifiche al software o alla configurazione.

Fonti

Lascia un commento

Mantenere i servizi disponibili durante l'aggiornamento da SLES 15 SP5 a SP6

Mantenere i servizi disponibili durante l'aggiornamento da SLES 15 SP5 a SP6

SLES 15 SP5 può essere migrato online a SP6, ma ogni nodo deve essere riavviato. Utilizzare un aggiornamento progressivo testato o un passaggio di consegne blue-green per mantenere i carichi di lavoro raggiungibili.

Creare un profilo AppArmor personalizzato su SUSE Linux

Creare un profilo AppArmor personalizzato su SUSE Linux

Creare, perfezionare e verificare un profilo AppArmor con privilegi minimi su SLES 15 SP7, con una nota chiara sull'impostazione predefinita di SELinux in SLES 16.

Applica in modo sicuro lo standard SLES 15 STIG con OpenSCAP

Applica in modo sicuro lo standard SLES 15 STIG con OpenSCAP

Utilizza il profilo STIG supportato da SUSE per analizzare SLES 15, testare le soluzioni, rivedere i risultati rimanenti e conservare le prove di valutazione.

Ripristinare l'accesso alla cabina di pilotaggio di SUSE Linux Enterprise Server.

Ripristinare l'accesso alla cabina di pilotaggio di SUSE Linux Enterprise Server.

Tracciare una connessione Cockpit non riuscita attraverso DNS, porta 9090, socket systemd, firewalld, TLS e impostazioni di accesso, seguendo le linee guida SUSE aggiornate.

Configura un failover Ethernet affidabile con SLES 15 Bonding

Configura un failover Ethernet affidabile con SLES 15 Bonding

Crea una connessione Ethernet ridondante su SLES 15 con YaST e Wicked, configura il bonding attivo-backup e verifica entrambe le porte e il failover.

Creare un profilo AutoYaST riutilizzabile per le installazioni di SLES 15

Creare un profilo AutoYaST riutilizzabile per le installazioni di SLES 15

Trasforma un sistema SLES 15 esistente in un profilo AutoYaST verificato, convalidalo e utilizzalo per implementare un server di test con un numero ridotto di passaggi manuali.

Configurazione KVM di SLES 15: Avviare le macchine virtuali selezionate all'avvio del sistema

Configurazione KVM di SLES 15: Avviare le macchine virtuali selezionate all'avvio del sistema

Installa gli strumenti KVM e libvirt di SLES 15, abilita il servizio host corretto e configura le macchine virtuali selezionate per l'avvio automatico dopo un riavvio.

Diagnosticare un server SUSE che si blocca nella schermata di arresto di systemd

Diagnosticare un server SUSE che si blocca nella schermata di arresto di systemd

Utilizza i processi systemd e il registro di avvio precedente per individuare un servizio, un punto di montaggio o una dipendenza di archiviazione che rallenta il sistema, quindi correggi il problema senza mascherarne la causa.

Apri solo il traffico web necessario al tuo server SLES 15

Apri solo il traffico web necessario al tuo server SLES 15

Utilizza firewall-cmd per ispezionare la zona attiva, consentire HTTP in modo sicuro, preservare l'accesso SSH e verificare che la regola sopravviva a un riavvio su SLES 15.

Diagnosticare gli errori di accesso a SLES PAM senza bloccare l'accesso.

Diagnosticare gli errori di accesso a SLES PAM senza bloccare l'accesso.

Individuare la causa di un errore PAM, ovvero il servizio, i criteri dell'account o il provider di identità, quindi ripristinare la corretta configurazione SLES preservando una sessione amministrativa funzionante.