nmap 을 사용한 열린 TCP 및 UDP 포트 스캔
이 단계에서는 nmap 도구를 사용하여 자신의 시스템에서 열려 있는 네트워크 포트를 스캔하는 방법을 배웁니다. 네트워크 포트는 운영 체제 내 통신의 종착점입니다. 프로그램이 네트워크로부터 정보를 받으려 할 때 특정 포트에서 "리스닝 (listening)" 상태가 됩니다. 열린 포트를 스캔하는 것은 각 포트가 공격자의 잠재적인 침입 경로가 될 수 있으므로, 머신의 보안 상태를 평가하는 가장 기본적인 첫 단계입니다.
먼저 기본 환경에 포함되어 있지 않은 nmap을 설치해야 합니다. 새로운 소프트웨어를 설치하기 전에 패키지 목록을 업데이트하는 것이 좋습니다.
다음 명령을 실행하여 패키지 목록을 업데이트하십시오.
sudo apt-get update
이제 다음 명령으로 nmap을 설치합니다.
sudo apt-get install -y nmap
nmap과 관련 의존성 패키지들이 설치되는 과정이 출력됩니다.
다음으로 nmap이 스캔할 대상을 지정하기 위해 머신의 IP 주소를 확인해야 합니다. ip 명령을 사용하여 확인할 수 있습니다.
ip addr show
eth0 또는 ens33과 같은 항목을 찾으십시오. IP 주소는 inet 옆에 표시됩니다. 172.16.50.13/24와 같은 형식으로 나타납니다.
출력 결과에서 IP 주소를 식별하는 방법:
state UP 상태인 인터페이스를 찾습니다 (보통 eth0).
inet으로 시작하는 줄을 찾습니다 (inet6 제외).
/ 앞부분의 IP 주소만 가져옵니다 (예: inet 172.16.50.13/24라면 IP 주소는 172.16.50.13입니다).
- IP 가
127.0.0.1인 루프백 인터페이스 (lo) 는 무시합니다.
이 실습의 나머지 과정에서는 실제 IP 주소 대신 <your_IP_address>라는 자리 표시자를 사용합니다.
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:16:3e:04:c3:1d brd ff:ff:ff:ff:ff:ff
altname enp0s5
altname ens5
inet 172.16.50.13/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
valid_lft 1892159940sec preferred_lft 1892159940sec
inet6 fe80::216:3eff:fe04:c31d/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:1d:45:49:f8 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
이제 첫 번째 스캔을 수행할 준비가 되었습니다. 먼저 열려 있는 TCP(Transmission Control Protocol) 포트를 스캔해 보겠습니다. TCP 는 SSH(22 번 포트) 나 HTTP(80 번 포트) 와 같은 많은 일반적인 서비스에서 사용하는 연결 지향형 프로토콜입니다. nmap의 -sT 옵션은 TCP 연결 스캔을 수행합니다.
중요: <your_IP_address> 부분을 이전 단계에서 확인한 실제 IP 로 바꾸십시오. 예를 들어 IP 가 172.16.50.13이라면 명령은 nmap -sT 172.16.50.13이 됩니다.
확인한 IP 를 넣어 명령을 실행하십시오.
nmap -sT <your_IP_address>
출력 결과에 "open" 상태인 포트 목록이 표시됩니다. 시스템에는 기본적으로 SSH 포트 (22) 가 열려 있을 것이며, 다른 포트에서 추가 서비스가 실행 중일 수도 있습니다.
Starting Nmap 7.80 ( https://nmap.org ) at 2025-07-01 14:08 CST
Nmap scan report for iZrj93qpoj98oqswu96cqfZ (172.16.50.13)
Host is up (0.00013s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
3000/tcp open ppp
3001/tcp open nessus
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
다음으로 UDP(User Datagram Protocol) 포트를 스캔해 보겠습니다. UDP 는 DNS(53 번 포트) 나 DHCP(67/68 번 포트) 와 같은 서비스에 사용되는 비연결형 프로토콜입니다. UDP 스캔은 TCP 스캔보다 느리고 신뢰성이 떨어질 수 있습니다. sudo를 사용하면 UDP 스캔에서 더 정확한 결과를 얻을 수 있습니다. -sU 옵션은 UDP 스캔을 수행하도록 지정합니다.
주의: <your_IP_address>를 실제 IP 주소로 바꾸는 것을 잊지 마십시오.
IP 를 입력하고 명령을 실행합니다.
sudo nmap -sU <your_IP_address>
출력 결과에 포트 상태가 open|filtered로 표시될 수 있습니다. 이는 nmap이 해당 포트가 열려 있는지, 아니면 방화벽이 스캔을 차단하고 있는지 명확히 판단할 수 없음을 의미합니다. 이는 UDP 스캔에서 흔히 나타나는 결과입니다.
Starting Nmap 7.80 ( https://nmap.org ) at 2025-07-01 14:09 CST
Nmap scan report for iZrj93qpoj98oqswu96cqfZ (172.16.50.13)
Host is up (0.0000060s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
68/udp open|filtered dhcpc
5353/udp open|filtered zeroconf
Nmap done: 1 IP address (1 host up) scanned in 1.29 seconds
이 스캔들을 완료함으로써 머신에서 네트워크 연결을 기다리고 있는 서비스들을 성공적으로 식별했습니다.