포트 스캔의 원리와 방화벽 설정을 통한 서버 포트 차단 관리법
인터넷에 직접 연결된 모든 컴퓨터나 클라우드 가상 서버(VPC)는 호스트를 향해 열린 여러 개의 통신 통로를 통해 외부와 교신합니다. 이 통신 통로를 **'포트(Port)'**라고 부르며, 0번부터 65535번까지 총 65,536개가 존재합니다.
서버 인프라를 운영할 때 외부 침입자가 서버의 빈틈을 파악하기 위해 행하는 최초의 행위가 바로 **'포트 스캔(Port Scan)'**입니다. 본 가이드에서는 포트 스캔의 원리를 파악하고, 서버를 해킹의 위험으로부터 방어하는 방화벽 구축 방법을 살펴봅니다.
1. 포트 스캔(Port Scan)이란?
포트 스캔은 공격자가 대상 컴퓨터 시스템에 연속적으로 접속 요구 신호(SYN packet)를 발송하여, 어떤 포트가 활성화(Open)되어 있으며 어떤 서비스가 실행 중인지 판별해 내는 진단 기법입니다.
공격자는 열려 있는 특정 포트와 그 뒤에서 기동되는 프로그램(예: SSH 서버, 웹서버, 데이터베이스 서버)의 버전 취약점 정보를 수집하여 무작위 비밀번호 대입 공격(Brute Force)이나 침투 익스플로잇 코드를 적용시킵니다.
2. 차단 대상 보안 주의 포트 목록
대부분의 서버 해킹 위협은 알려진 기본 포트(Well-Known Ports)를 노출해 놓음으로써 발생합니다. 특히 다음 포트들은 방화벽 규칙을 적용해 엄격히 통제해야 합니다.
- 포트 21 (FTP): 전송 정보가 완전 비암호화로 패킷 캡처 유출에 취약합니다. 가급적 SFTP(22번 보안 포트)로 우회하고, 21번 포트는 폐쇄해야 합니다.
- 포트 22 (SSH): 리눅스 서버 제어 권한의 핵심 통로입니다. 포트 스캐너가 가장 집중 타격하는 타겟이므로, 포트 번호를 기본 22번이 아닌 임의의 포트(예: 20222번)로 전환하고 방화벽을 적용해 승인된 IP만 접근을 허용해야 합니다.
- 포트 23 (Telnet): 명령어와 비밀번호가 평문으로 노출되는 대표적 레거시 규격입니다. 현재는 완전 차단이 강제됩니다.
- 포트 3389 (RDP): 윈도우 서버 원격 제어 도구입니다. 외부에 노출되면 수천 번의 로그인 무작위 폭격이 쏟아져 시스템 가용성이 저하될 위험이 매우 큽니다.
3. 리눅스 방화벽(UFW)을 활용한 포트 통제 실습
가장 널리 쓰이는 우분투(Ubuntu) 환경의 기본 방화벽 도구인 **UFW (Uncomplicated Firewall)**를 사용하여 특정 포트를 즉시 차단 및 보호하는 실무 가이드라인입니다.
기본 방화벽 규칙 활성화
기본적으로 들어오는 모든 신호(Incoming)는 차단하고, 밖으로 나가는 신호(Outgoing)는 허용하도록 기본 정책을 수립합니다.
sudo ufw default deny incoming
sudo ufw default allow outgoing
필수 서비스 포트만 선별 허용
원격 터미널 접속 및 보안 웹서버를 위해 22번(SSH)과 443번(HTTPS) 포트만 인바운드를 수동으로 오픈해 줍니다.
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
방화벽 가동 개시
설정한 정책을 메모리에 올려 가동을 지시합니다.
sudo ufw enable
4. 주기적인 포트 진단과 예방책
인프라 환경은 프로그램 설치나 Docker 컨테이너 생성 도중 자동으로 방화벽 정책이 임시 우회 변경(Docker iptables bypass)되며 보안 틈새가 발생하는 경우가 매우 흔합니다.
따라서, 본 웹마스터 포털에서 제공하는 **포트 오픈 체크기**를 주기적으로 사용하여 내 서버의 취약 포트들이 외부에 어처구니없이 누출되어 방치되고 있지는 않은지 크로스 점검해 보시는 습관이 매우 중요합니다.