📚 네트워크 · 패킷 분석 › 02. 포트 · 프로토콜 분석 — 81편
이전 글: 80. ARP · 다음 글: 82. 메일 프로토콜 SMTP·POP3·IMAP

1. 개념

웹 서비스는 "80과 443"으로 끝나지 않습니다. 실제 웹 시스템은 외부에 보이는 포트(웹 서버·프록시)와 내부에서만 쓰는 포트(WAS, 관리 콘솔, 연동 프로토콜)로 나뉩니다. HTTP 메시지 구조와 TLS는 61. HTTP 요청·응답 구조, 62. HTTPS와 TLS Handshake — 암호화된 통신에서 볼 수 있는 것에서 다뤘습니다.

이 글은 웹 관련 포트 지도를 정리하고, 어떤 포트가 외부에 보이면 안 되는지를 봅니다.

포트전송용도외부 공개
80TCPHTTP보통 443으로 리다이렉트용
443TCPHTTPS (HTTP/1.1, HTTP/2)공개
443UDPHTTP/3 (QUIC)서버가 지원할 때 공개
8080TCP대체 HTTP, WAS·프록시 기본값으로 흔함원칙적으로 내부
8443TCP대체 HTTPS, 관리 화면에 흔함원칙적으로 내부
8000, 8888 등TCP개발 서버, 테스트용운영 환경에서는 없어야 함

2. 동작 원리

일반적인 웹 시스템은 리버스 프록시가 443을 받아 내부 WAS로 넘기는 구조입니다. 같은 요청이 구간마다 다른 포트로 기록됩니다.

사용자 203.0.113.50:52311
   │ TCP 443 (TLS)
   ↓
[방화벽]  외부 → 192.168.10.20:443 만 허용
   ↓
[웹 서버·리버스 프록시 nginx]  0.0.0.0:80, 0.0.0.0:443
   │ TLS 종료 → HTTP로 내부 전달
   │ 127.0.0.1:8080 (같은 서버) 또는 192.168.20.30:8080 (WAS 서버)
   ↓
[WAS  Tomcat 등]  8080 HTTP 커넥터
   │                ├ 8005  종료 명령 포트 (localhost)
   │                └ 8009  AJP 커넥터 (웹 서버 연동용, 설정 시)
   ↓
[DB]  3306 / 5432 ...  (83편에서 다룸)
  • 외부 사용자에게 보여야 하는 포트는 80·443뿐이고, 나머지는 서버 내부(127.0.0.1)나 내부망에만 열려 있어야 합니다.
  • 프록시를 거치면 WAS 로그의 출발지는 프록시 IP가 됩니다. 원래 사용자 IP는 X-Forwarded-For 헤더로 전달되는 경우가 많습니다.

3. 주요 특징

제품별로 기본값이 정해진 내부·관리 포트입니다. 설정으로 바꿀 수 있으므로 "기본값 기준"으로만 봅니다.

포트대표 제품·용도 (기본값 기준)노출 시 위험
8080Apache Tomcat HTTP 커넥터, Jenkins 등프록시 우회 직접 접근, 관리 화면 노출
8005Tomcat 종료(shutdown) 포트, localhost 바인드원격 접근 가능하면 서비스 중지 위험
8009Tomcat AJP 커넥터Ghostcat(CVE-2020-1938) 같은 AJP 취약점
7001 / 7002Oracle WebLogic HTTP / HTTPS관리 콘솔 노출
9990WildFly(JBoss) 관리 콘솔관리 기능 노출
9090Cockpit(서버 웹 관리, Rocky에서 흔함)서버 관리 화면 노출
3000, 5000, 8000Node.js, Flask, Django 개발 서버 관례디버그 모드·개발 코드 노출

HTTP/3는 UDP 443을 씁니다. 방화벽 정책이 TCP 443만 허용하면 브라우저는 TCP로 대체(fallback)하므로 서비스는 되지만, 로그상 같은 사이트 트래픽이 TCP·UDP 두 가지로 나타날 수 있습니다.


4. 예시

실습 예시 — 본인 소유 웹 서버 VM(192.168.10.20)에서 웹 관련 포트와 바인드 주소를 확인합니다.

# 웹 관련 LISTEN 포트와 프로세스 (Rocky/Ubuntu 공통)
sudo ss -tlnp | grep -E ':(80|443|8080|8443|8005|8009|9090) '
sudo ss -ulnp | grep ':443 '          # HTTP/3(QUIC) 사용 여부

# 헤더로 어떤 서버가 응답하는지 확인 (다른 본인 VM에서)
curl -sI http://192.168.10.20/
curl -sI http://192.168.10.20:8080/
항목Rocky LinuxUbuntu
Apache 패키지·서비스httpdapache2
웹 포트 추가 시SELinux 허용 목록 확인: semanage port -l 결과의 http_port_t해당 없음(AppArmor 기본 정책)
방화벽firewall-cmd --add-service=httpsufw allow 443/tcp

ss 출력 형식 예시(값은 환경마다 다름, 프로세스 정보 생략):

State   Recv-Q Send-Q  Local Address:Port   Peer Address:Port
LISTEN  0      511           0.0.0.0:80          0.0.0.0:*
LISTEN  0      511           0.0.0.0:443         0.0.0.0:*
LISTEN  0      100         127.0.0.1:8080        0.0.0.0:*
LISTEN  0      1           127.0.0.1:8005        0.0.0.0:*
줄해석
0.0.0.0:80, 0.0.0.0:443모든 인터페이스에서 수신 → 외부 공개 포트
127.0.0.1:8080같은 서버의 프록시만 접근 가능 → 양호
127.0.0.1:8005Tomcat 종료 포트가 localhost에만 바인드 → 양호

8080이 0.0.0.0 또는 *로 바인드되어 있고 방화벽도 열려 있다면, 프록시를 거치지 않는 직접 접근 경로가 생깁니다.

📷 [실습 화면 삽입 위치] ss -tlnp 결과에서 공개 포트(0.0.0.0)와 내부 포트(127.0.0.1)를 구분한 화면


5. 보안 관점

  • 프록시 우회: WAS 포트가 외부에 열려 있으면 WAF·프록시의 접근 통제와 로그를 건너뛸 수 있습니다.
  • 관리 콘솔 노출: 8443·7001·9990·9090 같은 관리 포트는 인증 우회·기본 계정 취약점의 주요 표적입니다.
  • AJP·종료 포트: 8009·8005는 사람이 쓰는 포트가 아니라 연동·제어용이라, 외부에서 접근될 이유가 없습니다.
  • 개발 서버 잔존: 3000·5000·8000에서 개발 서버가 운영 중이면 디버그 정보나 소스가 노출될 수 있습니다. 비표준 포트 식별 방법은 89. 비표준 포트에서 동작하는 서비스 식별를 참고합니다.

6. SOC 관점

흔적 위치확인할 수 있는 것
방화벽 로그외부 → 8080·8443·8009 등 내부 포트 접근 시도(허용·차단)
WAF·프록시 로그443 요청, 원래 사용자 IP, 차단 사유
웹 서버·WAS 접근 로그요청 경로, 응답 코드, 출발지(프록시 IP 여부)
IDS/IPS관리 콘솔 경로, AJP 등 포트별 취약점 시그니처

관제자가 확인할 질문

  • 외부 출발지가 80·443 외의 웹 관련 포트에 접근했는가? 응답(허용)이 있었는가?
  • WAS 로그의 출발지가 프록시 IP가 아닌 외부 IP인가? (직접 접근 경로 존재)
  • 같은 출발지가 여러 서버의 8080·8443·7001 등을 차례로 확인했는가?

오탐 주의: 내부 개발망·모니터링 시스템은 8080·8443 등으로 정상 통신합니다. 로드밸런서 헬스체크도 WAS 포트에 주기적으로 접근하므로, 출발지가 LB·모니터링 자산인지 먼저 확인합니다.


7. 핵심 정리

  • 외부에 공개하는 웹 포트는 TCP 80·443(HTTP/3 사용 시 UDP 443)이 원칙입니다.
  • 8080·8443은 WAS·프록시·관리 화면에서 흔한 대체 포트로, 보통 내부 전용이어야 합니다.
  • Tomcat 8005(종료)·8009(AJP), WebLogic 7001, WildFly 9990, Cockpit 9090 등은 외부 노출 시 위험이 큰 포트입니다.
  • 리버스 프록시 구조에서는 바인드 주소(0.0.0.0 vs 127.0.0.1)와 방화벽으로 내부 포트를 가려야 합니다.
  • 관제에서는 외부 출발지의 비공개 웹 포트 접근과 WAS 로그의 출발지 IP를 확인합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글