강좌
클라우드/리눅스에 관한 강좌입니다.
보안 분류

취약성 점검 프로그램 nessus

작성자 정보

  • 구돌 작성
  • 작성일

컨텐츠 정보

본문

취약성 점검 프로그램 nessus

 

하루에도 몇 건씩의 보안 취약성이 계속 발견되고 있기 때문에 아무리 방화벽을 설치하고 침입탐지시스템을 운영한다 하더라도 자신도 모르는 사이 여러 보안 취약성에 노출될 수 있다.

 

또한 설정상의 오류로 인하여 예상치 못한 취약성에 노출될 수도 있다.

 

이렇듯이 현재 운영하고 있는 시스템이 어떠한 취약성을 가지고 있는지 점검하여야 할 필요성이 있는데, 이를 위해서는 별도의 취약성 점검 소프트웨어를 이용하는 것이 좋다.

 

이러한 취약성 점검 프로그램은 특정한 기능만을 수행하는 프로그램(이를테면 웹 서버의 취약성 등)도 있고 통합적인 취약성을 점검하는 프로그램도 있으며, 무료로 사용이 가능한 프로그램에서부터 유료로 구입해야 하는 프로그램까지 매우 많은 종류의 관련 프로그램이 존재한다.

 

이 중에서 단연 돋보이는, 어떻게 보면 표준이라고까지 할 수 있는 프로그램이 바로 nessus이다.

 

1998년부터 개발되기 시작한 nessus는 무료로 사용할 수 있으면서도 2만 여개 이상의 취약성 정보를 가지고 있으며 빠른 업데이트와 GUI 등 상용 수준의 강력한 기능을 제공하고 있다.

 

더군다나 직관적인 인터페이스로 초보자도 어렵지 않게 사용이 가능한데, 1998년 프로젝트를 시작한 이래 전 세계적으로 75,000여 이상의 조직에서 사용 중이며 매일 2,000회 이상 다운로드 할 정도로 대중적으로 사용되고 있는데, 2002Tenable이라는 보안 업체에서 인수 후 성능과 기능이 대폭 개선되었다.

 

nessus는 다음과 같은 특징이 있다.

 

 

* 사용이 자유롭고 플러그인 업데이트 등이 쉽다.

 

클라이언트에서 GUI 형태로 모든 취약성 점검 설정과 아울러 그 결과를 알 수 있어

초보자도 쉽게 사용이 가능하다.

 

취약점 결과에 대해서는 CVECERT, bugtraq 등의 링크도 함께 제공되고 있다.

 

 

 

* 매일 매일의 업데이트

 

보안 툴의 가장 중요한 항목 중 하나는 단연 취약성DB에 대한 보유 규모 및 업데이트 속 도일 것이다.

 

그런 면에서 nessus2만 여개의 취약성 DB를 확보하고 있으며 또한 매

일 취약성 DB가 업데이트되며 설치 후에는 nessus-update-plugin이라는 명령어를 통해 자동 업데이트 할 수 있다.

 

다만 라이센스 정책이 다소 변경되어 상용 라이센스인 Direct Feed($1200/)에 비해 홈페이지에서 무료 등록 후 사용이 가능한 Registered Feed 경우 취약성 DB가 일주일 후에 업데이트 된다.

 

 

 

* 모듈화된 서버/클라이언트 구조로 작동한다.

 

 

 

nessus는 특이하게 서버/클라이언트 구조로 작동하는데, 서버에는 nessus 데몬과 각종 취약성 점검 플러그인등이 설치되며 클라이언트는 단순히 서버에 접속하여 취약성을 점검

하고 결과를 살펴볼 수 있는 인터페이스를 제공한다.

 

데몬은 항상 리눅스등 유닉스 계열 에 설치되어야 하며 클라이언트는 유닉스 계열이나 윈도우즈에 설치할 수 있다.

 

여기에서 일반적인 방법으로서 nessus 데몬은 리눅스에 설치하고, 클라이언트 프로그램은 윈도우 즈에 설치하는 방법을 알아보도록 하겠다.

 

 

 

* 스마트한 취약성 점검

 

nessusNASL (Nessus Attack Scripting Language) 이라는 쉬운 언어를 제공하여 룰 을 쉽고 빠르게 이해하거나 수정할 수 있다.

 

또한 대부분의 무료 프로그램이 한 번에 한 대의 서버만 취약성 점검할 수 있는데 반해 nessus는 여러 대의 서버에 대한 취약성 점

검을 동시에 수행할 수 있어 매우 효율적이며 이를테면 80/tcp가 아닌 8000번에서 웹서

버가 서비스 중이거나 80/tcp1000/tcp번에 동시에 웹서버가 작동중이어도 각각 인식

하여 해당 웹서버의 취약성을 점검하게 된다.

 

 

 

* HTML등 여러 형태로 결과를 리포트 해 준다.

 

 

 

리눅스뿐만 아니라 유닉스, Windows 및 라우터 등 모든 OS 및 장비에 대한 각종 취약 성 정보뿐만 아니라 해결방안 등의 정보를 제공하며 취약성 점검 결과는 txthtml 또는 pdf등의 형식으로 자유롭게 저장할 수 있다.

 

 

 66c5a2160704502aa92738a9caad5ae6_1658887717_0591.png

 

[그림] nessus 작동방식

 

 

 

9.5.1 다운로드 및 설치

 

nessus는 서버 클라이언트 구조로 작동하므로 서버 프로그램과 클라이언트 프로그램을 각각 다운로드하여 설치해야 한다.

 

 

66c5a2160704502aa92738a9caad5ae6_1658887731_5917.png
 

[그림] nessus 홈페이지(http://www.nessus.org/)

 

먼저 리눅스 서버에 데몬 프로그램을 설치해보도록 하자. 2.x 등 이전 버전의 경우 소스파일로 제공하였지만 대폭적인 성능 개선이 진행된 최신의 데몬은 소스대신 rpm 으로 제공하고 있으므로 아래와 같이 최신 버전을 받아 설치하도록 하자.

# rpm -Uvh Nessus-3.x.x-es5.i386.rpm

이렇게 설치를 끝낸 후 nessus 데몬에 접속할 유저를 생성할 차례이다.

 

이는 차후에 윈도우즈 기반의 nessus 클라이언트에서 nessus 데몬에 접속하고자 할 때 필요하다.

 

다음은 nessus-adduser를 실행한 예이다.

 

 

# /opt/nessus/sbin/nessus-adduser

 

Login : testuser // 로그인유저를 입력한다.

 

 

Authentication (pass/cert) [pass]: // 서버에서 인증할 방법을 설정한다.

 

기본적 // 으로는 pass를 사용한다.

 

 

Login password : userpass // 유저에 대한 암호를 입력한다.

 

 

 

그 다음으로는 nessus가 스캔하도록 허용하거나 거부할 IP 대역를 입력한다.

 

, 아래와 같은 경우 192.168.1.0/24192.168.3.0/24 대역으로의 취약성 점검을 허용하며 이외의 주소에 대해서는 기본적으로 스캔을 허용하지 않도록 한다.

 

이는 nessus의 오남용을 막기 위한 설정으로 형식은 아래와 같다. 즉 허용하거나 거부할 IP 또는 IP 대역을 지정한 후 마지막 줄에 기본정책을 정의하면 되는 것이다.

 

설정을 완료 후에는 Ctrl+D를 입력하면 된다.

 

 

 

accept|deny ip/mask

default accept|deny

 

만약 모든 IP대역에 대해 취약성 점검을 허용하려면(아마 대부분 이렇게 사용할 것이다.

 

) 별도 설정 없이 Ctrl+D를 입력하면 된다.

 

 

Enter the rules for this user, and hit ctrl-D once you are done :

(the user can have an empty rules set)

accept 192.168.1.0/24

accept 192.168.3.0/24

default deny

 

Login : testuser

Password : userpass

DN :

Rules :

accept 192.168.1.0/24

accept 192.168.3.0/24

default deny

 

Is that ok ? (y/n) [y] y // 입력한 내용이 맞는지 확인한다.

 

 

user added.

 

위와 같이 testuser라는 로그인 유저를 생성하였을 때 /opt/nessus/var/nessus/users/ 디렉토리에 각 유저마다 별도의 디렉토리가 생성된다.

 

 

 

만약 추가한 유저를 삭제하려면 다음과 같이 실행하면 된다.

 

 

 

 

# /opt/nessus/sbin/nessus-rmuser username

 

????[유용한 팁]

만약 클라이언트와 서버간의 트래픽을 암호화하고자 한다면 nessus-mkcert를 이용할 수 있다.

 

 

 

다음은 데몬을 띄우기 전에 Nessus plugin activation code를 등록할 차례인데, 홈페이지의 “register” 메뉴를 클릭하여 e-mail 주소를 입력하면 잠시 후 아래와 같은 메일을 받게 될 것이다.

 

 

Your activation code for the Nessus plugin feed is 2AC5-5F66-4ED6-C90D-2524

 

On Linux, to activate your account, simply execute the following command :

/opt/nessus/bin/nessus-fetch --register A468-4EF5-6743-2559-9126

 

위의 내용대로 아래와 같이 실행하여 등록을 하도록 한다.

 

# /opt/nessus/bin/nessus-fetch --register A468-4EF5-6743-2559-9126

Your activation code has been registered properly - thank you.

Now fetching the newest plugin set from plugins.nessus.org...

Your Nessus installation is now up-to-date.

If auto_update is set to 'yes' in nessusd.conf, Nessus will

update the plugins by itself.

 

이후에는 최신의 룰 적용을 위해 cron을 통해 수동으로 매일 1회 정도

/opt/nessus/sbin/nessus-update-plugins을 실행하여 plugin을 업데이트해도 되고, 또는 주 설정 파일인 /opt/nessus/etc/nessus/nessusd.conf 파일에 “auto_update = yes”로 되어 있다면 매일 자동으로 업데이트 하게 된다.

 

 

이후 데몬을 실행하기 위해 service nessusd start /etc/rc.d/init.d/nessusd start를 실행하거나 아래와 같이 직접

“/opt/nessus/sbin/nessusd -D”를 실행해도 된다.

 

 

 

[root@nessus nessus]# /opt/nessus/sbin/nessusd -D

nessusd (Nessus) 3.2.0. for Linux

(C) 1998 - 2008 Tenable Network Security, Inc.

Processing the Nessus plugins...

[##################################################]

All plugins loaded

 

이후 netstat -lnp로 확인해 보면 nessusd1241/tcp에서 리슨하고 있는 것을 알 수 있다.

 

클라이언트에서 취약성 점검을 위해서는 이 포트에 접속하게 되므로 방화벽이 설치되어 있다면 1241/tcp를 허용하여야 한다.

 

만약 기본 포트인 1241대신 다른 포트를 리슨하고자 한다면 -p 옵션을 주어 실행하면 된다.

 

 

 

nessus의 경우 경로가 달라서 man 페이지가 정상적으로 보이지 않을 수 있다.

 

이를테면 nessus-adduser에 대한 man 페이지를 보려면 아래와 같이 실행해 주어야 한다.

 

 

# export MANPATH=/opt/nessus/man

# man nessus-adduser

 

 

9.5.2 nessus 클라이언트 실행

 

nessus의 클라이언트 프로그램은 Tenable에서 제공하는 상용 버전인 NessusClient가 있는데, 이로 인하여 아쉽게도 이전부터 제공해왔던 nessuswx의 개발이 중단되었다. 현재

http://nessuswx.nessus.org/에서 마지막 버전인 1.4.5 버전을 다운로드 받아 윈도우즈 PC에 설치하면 된다.

 

 

설치 후 nessuswx를 실행하면 초기에 데이터베이스 디렉토리 경로 등을 묻는데, 그대로 엔터를 입력하면 된다.

 

 

그 다음 제일 먼저 하여야 할 일은 nessus 데몬에 접속하는 것인데, 이를 위해 [Communications] -> [Connect]를 실행한다.

 

 

Name에는 nessusd가 설치된 IP 및 포트번호를 지정하고, 인증 Login Password에는 앞에서 nessus-adduser로 등록한 아이디/암호를 입력한 후 연결하면 된다.

 

 

 

66c5a2160704502aa92738a9caad5ae6_1658887752_0585.png
 

[그림] 접속 정보

 

다음으로 [Session] -> [New]를 선택한 후 호스트이름이나 IPSession name에 적당한 이름을 지정하고, 생성된 아이콘에서 오른쪽 마우스를 클릭 후 properties를 선택하여 각종 설정을 할 차례이다.

 

설정할 메뉴는 아래와 같다.

 

Targets

Add를 선택하여 스캔할 IPIP 대역을 지정한다.

 

 

Port scan

스캔할 포트대역 및 스캔방식을 지정한다.

 

오픈된 포트에 관련된 취약성만 점검하므로 대상을 잘 선정하여야 한다.

 

만약 모든 포트를 스캔하려면 Specific를 선택한 후 1-65535를 지정하면 된다.

 

 

스캔 방식으로는 주로 SYN 스캔이나 tcp connect 스캔을 사용한다.

 

 

 

Plugins

어떤 취약성에 대해 스캔할 것인지 지정할 수 있는데, “Use session-specific plugin set” 을 선택 후 Select plugins를 클릭하면 된다.

 

 

새로운 Plugin list에서 Enable All을 선택하면 모든 항목에 대해 취약성 스캔을 하게 되고, 서비스거부(DoS)와 관련된 항목을 제외하고 스캔하려면 Enable Non-DoS를 선택하면 된다.

 

 

실제 몇몇 시스템의 경우 DoS 취약성 스캔을 하면 서비스가 다운되는 등 서비스에 직접적인 영향을 주는 경우가 있기 때문에 주의하여야 한다.

 

 

 

만약 특정한 부분, 이를테면 Windows에 대해서만 스캔하거나 하지 않으려면 좌측의 항목을 선택한 후 Enable this familyDisable this family를 선택하면 되고 부분 내 특정 항목에 대한 여부는 더블클릭을 하면 된다.

 

 

 

66c5a2160704502aa92738a9caad5ae6_1658887767_4598.png
 

[그림] plugin 목록

 

설정이 완료된 후에는 해당 아이콘을 더블 클릭하거나 오른쪽마우스를 클릭 후 Execute를 선택하면 스캔을 시작한다.

 

만약 스캔하려는 목적지 대상이 허용된 목록이 아닐 경우에는 아래와 같은 경고창이 나오게 되므로, nessus-adduser를 실행할 때 IP 대역의 허용여부를 확인해 보기 바란다.

 

 

66c5a2160704502aa92738a9caad5ae6_1658887782_8442.png
 

[그림] 스캔 대역이 거부되었을 때 경고창

 

만약 에러가 없을 경우에는 아래와 같이 취약성 점검을 시작한다.

 

 

66c5a2160704502aa92738a9caad5ae6_1658887796_3217.png
 

[그림] 취약성 점검 화면

 

아래는 취약성 점검을 완료한 후 보이는 결과화면이다.

 

여기에서 view를 클릭하면 취약성 점검 결과를 바로 확인할 수 있으며 Report를 클릭하면 취약성 결과를 txthtml, pdf등 다양한 방식으로 저장할 수 있다.

 

 

66c5a2160704502aa92738a9caad5ae6_1658887811_0985.png
 

[그림] 취약성 완료 화면

 

아래는 View를 클릭하였을 때의 취약성 결과화면이다.

 

좌측에는 취약성 목록이 보이고 해당하는 목록을 클릭하면 우측에서 상세한 내용을 확인할 수 있다.

 

nessus의 스캔 결과는 상당히 신뢰할 수 있지만 오탐도 없지 않아 있기 때문에 취약성 스캔 결과를 100% 확신하지는 말기 바란다.

 

 

 

66c5a2160704502aa92738a9caad5ae6_1658887824_0517.png
 

[그림] 취약성 점검 결과 화면

 

nessus에는 다양한 기능이 계속적으로 추가되고 있는데, 특히 Windows Update처럼 ssh를 통해 원격지 유닉스 시스템에 로그인하여 시스템에서 어떤 패치가 필요한지 여부를 스캔하는 기능도 있다.

 

이 기능에 대해서는 아래의 URL을 참고하기 바란다.

 

 

http://www.nessus.org/documentation/index.php?doc=ssh

 

 

 

9.5.3 nessusd 옵션 설정

 

기본적으로 제공하는 옵션과 기능만을 사용해도 불편 없이 nessus를 사용할 수 있지만 자주 사용한다면 좀 더 확장된 기능을 이용하고 싶어 할 것이다.

 

따라서 nessusd에서 제공하는 옵션에 대해 좀 더 살펴보도록 하자.

 

* nessusd 옵션 설정

 

이번에는 nessus 데몬인 nessusd가 제공하는 옵션에 대해 알아보도록 하자.

 

-c

nessus의 설정파일은 기본적으로/opt/nessus/etc/nessus/nessusd.conf에 설치되는데, 다른 경로의 설정파일을 참조하고자 할 때 지정할 수 있다.

 

 

-a

nessusd를 실행하면 기본적으로 인터페이스의 모든 IP에서 리슨하게 되는데, 특정한 IP에 대해서만 리슨하고자 할 때 사용할 수 있다.

 

이를테면 공인과 사설 IP가 함께 설정되어 있는 시스템에서 사설에서만 리슨하고자 한다면 “nessusd -a 192.168.1.1 -D"와 같이 실행하면 될 것이다.

 

 

-p

만약 1241/tcp외 다른 포트에서 리슨하고자 한다면 -p 옵션을 이용하면 된다.

 

 

 

 

그리고 nessus의 설정파일은 /opt/nessus/etc/nessus/nessusd.conf 인데 제공하는 몇 가지 옵션에 대해 간단히 알아보자.

 

plugins_folder = /opt/nessus/lib/nessus/plugins

 

nessus의 각종 플러그인이 존재하는 디렉토리이다.

 

이 디렉토리 하위에는 많은 nasl 스크립트 파일이 존재하는데, 스크립트이므로 원하는 대로 적절히 수정할 수도 있다.

 

 

max_hosts = 40

 

동시에 취약성 스캔을 허용할 호스트의 개수이다.

 

기본 값을 그대로 두어도 무방하다.  

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 전체 회원수 59,499 명
  • 전체 게시물 31,134 개
  • 전체 댓글수 11,895 개