Prevenire la bomba a forcella all'interno del contenitore docker


8

Attualmente sto lottando per limitare il numero di processi per l'utente che ho chiamato sandbox.

Ho configurato i limiti dei processi all'interno in /etc/security/limits.confquesto modo:

sandbox            hard    nproc            100

Ma se voglio connettermi al contenitore come sandboxutente, ssh restituisce:

shell request failed on channel 0

Quindi ho effettuato l'accesso come roote verificato quanti processi sono in esecuzione sandboxdall'utente, ma è inferiore a 5.

Quindi cosa potrebbe impedirmi di accedere tramite ssh?
Senza limiti di impostazione, l'accesso ssh per l' sandboxutente funziona correttamente.

O c'è un altro modo per prevenire l'attacco della bomba a forcella?

Risposte:


2

qualsiasi errore durante la connessione a un sshd è registrato in /var/log/auth.log (nel sistema operativo basato su debian o sicurezza nei sistemi basati su redhat)

Se non lo è, impostare LogLevel VERBOSEin /etc/ssh/sshd_confige ricalibratura sshd. Questo ti mostrerà perché sshd rifiuta la tua connessione in seguito.

Detto questo, torniamo al tuo limitatore di bombe a forcella: le macchine docker si basano su LXC, un sistema container per Linux. LXC utilizza CGROUPS per gestire i limiti delle risorse per ciascun contenitore.

in / sys / fs / cgroups, è possibile impostare qualsiasi limite per un LXC in esecuzione, e in / Var / lib / lxc / vmname / config, è possibile impostare i limiti che verranno applicati all'avvio.

La limitazione del numero di processi in un cgroup viene eseguita dal sottosistema contatore attività (aggiunto nel kernel Linux nel 2011 http://lkml.iu.edu//hypermail/linux/kernel/1109.0/01455.html )

Con un kernel Linux abbastanza recente, la limitazione del numero di processi consentiti per un cgroup viene quindi effettuata aggiungendo questo tipo di linea nel file di configurazione di lxc:

lxc.cgroup.tasks.limit = 1024 

per un massimo di 1024 processi

(dichiarazione di non responsabilità: informazioni non verificate su una macchina reale, tuttavia, da confermare)


1
Grazie. Per la correzione, i container Docker più recenti non sono basati su LXC, LXC è disponibile come driver. Il driver nativo dei contenitori Docker si basa direttamente sugli spazi dei nomi del kernel. Ma mi piace molto l'idea con i cgroups, non sapevo che fosse possibile limitare il conteggio dei processi. Lo proverò sicuramente.
eXPi,

2
Ad oggi il sottosistema del contatore di attività non è ancora arrivato nel kernel ufficiale.
Fabian Jakobs,
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.