Nmap(Network Mapper)은 네트워크 탐색 및 보안 감사 목적으로 사용되는 오픈 소스 네트워크 스캐너입니다. 네트워크에서 연결된 호스트, 사용 중인 포트, 서비스 버전 및 운영 체제 등의 정보를 수집하는 데 매우 유용하며, 주로 보안 전문가와 시스템 관리자가 네트워크 보안 문제를 탐지하거나 네트워크 자원을 관리하기 위해 사용합니다.
Nmap의 주요 기능:
- 포트 스캔:
- 네트워크에 연결된 특정 호스트의 열려 있는 **포트(서비스)**를 스캔하여, 해당 포트가 어떤 상태(열림, 닫힘, 필터링)인지 확인할 수 있습니다.
- 호스트 탐색:
- 네트워크 상에서 활성화된 장치 또는 호스트를 탐색합니다. 이를 통해 네트워크에 어떤 기기가 연결되어 있는지 알 수 있습니다.
- 서비스 및 버전 탐지:
- 특정 포트에서 실행 중인 서비스의 종류와 버전을 탐지할 수 있습니다. 예를 들어, HTTP 서버가 Apache인지 Nginx인지, 그 버전이 무엇인지를 확인할 수 있습니다.
- 운영 체제 탐지:
- 원격 호스트의 운영 체제를 추측할 수 있는 기능도 있습니다. TCP/IP 패킷의 특성을 기반으로 운영 체제(예: Windows, Linux, macOS)를 확인합니다.
- 네트워크 매핑:
- 네트워크의 구조를 시각적으로 분석하고, 네트워크 상의 장치들 간의 관계를 파악할 수 있습니다.
- 보안 감사 및 취약점 스캐닝:
- Nmap은 시스템의 보안 상태를 분석하고, 취약한 네트워크 구성 요소를 탐지하는 데 널리 사용됩니다. 이를 통해 네트워크가 보안 위협에 노출될 수 있는 부분을 확인하고, 이에 대응할 수 있습니다.
- NSE (Nmap Scripting Engine):
- Nmap에는 다양한 사용자 스크립트를 실행할 수 있는 **NSE(Nmap Scripting Engine)**가 포함되어 있습니다. 이를 통해 네트워크 서비스의 취약점을 더 깊이 검사하고, 복잡한 보안 감사 작업을 자동화할 수 있습니다.
- 방화벽 우회 및 고급 스캔:
- 방화벽이나 필터링된 네트워크 환경에서도 효과적으로 스캔할 수 있도록 다양한 고급 스캔 기술(IP 프래그먼트, 스텔스 스캔 등)을 제공합니다.
Nmap의 주요 사용 사례:
- 보안 감사: 시스템 및 네트워크의 보안 취약점을 탐지하는 데 사용됩니다.
- 네트워크 인벤토리: 네트워크에 연결된 장치 및 서버를 탐색하고, 해당 장치들의 운영 체제 및 서비스 정보를 수집할 수 있습니다.
- 보안 테스트: 침투 테스트에서 네트워크 취약점을 찾고 방화벽이나 침입 탐지 시스템의 설정을 평가하는 데 사용됩니다.
- 시스템 관리: 네트워크 관리자는 Nmap을 사용하여 서버 및 네트워크 장치의 상태를 모니터링하고 관리할 수 있습니다.
Nmap의 주요 명령어 예시:
- 단순 포트 스캔:
1 2 3 |
nmap 192.168.1.1 |
- 대상 IP 주소의 열려 있는 포트를 스캔합니다.
특정 포트 범위 스캔:
1 2 3 |
nmap -p 1-1000 192.168.1.1 |
- 대상 IP에서 포트 1~1000 범위의 포트를 스캔합니다.
서비스 및 버전 탐지:
1 2 3 |
nmap -sV 192.168.1.1 |
- 대상 IP에서 서비스 및 버전을 탐지합니다.
운영 체제 탐지:
1 2 3 |
nmap -O 192.168.1.1 |
- 대상 IP의 운영 체제를 탐지합니다.
Nmap 스크립트 엔진을 사용한 스캔:
nmap –script vuln 192.168.1.1
-
vuln
스크립트를 사용하여 대상 IP에서 취약점을 스캔합니다.
결론:
Nmap은 네트워크 및 보안 전문가들이 네트워크 탐색, 보안 감사, 취약점 분석 등을 수행하기 위해 사용하는 강력한 도구입니다. 오픈 소스이며, 다양한 기능과 확장성을 제공하기 때문에 시스템 및 네트워크 관리에서 매우 유용하게 사용됩니다.
최신 버전 설치 방법 –
1. Nmap 설치 확인
먼저, Nmap이 이미 설치되어 있는지 확인할 수 있습니다.
1 2 3 |
which nmap |
만약 아무 출력도 없으면, Nmap이 설치되지 않은 것입니다.
2. Nmap 설치
Nmap이 설치되어 있지 않다면, 패키지 관리자를 통해 설치할 수 있습니다.
1 2 3 |
sudo yum install nmap |
이 명령어로 공식 리포지토리에서 Nmap을 설치할 수 있습니다.
3. 소스에서 Nmap 설치
만약 공식 리포지토리의 Nmap 버전이 오래되어 최신 버전을 소스에서 직접 설치해야 한다면, 다음 절차를 따르세요.
(1) 이전 설치 파일 제거 (이미 설치 시)
1 2 3 |
sudo yum remove nmap |
(2) 필요한 도구 설치
Nmap을 소스에서 빌드하려면 컴파일에 필요한 패키지를 설치해야 합니다.
1 2 3 4 |
sudo yum groupinstall "Development Tools" sudo yum install openssl-devel |
(3) 최신 Nmap 소스 다운로드 및 설치
Nmap 소스 파일을 다운로드한 후 압축을 풀고, 컴파일하여 설치합니다.
- 다운로드
1 2 3 |
wget https://nmap.org/dist/nmap-7.94.tar.bz2 |
압축 해제
압축을 해제하려면 bzip2가 설치되어 있어야 합니다. 아직 설치하지 않았다면 아래 명령어로 설치합니다.
1 2 3 |
sudo yum install bzip2 |
압축 해제를 시도합니다.
1 2 3 4 |
tar -xjf nmap-7.94.tar.bz2 cd nmap-7.94 |
컴파일 및 설치
1 2 3 4 5 |
./configure make sudo make install |
이제 Nmap이 /usr/local/bin/nmap
에 설치됩니다.
(4) 경로 확인
Nmap이 설치된 경로를 확인합니다.
1 2 3 |
which nmap |
Nmap이 올바르게 설치되었다면, 설치된 경로가 출력됩니다.
5.오류 발생
1 2 3 4 5 6 |
which nmap /usr/local/bin/nmap 인데 실행시 -bash: /usr/bin/nmap: 그런 파일이나 디렉터리가 없습니다 |
which nmap
명령어가 /usr/local/bin/nmap
을 반환하고 있는데도 Nmap 실행 시 /usr/bin/nmap
경로에서 “그런 파일이나 디렉터리가 없습니다” 오류가 발생하는 이유는, 시스템이 nmap
을 /usr/local/bin/
경로에서 찾는 대신 /usr/bin/
경로에서 찾고 있기 때문입니다. 이는 환경 변수인 $PATH
와 관련이 있습니다.
문제 원인:
/usr/bin/nmap
경로에 Nmap이 없고,nmap
이/usr/local/bin/
에 설치된 상태에서 시스템이/usr/bin/
을 먼저 확인하기 때문에 발생하는 문제입니다.- 시스템의 PATH 환경 변수에 따라 실행 파일을 찾는 순서가 결정되는데, 현재 상황에서는
/usr/bin/
이/usr/local/bin/
보다 앞에 있을 수 있습니다.
해결 방법:
nmap
이 /usr/local/bin/
에 설치되어 있으므로, 해당 경로를 시스템이 인식하도록 하거나 /usr/bin/
에 심볼릭 링크를 만들어 해결할 수 있습니다.
1. 환경 변수 PATH 수정
/usr/local/bin/
경로가 $PATH
변수에 포함되어 있는지 확인하고, 없다면 추가합니다.
- 현재
$PATH
확인
1 2 3 |
echo $PATH |
/usr/local/bin
이 포함되어 있는지 확인합니다. 만약 포함되어 있지 않다면, 다음 명령을 사용하여 ~/.bashrc
파일에 추가할 수 있습니다.
~/.bashrc
파일 수정
1 2 3 |
nano ~/.bashrc |
파일의 끝에 다음 줄을 추가하여 /usr/local/bin
을 PATH에 포함시킵니다.
1 2 3 |
export PATH=/usr/local/bin:$PATH |
변경 사항 적용
다음 명령어로 변경 사항을 적용합니다.
1 2 3 |
source ~/.bashrc |
이제 nmap
명령어를 실행하면 /usr/bin/nmap
에서 실행됩니다.
요약:
- PATH 환경 변수 수정으로
/usr/local/bin/nmap
이 인식되도록 하거나, - 심볼릭 링크를 생성하여
/usr/bin/nmap
에서 실행되도록 하면 문제를 해결할 수 있습니다.
6. 컴파일 오류시
1 2 3 4 |
nse_openssl.h:8:24: fatal error: openssl/bn.h: 그런 파일이나 디렉터리가 없습니다 #include <openssl/bn.h> |
make
시 openssl/bn.h
파일을 찾을 수 없다는 오류는 OpenSSL 개발 라이브러리가 설치되지 않았기 때문에 발생하는 문제입니다. openssl/bn.h
는 OpenSSL 개발 헤더 파일 중 하나로, OpenSSL 라이브러리가 제대로 설치되어 있지 않거나, 개발 헤더 파일이 누락된 경우에 발생합니다.
이 문제를 해결하려면 OpenSSL 개발 패키지를 설치해야 합니다.
해결 방법: OpenSSL 개발 패키지 설치
- OpenSSL 개발 라이브러리 설치 CentOS에서는
openssl-devel
패키지가 필요합니다. 이 패키지에는 OpenSSL과 관련된 헤더 파일들이 포함되어 있어 소프트웨어 빌드 시 필요한 파일들을 제공합니다.다음 명령어로openssl-devel
패키지를 설치할 수 있습니다.
1 2 3 |
sudo yum install openssl-devel |
다시 빌드 시도 OpenSSL 개발 패키지를 설치한 후, 다시 빌드를 시도합니다.
1 2 3 |
make |
추가 확인 사항:
- 만약 다른 의존성이 필요한 경우, 해당 의존성 패키지도 설치해야 합니다.
- OpenSSL이 올바르게 설치되었는지 확인하려면 다음 명령어를 사용할 수 있습니다.
1 2 3 |
openssl version |
이 과정을 통해 openssl/bn.h
파일을 찾을 수 없다는 문제를 해결할 수 있으며, 빌드를 정상적으로 진행할 수 있을 것입니다.