TCP 포트를 모니터링하는 방법 (그리고 언제 포트가 열린 것에 대해 알림을 받아야 하는지)
포트 모니터링은 두 가지 작업을 하나로 합친 것입니다. 때로는 데이터베이스나 SMTP 릴레이처럼 서비스가 수신 대기 중임을 알고 싶을 때가 있습니다. 때로는 인터넷에 노출된 인스턴스의 SSH처럼 포트가 방화벽으로 차단된 상태를 유지하는지 알고 싶을 때가 있습니다. 동일한 프로브가 두 질문에 모두 답하지만, 반대 결과에 대해 알림을 설정합니다. 이 가이드는 각 모드를 언제 사용해야 하는지, 무엇에 알림을 설정해야 하는지, 그리고 사람들을 곤란하게 만드는 포트에 대해 다룹니다.
TCP 포트 모니터가 실제로 작동하는 방식
TCP 포트 모니터는 선택한 포트에서 대상에 소켓을 열고 3방향 핸드셰이크가 완료되기를 기다립니다. 핸드셰이크가 성공하면 포트가 열려 있는 것입니다. 연결이 거부되면 포트가 닫혀 있는 것입니다. 연결이 시간 초과되면 프로브와 호스트 사이의 무언가가 패킷을 떨어뜨리고 있는 것이며, 일반적으로 방화벽입니다.
프로브는 소켓 위에서 프로토콜을 사용하지 않습니다. TLS를 협상하거나, SSH 배너를 교환하거나, 데이터베이스 쿼리를 실행하지 않습니다. 단지 포트가 응답하는지 여부만 알려줍니다. 애플리케이션 계층 상태를 확인하려면 그 위에 HTTP 또는 사용자 정의 검사가 필요합니다.
포트가 열려 있기를 원하는 경우
HTTP 검사를 쉽게 수행할 수 없을 때 포트 모니터링을 서비스 상태 프로브로 사용하세요. 다섯 가지 일반적인 경우가 발생합니다.
- 데이터베이스 서버의 포트 5432(Postgres), 3306(MySQL), 6379(Redis), 27017(MongoDB). 리스너가 충돌하면 모든 종속 서비스가 망가지지만, HTTP 프로브를 실행할 수 없습니다.
- SMTP 릴레이의 포트 25 또는 587. SMTP 배너 검사는 내부 상태 엔드포인트가 놓치는 리스너 충돌을 잡아냅니다.
- 게임 서버 및 HTTP를 사용하지 않는 기타 사용자 정의 TCP 프로토콜.
- 내부 로드 밸런서, 업스트림 서비스에 비HTTP 상태 포트를 노출합니다.
- VPN 엔드포인트, OpenVPN-TCP 및 WireGuard의 443과 같은 UDP-하지만-또한-TCP 포트.
포트가 닫혀 있기를 원하는 경우
역방향 포트 모니터링은 보안 가드레일입니다. 포트가 공개 인터넷에서 절대 열려 있어서는 안 되기 때문에, 포트가 열리면 알림을 받도록 모니터를 설정합니다. 이 패턴은 인프라 변경의 평범한 한 주 동안 잘못될 수 있는 일들을 잡아냅니다.
누군가 디버깅을 위해 임시로 방화벽 규칙을 열고 되돌리는 것을 잊습니다. Kubernetes 서비스가 실수로 LoadBalancer 유형을 받습니다. 새 인스턴스가 잘못된 보안 그룹을 받습니다. Terraform 모듈 변경으로 내부용이어야 했던 포트가 노출됩니다. 모든 경우에 역방향 포트 모니터는 한 번의 검사 간격 내에 노출을 잡아냅니다.
지금 당장 역방향 모니터링해야 할 중요한 포트
이를 노출해서는 안 되는 인터넷에 노출된 호스트에 대해 다섯 개의 포트에 역방향 검사를 설정할 가치가 있습니다.
- 22 (SSH), 프로덕션 애플리케이션 서버에서. 배스천 전용 액세스가 표준이며, 실수로 열린 SSH 포트는 몇 시간 내에 대규모 스캔 로그에 나타납니다.
- 3306 (MySQL) 및 5432 (Postgres). 공개 데이터베이스 포트는 자격 증명 스터핑 공격의 상당 부분을 차지합니다.
- 6379 (Redis). 인증이 없는 열린 Redis는 업계에서 가장 많이 악용되는 잘못된 구성 중 하나입니다.
- 27017 (MongoDB). Redis와 같은 이야기입니다. 기본 설정, 인증 없음, 공개 포트는 데이터 손실을 의미합니다.
- 9200 (Elasticsearch). 열린 클러스터는 몇 시간 내에 스크래핑되고, 채굴되며, 랜섬웨어의 대상이 됩니다.
포트 모니터링을 위한 알림 임계값
서비스 상태 점검(포트가 OPEN 상태여야 함)은 HTTP와 동일한 임계값 패턴이 적합합니다. 연속 3회 실패 후 알림을 보내고, 짧은 깜빡임은 억제합니다. 단일 프로브를 닫는 네트워크 일시 장애는 노이즈에 불과합니다.
보안(포트가 CLOSED 상태여야 함)은 정반대입니다. 첫 감지 즉시 알림을 보냅니다. 실수로 열린 SSH나 Redis 포트는 최고 등급의 비상 상황입니다. 봇은 공용 인터넷을 끊임없이 스캔하고 있으며, 잘 알려진 포트가 노출된 순간부터 침해되기까지의 시간은 분 단위로 측정됩니다.
보안 포트 모니터링 입문 체크리스트
팀이 운영하는 모든 인터넷 노출 IP에 대해 22, 3306, 5432, 6379, 27017 포트에 60초 간격의 반전(inverted) 모니터를 설정하세요. 알림은 서비스 상태 알림과 분리하여 보안 채널로 보냅니다. 분기별로 한 번씩 자체 IP에 실제 포트 스캔을 실행해 통제 수단으로 활용하세요. 비용은 적고 보장 범위는 넓으며, 이로 인해 잡아내는 장애 유형은 치명적인 수준입니다.
MonitorAH 무료로 사용해 보세요
모니터 3개, 1분 이내 알림 설정, 신용카드 불필요. 이 문단을 읽는 시간 안에 웹사이트 하나와 cron 작업 하나를 보호할 수 있습니다.
모니터링 시작하기관련 글
SSL 인증서 모니터링: 2026년 실무 가이드
SSL 인증서 만료를 모니터링하는 방법, 무엇에 알림을 설정해야 하는지, 그리고 브라우저 경고를 사전에 차단하는 운영 습관에 대해 알아봅니다.
Cron Job Monitoring with Heartbeats: a Practical Tutorial
How heartbeat monitoring catches the cron jobs that fail silently, with concrete examples in bash, Python, and Node.
How to Monitor a REST API for Uptime and Response Time
What to check in a REST API monitor, the right thresholds, and how to catch the silent failures that ping checks miss.