D03/Docker 보안 강화 - 네트워크 세분화 및 방화벽
OWASP(Open Web Application Security Project)은
인터넷 세상에서 발생가능한 가장 중요한 보안 취약점을 정리한 문서입니다.
Overview
Docker Container에 대한 OWASP TOP 10 보안 위협 중
세 번째 항목인 D03 - Network Segmentation and Firewalling 대한 학습 내용을 담았습니다.
과거에는* (그리고 현재에도 대다수 기업은)
서비스가 네트워크 신뢰 모델(Network Trust Model)과 DMZ [1]에 의존했습니다.
사용자는 프론트앤드 서버만 연결 가능하며 엔지니어는 그 경계선 만을 감시하였습니다.
프론트앤스 서버는 미들웨어, 백앤드 서버와만 통신할 수 있었습니다.
하지만 MSA 아키텍처로 넘어가면서 복잡한 요구사항이 생겨났습니다.
특정 어플리케이션은 인터넷에 노출되어야 합니다.
특정 어플리케이션은 인터넷에 노출되면 안됩니다.
특정 어플리케이션은 다른 특정 어플리케이션에만 노출되어야 합니다.
하지만 컨테이너의 등장으로 다음과 같은 추가적인 보안 취약점 [2]이 발생하였습니다.
별도의 docker network, iptables[3][4]을 사용하여 Run-time 환경에서 네트워크 제어가 필요해 보입니다.
아래 명령어로 기본적으로 설치되어 제공되는 Docker Network 등을 확인할 수 있었습니다.
docker network ls
# NETWORK ID NAME DRIVER SCOPE
# 12ab34cd56ef bridge bridge local
# 12ab34cd56ef docker-security_default bridge local
# 12ab34cd56ef host host local
# 12ab34cd56ef none null local
docker network inspect <name>
추가적으로 아래 명령어로 Private Network, Public Network를 개설하는 것도 가능합니다.
docker network create \
--driver=bridge \
--internal \
--subnet=172.19.0.0/16 \
--ip-range=179.19.0.0/24 \
--gateway=179.19.0.1 \
--opt com.docker.network.bridge.name=priv-net \
priv-net
docker network create \
--driver=bridge \
--subnet=172.20.0.0/16 \
--ip-range=172.20.0.0/24 \
--gateway=172.20.0.1 \
--opt com.docker.network.bridge.name=pub-net \
pub-net
번외로 DB를 위한 제한된 네트워크 구성도 가능합니다.
docker network create \
--driver=bridge \
--internal \
--subnet=172.21.0.0/16 \
--ip-range=172.21.0.0/24 --gateway=172.21.0.1 \
--opt com.docker.network.bridge.name=db-net \
db-net
더 자세한 내용은 docker network, iptables[3][4]을 참고해주세요