Docker에 방화벽 추가

이것은 컨테이너에 대한 방화벽 보안을 찾는 많은 Devops 엔지니어의 문제를 해결할 것입니다.

다음은 Docker 보안에 대한 이전 기사입니다.




그리고




Docker는 호스트 방화벽 구현을 방해하지 않습니다. 오히려 복잡성을 더합니다. 이 가이드는 Docker에 호스트 방화벽을 추가하기 위해 들여쓰기되었습니다.

1 단계



(a)/etc/systemd/system/으로 이동하여 docker.service.d라는 디렉터리를 만듭니다.
(b) noiptables.conf 파일을 만들고 다음 내용을 추가합니다.

[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --iptables=false


2 단계



(a) 도커 재시작
(b) iptables -L -n -v를 확인합니다(모든 것이 정상이면 규칙이 표시되지 않습니다 :))

3단계



(a) 실행 apt-get install iptables-persistent

이를 실행하면 IPv4를 저장하라는 메시지가 표시되고 IPv6 규칙을 각각/etc/iptables/rules.v4 및/etc/iptables/rules.v6의 두 파일에 저장하라는 메시지가 표시됩니다.

모든 컨테이너에 IPv4 인터넷 액세스를 제공하려면 서버에서 NAT를 수행해야 합니다. 이를 위해 rules.v4 파일의 시작 부분에 다음을 추가합니다.

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j masquerade
COMMIT
And then below it, 


작업을 마치면 rules.v4/rules.v6 파일이 다음과 같이 표시됩니다.

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

-A POSTROUTING -o eth0 -j MASQUERADE

COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

# Allow localhost
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

# ICMP
-A INPUT -p icmp -j ACCEPT

# Docker
-A FORWARD -i docker0 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o docker0 -j ACCEPT

# Incoming
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -j DROP

# Outgoing
-A OUTPUT -j ACCEPT

# Routing
-A FORWARD -j DROP

COMMIT


물론 eth0과 다른 경우 eth0을 아웃바운드 네트워크 인터페이스로 교체해야 합니다.
완료한 후 netfilter-persistent reload를 통해 방화벽을 다시 시작하면 됩니다.

내 팀에 가입하려면 여기를 클릭하십시오.




더 읽어보기 here

좋은 웹페이지 즐겨찾기