모든 사용자가 노출된 데이터베이스 포트를 볼 수 있으므로 호스트 네트워크에 노출하고 싶지 않은 postgreSQL
데이터베이스가 내부에 있습니다 . Docker
(현재 나는 pfsense 또는 이와 유사한 것이 없습니다).
전체적인 구성 iptables
은 다음과 같습니다.
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
DOCKER-USER all -- 0.0.0.0/0 0.0.0.0/0
DOCKER-ISOLATION-STAGE-1 all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
DOCKER all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
DOCKER all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain DOCKER (2 references)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 172.18.0.2 tcp dpt:15672
ACCEPT tcp -- 0.0.0.0/0 172.18.0.18 tcp dpt:8081
ACCEPT tcp -- 0.0.0.0/0 172.18.0.19 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 172.18.0.19 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 172.18.0.8 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 172.18.0.13 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 172.18.0.11 tcp dpt:5432
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target prot opt source destination
DOCKER-ISOLATION-STAGE-2 all -- 0.0.0.0/0 0.0.0.0/0
DOCKER-ISOLATION-STAGE-2 all -- 0.0.0.0/0 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-ISOLATION-STAGE-2 (2 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 0.0.0.0/0 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-USER (1 references)
target prot opt source destination
내가 한 일은 docker 내부의 데이터베이스를 동일한 포트의 호스트에 노출하는 것입니다.
0.0.0.0:5432:5432
iptables
모든 연결을 삭제하고 IP 주소 111.111.111.111 및 222.222.222.222만 추가 했습니다 ACCEPT
. 아래 링크는 이에 대해 설명합니다.
그래서 다음 명령을 내렸습니다.
iptables -I DOCKER-USER -s 111.111.111.111 -p tcp --dport 5432 -j ACCEPT
iptables -I DOCKER-USER -s 222.222.222.222 -p tcp --dport 5432 -j ACCEPT
iptables -I DOCKER-USER -p tcp --dport PORT_X -j REJECT --reject-with icmp-port-unreachable
위 구성으로는 222.222.222.222
5432 포트에서 원격으로 로그인할 수 없습니다.
도커 체인에 규칙을 추가했습니다.
왜 이런 일이 발생하는지 이해할 수 없으며 첫 번째 및 두 번째 IP 주소에서 포트에 텔넷을 연결할 수 없습니다. 내 구성에 문제가 있나요?
답변1
IP 주소를 화이트리스트에 추가하는 것은 그리 안전하지 않습니다. IP 스푸핑을 사용하면 쉽게 우회할 수 있습니다.
IPTable을 수동으로 구성하는 것은 과도한 엔지니어링 문제이므로 불필요합니다.
IP 소켓 대신 Unix 소켓을 사용하도록 컨테이너를 구성합니다. 이를 통해 권한을 더 효과적으로 제어할 수 있습니다. 그런 다음 ssh
보안 터널을 사용하여 포트를 로컬 컴퓨터(다른 Unix 소켓 또는 IP 소켓)로 전달할 수 있습니다 .