Docker: quando usare apparmor vs seccomp vs --cap-drop

3

La finestra mobile sembra supportare sia apparmor che seccomp. Docker consente anche di rilasciare le funzionalità durante l'esecuzione di un contenitore.

Tuttavia non sono riuscito a trovare alcuna documentazione o linea guida su quando utilizzare quale approccio.

Sembra esserci una significativa sovrapposizione in ciò per cui possono essere utilizzati, non sono riuscito a capire alcuna linea guida generale su quando utilizzare quale di queste opzioni.

Qualcuno può fornire qualche linea guida?

Nel mio caso, devo eseguire un sacco di codice studenti sul server. Voglio consentire loro di eseguire programmi Java e c ++. Consenti accesso in scrittura a una directory (volume di dati). Non hanno bisogno di accesso alla rete, o qualcosa di complicato.

Fornire alcune linee guida su come proteggere.

    
posta JackDaniels 02.11.2018 - 05:32
fonte

1 risposta

6

Puoi usarli tutti.

Ognuna di queste funzionalità di sicurezza ha scopi diversi e in realtà si sovrappone poco. Funzionano tutti per ridurre il danno che un processo può causare una volta compromesso. Sono tutti molto bassi e possono essere utilizzati per migliorare significativamente la sicurezza del software.

Seccomp è una funzionalità Linux che consente un programma di spazio utente per configurare i filtri syscall. Questi filtri specificano quali chiamate di sistema sono consentite e quali argomenti sono autorizzati ad avere. È un filtro di livello molto basso che riduce la superficie di attacco del kernel. Ad esempio, un bug in keyctl() che consente a semplici chiamate a tale syscall di elevare i privilegi non sarebbe necessariamente utilizzabile per privesc in un programma che ha accesso limitato a quella chiamata.

AppArmor è un framework di controllo di accesso obbligatorio che funziona come un LSM (Linux Security Module) . È utilizzato per autorizzare o inserire nella blacklist l'accesso di un soggetto (programma) a un oggetto (file, percorso, ecc.). AppArmor può essere utilizzato per consentire a un programma di avere accesso in lettura a /etc/passwd , ma non a /etc/shadow . Le policy possono anche essere utilizzate per limitare le funzionalità o anche per limitare l'accesso alla rete.

Funzionalità e il rilascio di capacità è una tecnica generale in cui un processo privilegiato revoca un sottoinsieme dei privilegi con cui è dotato. Un processo di root può far cadere, ad esempio, le capacità richieste per creare connessioni grezze alla rete, o le capacità richieste per bypassare le autorizzazioni di file UNIX standard (DAC), anche se rimane root. Questa tecnica non è molto fine in quanto esiste solo un numero limitato di funzionalità che possono essere eliminate, ma riduce il danno che un programma può fare se è stato comunque compromesso.

In generale, dovresti sapere che:

  • Seccomp riduce la possibilità che una vulnerabilità del kernel venga sfruttata con successo.

  • AppArmor impedisce a un'applicazione di accedere ai file a cui non dovrebbe accedere.

  • Il rilascio di capacità riduce il danno che un processo privilegiato compromesso può fare.

Vedi anche Come viene implementato Sandboxing?

    
risposta data 02.11.2018 - 08:09
fonte

Leggi altre domande sui tag