💡nmap이란?
서버의 특정 포트가 열려 있는지 확인하고 싶을 때, 가장 널리 사용되는 도구 중 하나가 바로 nmap(Network Mapper) 이다.
nmap은 네트워크 스캔, 보안 취약점 탐지, 서비스 확인 등을 위한 강력한 오픈소스 도구다.
🛡️ 사전 주의사항
nmap은 유용한 도구지만, 허가 없이 타인의 서버나 네트워크를 스캔하는 것은 법적 문제가 될 수 도 있다고 한다(?)
- 대한민국: 정보통신망법 제48조(침입행위 금지)
- 해외: 미국의 CFAA(Computer Fraud and Abuse Act) 등 관련법
🔧 1. nmap 설치 방법
우분투 계열 리눅스에서는 다음 명령어로 간단히 설치할 수 있다.
sudo apt-get update
sudo apt-get install nmap
🔍 2. 기본 포트 스캔 사용법
nmap -p 20022 172.3.2.10
위 명령어는 172.3.2.10 ip 주소에 20022번 포트가 개방되어있는지 확인는 명령어다.
결과는 아래와 같이 나타날 수 있는데
✅ 결과 예시
Starting Nmap 7.93 ( https://nmap.org )
Nmap scan report for 172.3.2.10
Host is up (0.00031s latency).
PORT STATE SERVICE
20022/tcp open ssh
🔎3. 주요 상태 코드 설명
| 상태 | 의미 |
| open | 포트가 열려 있고 서비스가 응답 중 |
| closed | 포트는 열려 있지 않지만 대상 시스템은 응답함 |
| filtered | 방화벽 등의 이유로 상태를 판별할 수 없음 |
| unfiltered | 포트는 열려 있지 않지만 필터링도 되지 않음 |
| `open | filtered` |
| `closed | filtered` |
🧠 4. NSE 스크립트 기능 (--script)
nmap에는 **NSE (Nmap Scripting Engine)**이라는 고급 기능이 내장되어 있어,
취약점 분석, 인증 우회, 방화벽 탐지 등을 자동화할 수 있습니다.
기본 사용 예시
nmap --script=default -p 22 172.3.2.10
default 스크립트는 서비스 감지, 운영체제 추정, 트레이서트 등 기본 분석을 자동 실행한다.
취약점 스캔 예시
nmap --script=vuln 172.3.2.10
- vuln 스크립트는 공개된 CVE 기반 취약점을 탐지한다.
- 테스트 환경 외에는 주의하여 사용해야 한다.
✅ vuln 스크립트란?
nmap --script=vuln은 Nmap Scripting Engine(NSE)이 제공하는 보안 취약점 탐지용 스크립트 모음이다.
즉, 대상 서버나 시스템에 대해 이미 알려진 보안 취약점이 존재하는지 자동으로 확인해주는 기능이다.
💠쉽게 말하면?
- 마치 백신 프로그램이 컴퓨터의 악성코드를 검사하듯이,
nmap --script=vuln은 서버의 열린 포트를 검사하여, 그 포트에서 돌아가는 서비스가
해커에게 뚫린 적이 있는지(CVE 취약점) 확인해준다.
💠 어떤 걸 체크하나?
--script=vuln은 아래와 같은 **공개된 취약점 데이터베이스(CVE, Exploit-DB 등)**를 기반으로,
포트에 따라 취약점 존재 여부를 알려준다.
예를 들어:
- SSH 버전이 취약한 OpenSSH 7.2일 경우:
- "이 버전은 CVE-2016-10012 취약점이 있으니 주의하세요" 라고 출력
- SMB(445번 포트)가 열려 있고, Windows 7이라면:
- "EternalBlue(CVE-2017-0144)에 취약할 수 있음"이라고 알려줌
💠사용 예시
nmap --script=vuln -p 22,80,443 192.168.0.10
🔍 결과 예시
PORT STATE SERVICE
22/tcp open ssh
|_sshv1: Server supports SSHv1
|_cve-2016-0777: Vulnerable to OpenSSH client information leak
80/tcp open http
| http-vuln-cve2014-3704:
| VULNERABLE:
| Drupal < 7.32 SQL injection
| State: VULNERABLE
| IDs: CVE:CVE-2014-3704
| Risk factor: High
결과는 포트별로 어떤 취약점이 있는지, **취약점 ID(CVE)**와 함께 출력된다.
⚠️ 주의할 점
| 오탐 가능성 | 단순 배너 정보만으로 판단하기 때문에, 실제 취약하지 않을 수도 있음 |
| 과탐 방지 안됨 | 서비스가 수정된 상태라도 버전이 같으면 여전히 취약하다고 나올 수 있음 |
| 침해될 수도 있음 | 일부 스크립트는 서버에 영향을 줄 수 있으므로 실무 시스템에서는 조심해서 사용 |
| 관리자 권한 필요 | 일부 포트(예: 135, 139, 445)는 sudo 권한이 있어야 탐지 가능 |
✅ 요약 정리
| 정의 | nmap의 취약점 탐지 스크립트 모음 (--script=vuln) |
| 기능 | 열린 포트의 서비스가 공개된 보안 취약점에 노출됐는지 검사 |
| 장점 | 빠르게 취약점 존재 여부를 확인 가능, 사전 보안 진단에 유용 |
| 단점 | 오탐/과탐 가능성, 실서비스 환경에서는 사용 주의 필요 |
✅ 결론
nmap --script=vuln은 보안 전문가, 시스템 관리자, DevSecOps 담당자가
서버의 기본적인 보안 점검을 자동화하는 데 매우 유용한 도구이다.
다만 정밀한 진단은 추가적인 취약점 분석 도구나 수동 검증과 함께 사용하는 것이 이상적이다.
'네트워크' 카테고리의 다른 글
| 이더넷(Ethernet)이란 무엇인가? (0) | 2023.06.07 |
|---|---|
| POST와 PUT 메소드의 차이점 (0) | 2023.04.13 |
| Open SSL? TLS? 무슨 차이일까? (0) | 2023.01.28 |
| WebSocket vs WEBRTC 개념정리 (0) | 2022.08.27 |
| TCP/IP란 무엇인가? (0) | 2021.12.13 |