And Brain said,

Nessus, 사이버 보안 탐정의 수사 노트 본문

IT/보안

Nessus, 사이버 보안 탐정의 수사 노트

The Man 2025. 2. 18. 14:36
반응형

 

사이버 보안에서 취약점(Vulnerability)이란 시스템, 네트워크, 소프트웨어에서 공격자가 악용할 수 있는 보안 허점입니다. 보안의 세계에서 취약점(Vulnerability) 은 언제나 존재하기 마련입니다. 웹 취약점 스캐너는 여러분들이 겪을 수 있는 이러한 보안 결함을 자동으로 탐지하고 분석해주는 훌륭한 도구가 되줄 것입니다. 오늘은 이 중 하나인 Nessus에 대해서 다뤄보겠습니다.

 

 

1. Nessus ?


Nessus는 Tenable에서 개발한 보안 취약점 스캐너(Vulnerability Scanner) 로, 네트워크와 시스템의 보안 취약점을 탐색하고 분석하는 역할을 합니다. 현재 프로젝트에서 사용하고 개발 중인 시스템의 경우에는 Nessus Professional 이지만, Tenable에서는 최대 16개 IP를 스캔할 수 있는 Nessus Essentials를 무료로 제공하고 있습니다.

 

지원 플랫폼: Windows, Linux, macOS


2. Nessus 설치 및 초기 설정 (macOS 기준)

1) Nessus 다운로드 및 설치

 

Tenable 공식 사이트에서 macOS용 Nessus 다운로드

https://www.tenable.com/downloads/nessus?_gl=1*q34eeb*_gcl_au*NDEzMzQyMDM0LjE3Mzg1NDQ2ODMuMjY4MDQ3MTc5LjE3Mzg2NDA3MTAuMTczODY0MDczOQ..*_ga*MTE1NjcyOTA0Ny4xNzM4NTQ0Njgz*_ga_HSJ1XWV6ND*MTczOTc3NTQ4OS42LjAuMTczOTc3NTQ4OS42MC4wLjE4MjQ1MTk2Mzc.&loginAttempted=true

 

Download Tenable Nessus

Download Nessus and Nessus Manager

www.tenable.com

 

.dmg 파일 실행 후 Install Nessus.pkg 설치 패키지 실행

 

설치 완료 후 자동으로 Nessus 서비스 시작됨.

 

수동으로 명령어로 컨트롤하고싶다면 아래와 같이.

// Nessus 서비스 확인
sudo launchctl list | grep nessusd

// Nessus 자동실행 해제
sudo launchctl bootout system/com.tenablesecurity.nessusd
// 또는
sudo launchctl disable system/com.tenablesecurity.nessusd

// Nessus 다시 실행
sudo /Library/Nessus/run/sbin/nessusd &

 

2) Nessus 실행 및 설정

 

웹 브라우저에서 https://localhost:8834 접속

Continue

Free trial은 Nessus Essentials

 

Continue를 다시 누르면 회원가입 폼이 나올텐데 이름과 이메일 적어주고나면 Activation Code는 무료버전에서는 언제든 다시 발급받으실 수 있는걸로 알고있지만 일단은 적어놓시길 바랍니다.

 

관리자계정 Username Passwd 만드시고

 

다소 시간이 걸리므로, 기다리는 동안 Nessus의 정책(Policies), TeraScan을 살펴보겠습니다.


3. Nessus의 다양한 기능 및 스캔 정책

1) Scan Policies (스캔 정책)

 

Nessus는 다양한 스캔 정책(Scan Policies) 을 제공하여 목적에 맞는 취약점 스캔을 수행할 수 있습니다.

Basic Network Scan: 기본적인 네트워크 취약점 스캔

Web Application Tests: 웹 애플리케이션 보안 점검 (SQL Injection, XSS 등)

Credentialed Scan: 인증된 사용자 권한을 사용하여 시스템 내부 취약점 분석

Host Discovery: 특정 네트워크에서 활성화된 호스트 검색

Malware Scan: 악성코드 및 루트킷 탐지

Policy Compliance Auditing: 시스템 설정이 기업 정책 및 보안 표준을 준수하는지 검사

PCI DSS, SCAP, OVAL Auditing: 보안 규정 준수 여부 확인 (예: PCI DSS, NIST 등)

2) Nessus Policy Templates

Nessus는 사전 정의된 Policy Templates(정책 템플릿) 을 제공하여 사용자가 원하는 유형의 보안 검사를 빠르게 설정할 수 있습니다.

Host Discovery: 네트워크 내 활성화된 호스트 및 오픈 포트 스캔

Basic Network Scan: 전체 시스템의 일반적인 취약점 탐색

Credential Validation: Windows 및 Unix 시스템의 인증 자격 확인

Advanced Scan: 권장 설정 없이 사용자가 직접 구성하는 스캔

Advanced Dynamic Scan: 동적 플러그인 분석 기반 고급 스캔

Web Application Tests: 공개 및 비공개 웹 취약점 검사

Credentialed Patch Audit: 인증 기반 패치 감사 및 누락된 업데이트 확인


Active Directory Starter Scan: Active Directory의 구성 오류 탐색


Find AI: AI, LLM(대규모 언어 모델), ML(머신러닝) 관련 취약점 탐색

3) Terrascan – Infrastructure as Code 보안 검사

 

Terrascan은 정적 코드 분석기(Static Code Analyzer)로, Infrastructure as Code(IaC)의 보안 정책 준수 여부를 점검하는 도구입니다. 자동화된 파이프라인에서 사용되며, 보안 위반 사항을 탐지하여 안전하지 않은 인프라가 배포되기 전에 문제를 해결할 수 있도록 도와줍니다.

 

Plugin이 전부 로드되었다면 여러분들의 서버 스캐닝을 진행해보세요 :)


* 여기서부터는 Nessus Professional에서 사용 가능한 스캐닝 작업들입니다.

 

이번에는 직접 만든 커스텀 스크립트를 통해 스캐닝 작업을 진행해보도록 하겠습니다.

 

New Scan으로 새로운 스캔을 만들어줍시다.

 

스크롤 아래로 Policy Compliance Auditing 클릭

 

 

원하는 Name 작성, Targets에 스캐닝하려는 IP 작성.

 

 

Credentials 작성.

 

 

Compliance에서 서버 카테고리 선택 Upload a cumstom audit file 선택 후 옆에 나오는 Add File 누르고 작성한 커스텀 스크립트 파일 선택 후 아래의 Save를 눌러 저장.

 

 

이제 여러분들이 작성한 스크립트를 통한 스캔이 가능해졌습니다. 스크립트 파일 수정은 스캔 항목 들어가서 configure -> compliance에서 기존 커스텀 파일 삭제 후 다시 Add File.

 

*커스텀 스크립트 문법 (Red Hat 7 기준)

 

https://www.kisa.or.kr/2060204/form?postSeq=12&lang_type=KO&page=1

 

KISA 한국인터넷진흥원

 

www.kisa.or.kr

 

주요정보통신기반시설_기술적_취약점_분석_평가_방법_상세가이드.pdf 의 지침 중 하나인 [U-25] 내용을 기준으로 보안 스크립트를 작성해보도록 하겠습니다. 아래 예제는 NFS(Network File System) 보안 점검을 수행하는 스크립트입니다.

<check_type:"Unix">
<if>
            <condition type:"AND">
                <custom_item>
                    type        : CMD_EXEC
                    description : "3.7.1 NFS 서비스 실행 여부 확인"
                    cmd         : "systemctl is-active nfs-server"
                    expect      : "^inactive$"
                    severity    : HIGH
                </custom_item>
                <custom_item>
                    type        : FILE_CONTENT_CHECK
                    description : "3.7.2 NFS 접근제어 설정 확인 (/etc/exports)"
                    file        : "/etc/exports"
                    regex       : ".*\\s(\\*|everyone).*"
                    expect      : "^#.*|^(?!.*\\s(\\*|everyone)).*$"
                    required    : NO
                    severity    : HIGH
                </custom_item>
                <custom_item>
                    type        : FILE_CONTENT_CHECK
                    description : "3.7.3 NFS root_squash 설정 확인 (/etc/exports)"
                    file        : "/etc/exports"
                    regex       : ".*root_squash.*"
                    expect      : ".*root_squash.*"
                    required    : NO
                    severity    : HIGH
                </custom_item>
            </condition>
            <then>
                <report type:"PASSED">
                    description : "[U-25] 3. 서비스 관리 > 3.7 NFS 접근 통제"
                    info        : "NFS(Network File System) 사용 시 허가된 사용자만 접속할 수 있도록 접근제한 설정 적용 여부 점검
                    - 점검목적 : 접근권한이 없는 비인가자의 접근을 통제함
                    - 판단기준 : (양호) 불필요한 NFS 서비스를 사용하지 않거나, 불가피하게 사용 시 everyone 공유를 제한한 경우
                    (취약) 불필요한 NFS 서비스를 사용하고 있고, everyone 공유를 제한하지 않은 경우"
                    solution    : "사용하지 않는다면 NFS 서비스 중지, 사용할 경우 NFS 설정파일에 everyone 공유 설정 제거
                    ■ /etc/exports 설정 예문
                    Step 1) /etc/exports 파일에 접근 가능한 호스트명 추가
                    (예) /stand host1(또는 IP주소) host2
                    Step 1) 접속시 인증 및 클라이언트 권한 nobody 설정
                    # vi /etc/export
                    # /stand host1 (root_squash)
                    ※ () 옵션에 인증되지 않은 엑세스를 허용하는 insecure 구문 설정 금지
                    Step 3. NFS 서비스 재구동
                    #/etc/exportfs –u
                    #/etc/exportfs –a"
                    show_output : YES
                </report>
            </then>
            <else>
                <report type:"FAILED">
                    description : "[U-25] 3. 서비스 관리 > 3.7 NFS 접근 통제"
                    info        : "NFS(Network File System) 사용 시 허가된 사용자만 접속할 수 있도록 접근제한 설정 적용 여부 점검
                    - 점검목적 : 접근권한이 없는 비인가자의 접근을 통제함
                    - 판단기준 : (양호) 불필요한 NFS 서비스를 사용하지 않거나, 불가피하게 사용 시 everyone 공유를 제한한 경우
                    (취약) 불필요한 NFS 서비스를 사용하고 있고, everyone 공유를 제한하지 않은 경우"
                    solution    : "사용하지 않는다면 NFS 서비스 중지, 사용할 경우 NFS 설정파일에 everyone 공유 설정 제거
                    ■ /etc/exports 설정 예문
                    Step 1) /etc/exports 파일에 접근 가능한 호스트명 추가
                    (예) /stand host1(또는 IP주소) host2
                    Step 1) 접속시 인증 및 클라이언트 권한 nobody 설정
                    # vi /etc/export
                    # /stand host1 (root_squash)
                    ※ () 옵션에 인증되지 않은 엑세스를 허용하는 insecure 구문 설정 금지
                    Step 3. NFS 서비스 재구동
                    #/etc/exportfs –u
                    #/etc/exportfs –a"
                    show_output : YES
                </report>
            </else>
        </if>
        </check_type>

2) 주요 요소 설명

<if>: 특정 조건을 평가하는 블록

<condition>: 검사할 조건을 정의 (AND, OR 조합 가능)

<custom_item>: 실제 검사 항목 (명령 실행, 파일 내용 검사 등)

<then>: 조건을 만족할 경우(양호) 수행할 작업

<else>: 조건을 만족하지 않을 경우(취약) 수행할 작업

3) 주요 검사 항목

CMD_EXEC: 명령 실행 결과 검사

FILE_CONTENT_CHECK: 특정 파일 내 설정 값 검사

EXPECT: 예상 결과와 실제 결과 비교

SEVERITY: 보안 취약점 심각도 설정 (LOW, MEDIUM, HIGH)

 

추가적으로 서버별 Nessus 스크립트 예시 문서들 다운받아보실 수 있는 링크 남겨드립니다.

https://www.tenable.com/audits/newest

 

Newest Audits

Listing newest audits

www.tenable.com

 

 

이제 Launch 눌러주시고 Completed 될 때까지 기다려주시면 됩니다.

완료되셨다면 이렇게 Compliance에서 확인하실 수 있습니다.

 

[U-25] 항목을 확인해보면

 

 

통과했다는걸 알 수 있습니다.


끝으로

Nessus의 정책 검사 스크립트는 운영 환경의 보안 준수 여부를 점검하는 강력한 도구입니다. 이를 활용하면 기업 보안 정책을 자동으로 검사하고 규정을 준수하는지 확인할 수 있습니다.

 

이제 Nessus의 정책 검사 기능을 활용하여 보안 환경을 더욱 강화해 보세요 :) 🔍

반응형
Comments