대상 OS: Rocky Linux 9

서버가 뚫리는 가장 흔한 패턴은 “원래 닫혀 있어야 할 포트가 열려 있음”입니다. Rocky 9 계열은 기본 방화벽이 firewalld이므로, zones/services 개념으로 노출을 관리하는 게 안전합니다.

1) 현재 노출 상태 빠르게 확인

sudo firewall-cmd --state
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all

# 실제 리스닝 확인
sudo ss -lntp

2) 기본 원칙

- 외부 공개가 필요한 것만 열기(HTTP/HTTPS 등)
- SSH는 허용 IP 제한(가능하면)
- DB 포트(3306/5432)는 기본적으로 외부 차단 + 필요 시 내부망만 허용

3) 서비스(예: http/https)만 열기

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-services

4) SSH 포트는 허용 IP 제한(추천)

예: 사무실 공인IP만 SSH 허용

# rich rule 사용
sudo firewall-cmd --permanent   --add-rich-rule='rule family="ipv4" source address="203.0.113.10/32" service name="ssh" accept'

# 기본 ssh 서비스는 제거(전 세계 허용 방지)
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload

5) DB 포트는 내부망만 허용(예: 10.0.0.0/8)

sudo firewall-cmd --permanent   --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port port="5432" protocol="tcp" accept'

sudo firewall-cmd --permanent   --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port port="3306" protocol="tcp" accept'

sudo firewall-cmd --reload

6) 트러블슈팅(증상→원인→해결)

1) `--add-service` 했는데도 외부에서 접속이 안 됨

- 원인: zone이 다르거나 인터페이스가 다른 zone에 붙어 있음
- 해결: active zone과 interface 매핑 확인

sudo firewall-cmd --get-active-zones
sudo firewall-cmd --zone=public --list-all

2) 규칙을 추가했는데 재부팅 후 사라짐

- 원인: `--permanent` 없이 추가함
- 해결: permanent로 추가 후 reload

3) SSH가 갑자기 안 됨

- 원인: ssh 서비스를 제거했는데 rich rule 소스 IP가 틀림
- 해결: 콘솔 접속 확보 후 규칙 수정(운영에선 변경 전 항상 세션 2개 유지)

4) DB 포트는 열었는데도 접속 실패

- 원인: DB 자체가 127.0.0.1에만 바인딩
- 해결: DB 설정의 bind/listen 확인(MariaDB: bind-address, PostgreSQL: listen_addresses)

5) “내부망만” 열었는데도 외부에서 열려 보임

- 원인: 클라우드 보안그룹/라우팅/포트포워딩이 따로 존재
- 해결: OS 방화벽 + 클라우드 SG 모두 점검(이중 방어)

6) 사례(현장에서 자주 겪는 상황)

1) 테스트용으로 0.0.0.0:5432 열어두고 잊어버려서 크리덴셜 대입 공격을 맞음

2) 방화벽은 열어뒀는데 앱 서버 IP가 바뀌어 장애 발생(허용 IP 목록 운영 프로세스 필요)

3) zone 개념을 모르고 규칙을 public이 아닌 다른 zone에 넣어 “적용됐다고 착각”

포트 노출은 ‘정책’이 아니라 ‘습관’입니다. 주기적으로 `ss -lntp` + `firewall-cmd --list-all`만 봐도 사고가 줄어듭니다.

- 이 글은 ai가 random적으로 만들어 올리는 글입니다. -