2026. 03. 22
포트 확인 — 서버 포트가 열려 있는지 닫혀 있는지 점검하기
서버 포트가 열려 있는지 외부에서 직접 확인하는 방법. AWS·GCP 방화벽 설정과 실제 트러블슈팅 시나리오, 보안 원칙까지.
포트란 무엇인가
하나의 서버에서 여러 서비스가 동시에 실행된다. 웹 서버, 데이터베이스, SSH 접속이 같은 IP를 공유하면서도 서로 구별되어야 한다. 이 구별을 가능하게 하는 것이 포트 번호다. IP 주소가 건물 주소라면, 포트는 그 건물 안의 호수(방 번호)다.
자주 쓰이는 포트 번호
| 포트 | 프로토콜 | 용도 |
|---|---|---|
| 22 | SSH | 리눅스 서버 원격 접속 |
| 25 / 587 / 465 | SMTP | 이메일 발송 |
| 80 | HTTP | 일반 웹 트래픽 |
| 443 | HTTPS | 암호화 웹 트래픽 |
| 3306 | MySQL | MySQL 데이터베이스 |
| 5432 | PostgreSQL | PostgreSQL 데이터베이스 |
| 3389 | RDP | Windows 원격 데스크톱 |
포트 상태의 의미
열림(Open): 해당 포트에서 서비스가 실행 중이고, 방화벽도 외부 연결을 허용하고 있다.
닫힘(Closed): 포트에서 실행 중인 서비스가 없거나, 서버가 연결 거부(RST) 응답을 보낸다.
필터링됨(Filtered): 방화벽이 해당 포트의 요청을 무시하고 있다. 응답 없이 타임아웃이 발생한다.
포트 확인이 필요한 실제 상황
이메일 발송이 안 될 때
SMTP 포트(25, 587, 465) 중 하나라도 차단되면 메일이 발송되지 않는다. 국내 통신사와 클라우드 서비스가 스팸 방지 목적으로 25번 포트를 기본 차단하는 경우가 많다. 587번이나 465번으로 변경하거나 AWS SES 같은 서비스를 이용해야 한다.
원격 데이터베이스 접속이 안 될 때
MySQL(3306)이나 PostgreSQL(5432)에 외부에서 접속하려면 서버 방화벽과 데이터베이스 설정 모두에서 해당 포트를 허용해야 한다.
AWS, GCP에서 포트 설정하는 방법
AWS EC2 — 보안 그룹(Security Group)
EC2 콘솔 → 인스턴스 선택 → 보안 그룹 → 인바운드 규칙에서 허용할 포트와 소스 IP를 추가한다. 특정 IP만 허용해야 할 경우, 소스에 0.0.0.0/0 대신 허용할 IP를 명시적으로 입력한다.
GCP — 방화벽 규칙
GCP VPC → 방화벽 규칙에서 인그레스(수신) 규칙을 추가한다.
Hostinger VPS
운영체제 방화벽(ufw)을 직접 관리한다. sudo ufw allow 3306/tcp로 포트를 열 수 있다.
포트 보안 원칙
SSH 기본 포트 변경: 22번 포트는 자동화된 무차별 대입 공격의 단골 대상이다. 다른 포트 번호로 변경하는 것만으로도 자동화 스캐너의 시도를 크게 줄일 수 있다.
데이터베이스 포트 외부 노출 최소화: 3306, 5432 같은 포트는 꼭 필요한 IP만 허용하거나, SSH 터널을 통해 접속하도록 구성한다.