리눅스에서 특정 서버 포트 확인 : nmap 활용 가이드

💡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