docs: 기록 51123 DB5432 차단사고 복구 및 의존포트 점검
This commit is contained in:
parent
dbc0e503b8
commit
727255c1dd
@ -0,0 +1,82 @@
|
|||||||
|
# 51123 DB 5432 차단 사고 복구 및 의존 포트 점검
|
||||||
|
|
||||||
|
## 발생 일시
|
||||||
|
- 장애 징후 시작: 2026-03-03 10:59 KST 전후
|
||||||
|
- 원인 확인/복구: 2026-03-03 11:18~11:22 KST
|
||||||
|
|
||||||
|
## 문제 요약
|
||||||
|
- 51124의 `skill-email`이 `192.168.219.45:5432` 연결 타임아웃으로 `ReadTimeout/500`을 반환.
|
||||||
|
- 앱 로직 문제가 아니라 DB 접속 경로(포트 5432) 차단으로 인한 네트워크 레벨 장애.
|
||||||
|
|
||||||
|
## 직접 원인
|
||||||
|
- 2026-03-03 오전 포트 하드닝 작업 중, UFW의 `5432/tcp` 외부 허용 규칙을 제거함.
|
||||||
|
- 이때 51124(`192.168.219.52`)의 DB 직접 접근도 함께 차단됨.
|
||||||
|
|
||||||
|
## 사실 확인 (51123)
|
||||||
|
1. PostgreSQL 리스닝: 정상
|
||||||
|
- `ss -lntp` 결과: `0.0.0.0:5432`, `[::]:5432` LISTEN
|
||||||
|
|
||||||
|
2. PostgreSQL 설정: 원격 수신 가능
|
||||||
|
- `postgresql.conf`: `listen_addresses='*'`, `port=5432`
|
||||||
|
- `pg_hba.conf`: `host all all 0.0.0.0/0 scram-sha-256`
|
||||||
|
|
||||||
|
3. 방화벽: 장애 시점 기준 5432 허용 누락
|
||||||
|
- `ufw status`에서 `5432` 허용 규칙이 없었음
|
||||||
|
|
||||||
|
## 조치
|
||||||
|
- 최소권한 원칙으로 51124 IP만 5432 허용 재개:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo ufw allow from 192.168.219.52 to any port 5432 proto tcp
|
||||||
|
```
|
||||||
|
|
||||||
|
## 복구 검증
|
||||||
|
1. 네트워크
|
||||||
|
- 51124 -> 51123 포트 테스트:
|
||||||
|
- `5432 open` (복구)
|
||||||
|
- `3000 blocked`, `7474 blocked` (의도된 차단 유지)
|
||||||
|
- `7687/9000/8100/8000/9200 open`
|
||||||
|
|
||||||
|
2. 컨테이너 내부
|
||||||
|
- `skill-email` 컨테이너에서 `192.168.219.45:5432` TCP 연결 성공 (`tcp_ok`).
|
||||||
|
|
||||||
|
3. 서비스
|
||||||
|
- `rb8001 /health` 정상(`200`).
|
||||||
|
- 장애 핵심 경로였던 DB 접속 타임아웃은 네트워크 기준 해소.
|
||||||
|
|
||||||
|
## 영향 범위 점검 결과 (51124 -> 51123 의존)
|
||||||
|
다음 서비스/환경변수들이 `192.168.219.45:5432`를 사용 중:
|
||||||
|
- `skill_email`
|
||||||
|
- `skill-calendar`
|
||||||
|
- `skill-news`
|
||||||
|
- `skill-rag-file`
|
||||||
|
- `rb8001`
|
||||||
|
- `robeing-monitor`
|
||||||
|
- 일부 `admin-dashboard` 구성(호스트 브리지 기반)
|
||||||
|
|
||||||
|
즉, 5432 차단 시 `skill-email`만이 아니라 위 서비스 전반에서 동일 장애 가능.
|
||||||
|
|
||||||
|
## 재발 방지
|
||||||
|
1. 포트 하드닝 전 의존성 체크 필수
|
||||||
|
- 51124에서 `192.168.219.45:<port>` 참조를 `.env`/`compose`에서 선조회
|
||||||
|
|
||||||
|
2. 변경 절차 고정
|
||||||
|
- `차단 전`: 의존 포트 목록 작성
|
||||||
|
- `차단 직후`: 51124 원격 TCP 매트릭스 테스트
|
||||||
|
- `완료 전`: 핵심 서비스 헬스 + 최근 오류로그 교차 확인
|
||||||
|
|
||||||
|
3. UFW 정책 원칙
|
||||||
|
- 전면 허용(`Anywhere`) 대신 서버 단위 허용으로 운영
|
||||||
|
- 예: `5432`는 `192.168.219.52`만 허용
|
||||||
|
|
||||||
|
## 명령어 체크리스트
|
||||||
|
```bash
|
||||||
|
# 51123
|
||||||
|
ss -lntp | grep 5432
|
||||||
|
sudo ufw status numbered
|
||||||
|
|
||||||
|
# 51124에서 51123 연결 점검
|
||||||
|
for p in 5432 3000 7474 7687 9000 8100 8000 9200; do
|
||||||
|
timeout 2 bash -lc "cat < /dev/null > /dev/tcp/192.168.219.45/$p" && echo "$p open" || echo "$p blocked"
|
||||||
|
done
|
||||||
|
```
|
||||||
Loading…
x
Reference in New Issue
Block a user