2015-05-11 14 views
5

Chcę uruchomić kontener dokera z dziennikiem centralnym i usługą fail2ban, aby zapobiec atakom dos/ddos.Docker - modyfikowanie IPTABLES dla hosta z kontenera

Mam problem z uruchomieniem kontenera z takimi możliwościami, że mógłby również zmodyfikować hosty iptables.

Jest projekt ianblenke/docker-fail2ban jednak nie działa ...

Nadanie flagi pojemnik uprzywilejowany tylko pozwala mi kontrolować iptables w tym pojemniku. Czy istnieje sposób sterowania hostami iptables przez kontener?

Pozdrawiam.

+0

Dlaczego chcesz uruchomić fail2ban wewnątrz kontenera? – Blusky

+0

Używam wielu usług na różnych kontenerach i chciałbym mieć centralny kontener, który będzie odpowiedzialny za zapobieganie atakom dos/ddos ​​... –

+1

Zajmuję się nauczaniem, które używa iptables do dzielenia kontenerowych replik mongodów i podobnie trzeba przesłać host vm iptables z wnętrza kontenera. Jak to zrobić (tj. Jakie polecenia w kontenerze pozwalają na manipulowanie kontem hosta vm iptables?) – psychemedia

Odpowiedz

9

Kontenery Docker domyślnie działają w izolowanym obszarze nazw sieci, w którym nie mają dostępu do konfiguracji sieci hosta (w tym iptables).

Jeśli chcesz, aby twój kontener mógł modyfikować konfigurację sieciową hosta, musisz przekazać opcję --net=host do docker run. Od strony 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. 

Trzeba będzie uruchomić zarówno --privileged i --net=host.

+0

to działało Myślałem, że testuję to, ale użyłem net = "bridge" - działało - thx. –

+0

Maciej, czy możesz powiedzieć, jak trafiłeś do hosta iptables z kontenera? – jeesty

2

--privileged Flaga nie jest już wymagana. Począwszy od Docker 1.2 można teraz uruchomić obraz z parametrami --cap-add=NET_ADMIN i --cap-add=NET_RAW, który umożliwi wewnętrzne iptables.

Warto również zauważyć, że w oficjalnych obrazach Ubuntu z pakietu Docker Hub iptables pakiet nie jest zainstalowany. tak ogólne wskazówki powinny być

  • apt-get install iptables
  • prowadzony doker pojemnik z --net=host i --cap-add=NET_ADMIN--cap-add=NET_RAW opcji.

Ponadto, jeśli masz obraz Döcker że brakuje iptables pakiet, a nie chcesz, aby utworzyć własny obraz z niego, można uruchomić pojemnik iptables w tej samej przestrzeni sieciowej. Na przykład. jeśli masz pojemnik container-without-iptables uruchomiony i chcesz rozpocząć niektóre container-with-iptables w tej samej przestrzeni nazw sieci, można to zrobić:

docker run -it --pid=container:container-without-iptables --net=container:container-without-iptables --cap-add sys_admin container-with-iptables 
Powiązane problemy