2015-05-11 23 views
5

Desidero eseguire un contenitore finestra mobile con registro centrale e il servizio fail2ban per impedire attacchi DOS/DDo.Finestra mobile - modifica di IPTABLES per l'host dal contenitore

Sto riscontrando un problema nell'esecuzione di un contenitore con funzionalità tali da poter modificare anche gli host iptables.

c'è un progetto ianblenke/docker-fail2ban però non funziona ...

Dare la bandiera contenitore privilegiata permette soltanto che me controllare iptables su questo contenitore. C'è un modo per controllare gli host iptables attraverso il contenitore?

Saluti.

+0

perché si vuole eseguire fail2ban all'interno di un contenitore? – Blusky

+0

Sto eseguendo servizi multipli su contenitori diversi e mi piacerebbe avere un contenitore centrale che sarà responsabile per prevenire attacchi dos/ddos ​​... –

+1

Sto esplorando un'attività didattica che usa iptables per partizionare replicaset containerizzati mongodb e allo stesso modo bisogno di colpire host vm iptables da dentro un contenitore. Come faccio a farlo (cioè quali comandi nel contenitore consentono al contenitore di manipolare l'host vm iptables?) – psychemedia

risposta

9

I contenitori Docker, per impostazione predefinita, vengono eseguiti all'interno di uno spazio dei nomi di rete isolato in cui non hanno accesso alla configurazione della rete host (inclusi iptables).

Se si desidera che il contenitore sia in grado di modificare la configurazione di rete dell'host, è necessario passare l'opzione --net=host a docker run. Dalla pagina docker-run(1) man:

--net="bridge" 
    Set the Network mode for the container 
     'bridge': creates a new network stack for the container on the docker bridge 
     'none': no networking for this container 
     'container:': reuses another container network stack 
     'host': use the host network stack inside the container. 
     Note: the host mode gives the container full access to 
     local system services such as D-bus and is therefore 
     considered insecure. 

Sarà necessario eseguire sia con --privileged e --net=host.

+0

ha funzionato pensavo di provarlo, ma stavo usando net = "bridge" - ha funzionato - thx. –

+0

Maciej, puoi dire come sei arrivato agli iptables dell'host dal container? – jeesty

2

--privileged flag non è più richiesto. A partire da Docker 1.2 è ora possibile eseguire l'immagine con i parametri --cap-add=NET_ADMIN e --cap-add=NET_RAW che consentiranno iptables interni.

Potrebbe anche valere la pena notare che nelle immagini ufficiali di Ubuntu dal pacchetto Docker Hub iptables non è installato. così generale l'istruzione dovrebbe essere

  • apt-get install iptables
  • contenitore finestra mobile corsa con --net=host e --cap-add=NET_ADMIN--cap-add=NET_RAW opzioni.

Inoltre, se si dispone di un'immagine di finestra mobile che manca iptables pacchetto, e non si vuole creare un'immagine personalizzata da esso, è possibile eseguire contenitore con iptables nello stesso spazio di rete. Per esempio. se si dispone di contenitore container-without-iptables in esecuzione, e si desidera avviare una certa container-with-iptables nello stesso spazio dei nomi di rete, si può fare:

docker run -it --pid=container:container-without-iptables --net=container:container-without-iptables --cap-add sys_admin container-with-iptables 
Problemi correlati