# 260303 51123 서버 UFW 외부 포트 차단 하드닝 ## 발생 일시 2026-03-03 10:43~10:53 KST ## 배경 외부 공개 포트 점검 중, 운영 원칙(외부는 80/443 + 관리 SSH만 공개) 대비 과다 노출이 확인됨. ## 확인된 원인 - UFW에서 아래 포트가 `Anywhere`/`Anywhere (v6)`로 허용되어 있었음. - `5432/tcp` (PostgreSQL) - `3000/tcp` (Gitea 직접 포트) - `7474/tcp` (Neo4j HTTP) - 이 상태는 도메인/nginx 경유가 아닌 직접 포트 접근 경로를 열어두는 구성임. ## 조치 내용 실서버(51123)에서 아래 명령으로 공개 허용 규칙 제거: ```bash sudo ufw --force delete allow 5432/tcp sudo ufw --force delete allow 3000/tcp sudo ufw --force delete allow 7474/tcp ``` ## 검증 결과 조치 직후 실시간 검증: - 도메인 응답 - `https://ro-being.com` → `HTTP/2 200` - `https://git.ro-being.com` → `HTTP/2 200` - `https://auth.ro-being.com` → `HTTP/2 404` (기존 동작 동일) - 내부 서비스 헬스 - `http://127.0.0.1:9000/health` → `200` - `http://127.0.0.1:8000/health` → `200` - UFW 규칙 - `5432/3000/7474`의 `Anywhere`, `Anywhere (v6)` 허용 규칙 삭제 확인 ## 영향도 - 사용자 도메인 경유 트래픽 영향 없음 - `git.ro-being.com` 기반 Gitea 사용 영향 없음 - 직접 포트 우회 접근 경로만 차단됨 ## 현재 공개 정책(2026-03-03 기준) - 외부 공개 유지: `80/tcp`, `443/tcp`, `51123/tcp(관리 SSH)` - 내부/제한 네트워크 허용: `7687`, `7474(172.17.0.0/16)` ## 후속 권장 - Docker 퍼블리시 포트(`8000/8100/8200/9000/9200/9600`)의 외부 노출 축소(가능한 `127.0.0.1` 또는 내부 네트워크만 사용) - PostgreSQL `listen_addresses`, `pg_hba.conf`를 내부 대역 기반으로 추가 제한 ## 사후 정정 (2026-03-03 11:40 KST) 초기 차단 조치만으로는 충분하지 않았고, 실제 운영 의존 경로를 일부 누락한 상태였다. - 누락된 의존 경로: - 51124 직접 경로: `192.168.219.52 -> 51123:5432` - Docker 브리지 경로: `172.16.0.0/12 -> 51123:5432` (예: auth-server `host.docker.internal:5432`) - 결과: - `auth-server /auth/naverworks/passport/refresh` 타임아웃 - `skill-email /messages*` 연쇄 500 복구 시 최종 반영한 규칙: ```bash sudo ufw allow from 192.168.219.52 to any port 5432 proto tcp sudo ufw allow from 172.16.0.0/12 to any port 5432 proto tcp ``` 최종 정책(정정): - "5432는 무조건 전체 차단"이 아니라, **실제 의존 출발지 단위 최소 허용**이 원칙. - 하드닝 변경 시 반드시 컨테이너 env 기반 의존성 스캔 + 변경 직후 연계 API 실호출을 완료해야 한다.