본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

네트워크의 호스트와 열린 포트, 실행 중인 서비스를 탐지하는 포트 스캔 도구이다.

  • 서버 관리자가 자기 시스템에서 불필요하게 열린 포트를 점검할 때 사용한다. 허가받지 않은 시스템을 스캔하면 법적 문제가 될 수 있다.
  • 경로 : /usr/bin/nmap
  • 패키지 : nmap
# nmap [스캔 유형] [옵션] 대상
  • 대상은 호스트 이름, IP 주소, 네트워크(192.168.10.0/24), 범위(192.168.10.1-50)로 지정한다.
  • 포트를 지정하지 않으면 자주 쓰이는 TCP 포트 1,000개를 스캔한다.
  • -sS : TCP SYN 스캔. SYN만 보내고 연결을 완성하지 않는 스텔스 스캔이다. root 권한으로 실행할 때의 기본값이다.
  • -sT : TCP connect 스캔. 3-way 핸드셰이크를 완성한다. 일반 사용자로 실행할 때의 기본값이다.
  • -sU : UDP 스캔
  • -sF, -sN, -sX : FIN, Null(플래그 없음), Xmas(FIN·PSH·URG) 스캔. 닫힌 포트는 RST로 응답하고 열린 포트는 응답하지 않는 점을 이용한다.
  • -sA : ACK 스캔. 방화벽의 필터링 여부를 확인할 때 쓴다.
  • -sn : 포트 스캔 없이 호스트가 살아 있는지만 확인한다. (핑 스캔)
  • -Pn : 호스트 탐지(핑) 과정을 건너뛰고 모든 대상을 살아 있는 것으로 보고 스캔한다.
  • -p 포트 : 스캔할 포트를 지정한다. (예: -p 22, -p 1-1024, -p 22,80,443, -p- 는 전체 포트)
  • -F : 자주 쓰이는 100개 포트만 빠르게 스캔한다.
  • --top-ports 개수 : 가장 많이 쓰이는 포트를 지정한 개수만큼 스캔한다.
  • -sV : 열린 포트에서 동작하는 서비스의 이름과 버전을 탐지한다.
  • -O : 운영체제를 추정한다.
  • -A : 운영체제 탐지, 버전 탐지, 스크립트 스캔, traceroute를 모두 수행한다.
  • -T0 ~ -T5 : 스캔 속도(타이밍 템플릿)를 지정한다. 숫자가 클수록 빠르다. 기본값은 -T3이다.
  • -v : 진행 상황을 자세히 출력한다.
  • --open : 열린 포트만 출력한다.
  • -iL 파일 : 대상 목록을 파일에서 읽는다.
  • -oN 파일, -oX 파일, -oG 파일 : 결과를 일반, XML, grep용 형식으로 저장한다. -oA 이름은 세 형식을 모두 저장한다.
  • open : 포트에서 서비스가 연결을 받고 있다.
  • closed : 포트에 접근할 수 있지만 서비스가 없다.
  • filtered : 방화벽 등에 막혀 열림 여부를 판단할 수 없다.
  • unfiltered : 접근은 가능하지만 열림 여부는 판단할 수 없다. (ACK 스캔에서 나타남)
  • open|filtered, closed|filtered : 두 상태 중 어느 쪽인지 판단할 수 없다.
# 로컬 서버의 열린 TCP 포트를 확인한다.
# nmap localhost

# 서브넷에서 살아 있는 호스트만 찾는다.
# nmap -sn 192.168.10.0/24

# 특정 포트에 대해 SYN 스캔과 서비스 버전 탐지를 한다.
# nmap -sS -sV -p 22,80,443 192.168.10.20

# UDP 53번(DNS)과 123번(NTP) 포트를 스캔한다.
# nmap -sU -p 53,123 192.168.10.5

# 전체 TCP 포트를 스캔하고 결과를 파일로 저장한다.
# nmap -p- -oN scan_result.txt 192.168.10.20
  • 스캔 유형 옵션(-sS, -sT, -sU, -sF, -sN, -sX)과 각 방식의 특징을 구분하는 문제가 자주 나온다.
  • 포트 상태 open, closed, filtered의 의미를 묻는다.
  • 핑 스캔은 -sn, 운영체제 탐지는 -O, 버전 탐지는 -sV이다.