deploy: bind postgres/redis to loopback instead of 0.0.0.0
Both are only used inside the compose network (services reach them by name, postgres:5432 / redis:6379). Publishing on 0.0.0.0 exposed them to the internet — Docker's DNAT rules bypass ufw, so the ports were reachable despite the firewall having no allow rule for them. Bind the published ports to 127.0.0.1 so external access requires an SSH tunnel.
This commit is contained in:
@@ -14,8 +14,11 @@ services:
|
|||||||
POSTGRES_USER: ${POSTGRES_USER:-vidconf}
|
POSTGRES_USER: ${POSTGRES_USER:-vidconf}
|
||||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-vidconf}
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-vidconf}
|
||||||
POSTGRES_DB: ${POSTGRES_DB:-vidconf}
|
POSTGRES_DB: ${POSTGRES_DB:-vidconf}
|
||||||
|
# Публикуем ТОЛЬКО на loopback: postgres нужен внутри compose-сети
|
||||||
|
# (backend/worker обращаются по имени `postgres:5432`). Доступ снаружи —
|
||||||
|
# через SSH-туннель. Публикация на 0.0.0.0 открывала БД в интернет.
|
||||||
ports:
|
ports:
|
||||||
- "5432:5432"
|
- "127.0.0.1:5432:5432"
|
||||||
volumes:
|
volumes:
|
||||||
- postgres_data:/var/lib/postgresql/data
|
- postgres_data:/var/lib/postgresql/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -29,8 +32,12 @@ services:
|
|||||||
redis:
|
redis:
|
||||||
image: redis:7
|
image: redis:7
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
# Публикуем ТОЛЬКО на loopback: redis используется исключительно внутри
|
||||||
|
# compose-сети (backend/worker/livekit/egress по имени `redis:6379`).
|
||||||
|
# Публикация на 0.0.0.0 без пароля = открытый redis в интернет — вектор
|
||||||
|
# cron/replication-RCE (см. .forcc/deploy/SESSION2-FINDINGS.md).
|
||||||
ports:
|
ports:
|
||||||
- "6379:6379"
|
- "127.0.0.1:6379:6379"
|
||||||
volumes:
|
volumes:
|
||||||
- redis_data:/data
|
- redis_data:/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|||||||
Reference in New Issue
Block a user