Passaggio di AppArmor al profilo secondario - profilo non trovato


2

Sto cercando di scrivere un profilo AppArmor personalizzato per un'applicazione PHP. L'applicazione PHP è gestita da PHP-FPM (processo principale PHP). Voglio limitare tutto ciò che PHP sta eseguendo tramite shell_exec / exec / proc_open / ... con un profilo / cappello speciale.

Ho la seguente struttura di profili:

docker-php-fpm
-> ^phpfpmmaster 
-> ^userprogs 

Ora phpfpmmaster (stranamente, apparmor non supporta i trattini nei nomi dei profili quando usato nelle transizioni) ha una regola per passare al profilo userprogs:

^phpfpmmaster flags=(attach_disconnected,mediate_deleted) {
  ..
  /bin/dash  rCx -> userprogs,
  ..
}

Ma audit.log dice che AppArmor non riesce a trovare il profilo:

type=AVC msg=audit(1525448842.598:1849368): apparmor="DENIED" operation="exec" info="profile transition not found" error=-13 profile="docker-php-fpm//phpfpmmaster" name="/bin/dash" pid=19686 comm="php-fpm" requested_mask="x" denied_mask="x" fsuid=377118 ouid=0

Capisco che ciò potrebbe essere dovuto al fatto che Cx sta cercando il profilo figlio nel cappello ^ phpfpmmaster. Rendendolo un profilo / cappello figlio, apparmor_parser dice che non può sostituire il profilo perché non è stato trovato.

Ho quindi provato a nominare il cappello "phpfpmmaster // userprogs". apparmor_parser lo accetta, ma la transizione del profilo non riesce con "transizione del profilo non trovata".

Come posso limitare l'esecuzione / bin / dash a un nuovo profilo / cappello?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.