요구사항: 개인 홈 앨범 시스템은 Docker 컨테이너를 사용해 구축되었으며, Docker 이미지는 제3자 개발자가 개발한 것이므로 집 LAN에서의 접근과 보기만 제한됩니다. 보안 문제인지 모르겠습니다개인정보 침해 발생이 문제를 더 잘 해결하기 위해, 도커 컨테이너가 인터넷(외부 네트워크)에 접근하는 것을 금지하여 프라이버시 보장을 추가하고자 합니다.
이 글은 CentOS7 시스템, Docker 버전 20.10.20을 사용하며, nginx 이미지를 사용해 테스트를 제공합니다.
인터넷 접속(엑스트라넷)은 기본적으로 허용됩니다
웹 서비스를 제공하는 새로운 nginx 컨테이너를 생성하세요.18080 포트 접근, 컨테이너는 기본적으로 인터넷(외부 네트워크)에 접속할 수 있으며, 명령어는 다음과 같습니다:
컨테이너에 들어가 curl 명령어를 통해 이 사이트의 자원을 요청하세요. 이 명령어는 아래 그림과 같이 일반적으로 얻을 수 있습니다:
Docker 컨테이너가 인터넷 접속을 차단하는 방법 (extranet)
먼저, 도커를 통해 커스텀 네트워크를 만들고 가상 네트워크 카드를 다음 명령어로 만들어야 합니다:
iptables를 통해 가상 NIC에 다음 명령어로 인터넷 접속을 금지하는 규칙을 설정하세요:
iptables 서비스가 제공되든 없든, 방화벽이 켜져 있든 아니든,명령어에 의해 추가된 iptables 규칙은 즉시 적용됩니다!!!
참고: 이 계획은 적절합니다서로 다른 컨테이너가 같은 네트워크에 합류하면 컨테이너끼리 통신할 수 없게 됩니다!!!!
아래에 표시된 DOCKER-USER 규칙을 살펴보세요:
새로운 nginx 컨테이너를 다시 생성하세요. 컨테이너는 웹 서비스를 제공하며,18081 포트는 외부 세계에 서비스를 제공하며, 컨테이너는 인터넷(공용 네트워크) 접속이 금지되어 있습니다. 명령은 다음과 같습니다:
우리는 목표를 달성했지만,서버를 재시작하면 iptables에서 만든 규칙들이 사라집니다서버가 재시작된 후 어떻게 자동으로 커스텀 규칙을 불러올 수 있나요?
iptables-save 명령어는 리눅스 커널의 iptables 테이블을 표준 출력 벤더로 내보내는 데 사용되며, 보통 셸의 I/O 리디렉션 함수를 사용해 출력을 지정된 파일에 저장합니다. 기존 iptables 규칙을 저장하세요
부팅 시 restore iptables 규칙을 추가하고, 부팅 파일은 /etc/rc.d/rc.local입니다. 파일을 편집한 후 마지막에 다음 명령을 추가하세요:
마지막으로, 다음 명령어로 실행 권한을 추가하세요:
설정이 완료된 후에도 iptables 규칙은 서버를 재시작해도 여전히 적용됩니다.
Docker의 모든 컨테이너는 인터넷(extranet) 접속이 금지되어 있습니다.검사 안 했어, 명령어는 다음과 같습니다:
(끝)
|