웹사이트 검색

Ubuntu 22.04에서 Vuls를 취약점 스캐너로 사용하는 방법


저자는 Write for DOnations 프로그램을 선택했습니다.

소개

국가 취약성 데이터베이스(NVD). Vuls는 리소스에 대해 한 번에 여러 시스템을 스캔하고 이메일이나 Slack을 통해 보고서를 보낼 수 있습니다. 세 가지 스캔 모드(빠른, 빠른 루트깊은)가 있으며 상황에 따라 선택할 수 있습니다.

Vuls는 광범위한 IT 보안 스캐너가 아닙니다. 예를 들어 네트워크 트래픽을 모니터링하거나 무차별 대입 로그인 공격으로부터 보호하지 않습니다. 그러나 Vuls는 Linux 패키지에 대한 취약점 보고를 자동화하는 방법을 제공합니다. Vuls가 사용하는 데이터베이스에 특정 취약점에 대한 수정 사항이 통보되면 Vuls는 이 수정 정보를 보고서로 가져옵니다. 보고서를 생성할 때 Vuls는 데이터베이스에서 확립된 순위 시스템을 사용하여 가장 시급한 취약점을 우선적으로 처리합니다.

이 튜토리얼에서는 Vul을 Ubuntu 22.04 서버에 배포합니다. 이 프로세스에는 소스 코드에서 Vul 및 해당 종속성 빌드, 검색 구성 및 Slack에 보고, 선택적으로 대상 시스템에 연결하여 원격 검색을 활성화하는 작업이 포함됩니다. 결국, 취약성에 대해 경고하고 수동 검사의 필요성을 제거하는 자동화된 취약성 보고 시스템을 갖추게 됩니다.

전제 조건

이 자습서를 완료하려면 다음이 필요합니다.

  • 루트 액세스 권한이 있는 Ubuntu 22.04를 실행하는 최소 2GB RAM이 있는 서버와 루트가 아닌 보조 계정. 이 초기 서버 설정 가이드에 따라 설정할 수 있습니다. 이 자습서에서 루트가 아닌 사용자는 sammy입니다.
  • 멤버인 Slack 워크스페이스. 작업 공간을 만드는 방법을 알아보려면 공식 문서를 방문하세요.
  • (선택 사항) Vuls가 원격으로 검색하도록 설정하려는 경우 루트 액세스 권한과 루트가 아닌 보조 계정으로 Ubuntu 22.04를 실행하는 여러 서버(가급적). 이 자습서에서 보조 계정은 sammy-shark입니다. 보조 계정에는 Vuls 제품 문서에 따라 인증을 위해 구성된 SSH 키가 있어야 합니다.< /리>

1단계 - 종속성 설치

이 섹션에서는 Vuls 데이터를 저장할 폴더를 만들고, Go 프로그래밍 언어의 최신 버전을 설치하고, Vuls 및 종속 항목에 필요한 다른 패키지를 설치합니다.

이 튜토리얼에서는 모든 Vuls 관련 데이터를 /usr/share/vuls-data 디렉토리에 저장합니다. 다음 명령을 실행하여 생성합니다.

  1. sudo mkdir /usr/share/vuls-data

sammy에서 액세스할 수 있도록 하려면 다음 명령을 실행합니다.

  1. sudo chown -R sammy /usr/share/vuls-data

이제 작업 공간이 될 vuls-data 폴더를 만들었습니다. 필수 패키지 설치를 계속하기 전에 먼저 패키지 관리자 캐시를 업데이트하십시오.

  1. sudo apt update

종속성을 다운로드하고 컴파일하려면 git, gcc, make, sqlite, 를 설치합니다. debian-goodieswget. sqlite는 여기에서 취약성 정보를 저장하는 데 사용할 데이터베이스 시스템입니다. debian-goodies에는 checkrestart 유틸리티가 포함되어 있어 주어진 시간에 다시 시작할 수 있고 다시 시작해야 하는 패키지에 대한 정보를 제공합니다.

하나의 명령으로 모두 설치할 수 있습니다.

  1. sudo apt install sqlite git debian-goodies gcc make wget -y

이제 필요한 패키지를 설치했으며 Vuls에서 사용할 Go 및 관련 프로그램 설치를 진행할 수 있습니다.

Go 설치

다음 명령을 실행하여 snap 패키지 관리자를 사용하여 Go를 설치합니다.

  1. sudo snap install go --classic

이전 버전을 설치할 수 있는 apt와 달리 최신 버전의 언어를 설치하므로 snap을 사용하여 Go를 설치합니다. 이전 버전으로 작업하는 것은 권장되지 않으며 이 자습서를 완료하지 못할 수 있습니다.

Go가 작동하려면 GOPATHPATH와 같은 몇 가지 환경 변수를 설정해야 합니다. GOPATH는 Go의 작업 디렉토리를 지정합니다. 프로그램이 있는 디렉토리를 포함하는 PATH는 Go 자체를 찾을 위치를 시스템에 알리기 위해 확장되어야 합니다.

이러한 환경 변수는 사용자가 로그온할 때마다 설정해야 합니다. 이를 자동화하기 위해 /etc/profile.d 아래에 go-env.sh라는 새 실행 파일을 만듭니다. 이렇게 하면 사용자가 로그온할 때마다 디렉터리가 실행됩니다.

텍스트 편집기를 사용하여 go-env.sh를 만듭니다.

  1. sudo nano /etc/profile.d/go-env.sh

파일에 다음 명령을 추가합니다.

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin:/snap/bin

export 명령은 주어진 환경 변수를 원하는 값으로 설정합니다. 여기서 이를 사용하여 GOPATHPATH를 적절한 값으로 채웁니다.

파일을 저장하고 닫습니다.

현재 go-env.sh는 실행 가능하지 않습니다. 이 문제를 해결하려면 다음 명령을 실행하여 실행 가능으로 표시하십시오.

  1. sudo chmod +x /etc/profile.d/go-env.sh

다시 로그인하지 않으려면 다음을 실행하여 go-env.sh를 다시 로드할 수 있습니다.

  1. source /etc/profile.d/go-env.sh

source 명령은 상태를 유지하면서 지정된 파일을 현재 셸로 다시 로드합니다.

이제 Go 언어를 설치하고 환경 변수를 설정했으며 나중에 필요한 패키지를 설치했습니다. 다음으로 Vuls에 필요한 Go 프로그램을 다운로드하고 컴파일합니다. 이러한 프로그램은 Vuls가 취약성 데이터베이스를 쿼리하는 데 사용하는 go-cve-dictionarygoval-dictionary입니다.

go-cve-dictionary 설치 및 실행

이 섹션에서는 National Vulnerability Database에 대한 액세스를 제공하는 Go 패키지인 go-cve-dictionary를 다운로드하고 컴파일합니다. 그런 다음 이를 실행하여 Vuls가 사용할 수 있는 취약성 데이터를 가져옵니다. NVD는 취약성 ID(CVE - 일반 취약성 및 노출), 요약 및 영향 분석을 포함하는 공개적으로 보고된 사이버 보안 취약성의 미국 정부 리포지토리이며 기계 판독 가능 형식으로 제공됩니다.

Go는 $GOPATH/src/에 패키지를 저장합니다. 출처를 기록하는 하위 디렉토리를 사용하여 이를 더 확장할 수 있습니다. 예를 들어 example-user 사용자가 만든 GitHub의 패키지는 $GOPATH/src/github.com/example-user 아래에 저장됩니다. .

먼저 GitHub에서 Go 패키지를 복제하고 나중에 컴파일하여 go-cve-dictionary를 설치합니다.

예제 경로에 따라 저장할 디렉터리를 생성하여 시작합니다.

  1. mkdir -p $GOPATH/src/github.com/vulsio

다음을 실행하여 탐색합니다.

  1. cd $GOPATH/src/github.com/vulsio

이제 다음을 실행하여 GitHub에서 서버로 go-cve-dictionary를 복제합니다.

  1. git clone https://github.com/vulsio/go-cve-dictionary.git

그런 다음 패키지 루트로 이동합니다.

  1. cd go-cve-dictionary

마지막으로 다음 명령을 실행하여 컴파일하고 설치합니다.

  1. make install

이 명령을 완료하는 데 다소 시간이 걸릴 수 있습니다.

시스템 전체에서 사용 가능하게 하려면 /usr/local/bin에 복사하십시오.

  1. sudo cp $GOPATH/bin/go-cve-dictionary /usr/local/bin

go-cve-dictionary에는 로그 출력 디렉터리에 대한 액세스가 필요합니다. 기본적으로 /var/log/vuls입니다. 다음을 실행하여 생성합니다.

  1. sudo mkdir /var/log/vuls

현재 모든 사람이 로그 디렉토리를 읽을 수 있습니다. 다음 명령을 사용하여 현재 사용자에 대한 액세스를 제한합니다.

  1. sudo chmod 700 /var/log/vuls

권한 플래그를 700으로 설정하면 소유자만 액세스할 수 있습니다.

sammy 또는 다른 사용자가 액세스할 수 있도록 하려면 다음 명령을 실행하십시오.

  1. sudo chown -R sammy /var/log/vuls

다음으로 NVD에서 취약성 데이터를 가져와 Vuls 작업 공간(/usr/share/vuls-data)에 저장합니다.

  1. go-cve-dictionary fetch nvd --dbpath /usr/share/vuls-data/cve.sqlite3

이 명령은 2002년부터 올해까지의 NVD 취약성 데이터를 가져와 /usr/share/vuls-data 아래의 데이터베이스에 저장합니다.

참고: 이 명령은 완료하는 데 시간이 오래 걸리며 서버의 RAM이 2GB 미만인 경우 실패할 수 있습니다.

이 섹션에서는 go-cve-dictionary를 다운로드하여 설치한 다음 Vuls에서 사용할 NVD 데이터를 가져왔습니다. 이제 goval-dictionary를 다운로드 및 설치하고 Ubuntu용 OVAL 데이터를 가져옵니다.

goval-dictionary 설치 및 실행

이 섹션에서는 Ubuntu용 OVAL 데이터베이스에 대한 액세스를 제공하는 Go 패키지인 goval-dictionary를 다운로드하고 컴파일합니다. 그런 다음 이를 실행하고 Vuls가 사용할 취약성 데이터를 가져옵니다. OVAL은 Open Vulnerability and Assessment Language의 약자로 소프트웨어 취약점이 주어진 시스템에 존재하는지 확인하기 위한 검사를 표현하는 데 사용되는 개방형 언어입니다.

$GOPATH/src/github.com/vulsio 폴더로 이동합니다.

  1. cd $GOPATH/src/github.com/vulsio

다음 명령을 실행하여 GitHub에서 패키지를 복제합니다.

  1. git clone https://github.com/vulsio/goval-dictionary.git

패키지 폴더를 입력하십시오:

  1. cd goval-dictionary

make로 컴파일하고 설치합니다.

  1. make install

전역적으로 액세스할 수 있도록 /usr/local/bin에 복사합니다.

  1. sudo cp $GOPATH/bin/goval-dictionary /usr/local/bin

그런 다음 다음 명령을 실행하여 Ubuntu 22에 대한 OVAL 데이터를 가져옵니다.

  1. sudo goval-dictionary fetch ubuntu --dbpath=/usr/share/vuls-data/oval.sqlite3 22

여기에서 goval-dictionary를 다운로드하여 설치한 다음 Ubuntu용 OVAL 데이터를 가져왔습니다. 다음으로 gost를 다운로드 및 설치하고 Debian 보안 추적기 데이터를 가져옵니다.

gost 설치 및 실행

이 섹션에서는 Debian 보안 버그 추적기에 대한 액세스를 제공하는 Go 패키지인 gost를 다운로드하고 컴파일합니다. 그런 다음 이를 실행하고 Vuls가 사용할 취약성 데이터를 가져옵니다. Ubuntu 보안 추적기는 Ubuntu와 함께 배포되는 패키지의 취약성 상태에 대한 모든 정보를 수집합니다.

이 패키지를 이전과 같은 디렉토리에 저장합니다. 다음 명령을 실행하여 탐색합니다.

  1. cd $GOPATH/src/github.com/vulsio

다음을 실행하여 GitHub에서 패키지를 복제합니다.

  1. git clone https://github.com/vulsio/gost.git

완료되면 패키지 폴더를 입력하십시오.

  1. cd gost

make로 컴파일하고 설치합니다.

  1. make install

전역적으로 액세스할 수 있도록 /usr/local/bin에 복사합니다.

  1. sudo cp $GOPATH/bin/gost /usr/local/bin

그런 다음 gost에 대한 로그 파일 디렉터리를 만듭니다.

  1. sudo mkdir /var/log/gost

다음 명령을 사용하여 현재 사용자에 대한 액세스를 제한합니다.

  1. sudo chmod 700 /var/log/gost

권한 플래그를 700으로 설정하면 소유자만 액세스할 수 있습니다. sammy 또는 다른 사용자가 액세스할 수 있도록 하려면 다음 명령을 실행하십시오.

  1. sudo chown -R sammy /var/log/gost

그런 다음 다음을 실행하여 Ubuntu 보안 추적기 데이터를 가져옵니다.

  1. gost fetch ubuntu --dbpath=/usr/share/vuls-data/gost.sqlite3

출력이 길 수 있습니다. 터미널에서 지워지지 않을 수 있으며, 이 경우 clear 명령을 실행할 수 있습니다.

방금 gost를 다운로드하고 설치한 다음 데비안용 데이터를 가져왔습니다. 다음 단계에서는 Vuls를 다운로드하고 설치합니다.

2단계 - Vul 다운로드 및 구성

모든 종속성이 설치되었으므로 이제 소스 코드에서 Vul을 다운로드하고 컴파일합니다. 또한 로컬 시스템을 스캔하도록 구성합니다.

다음 명령을 사용하여 Vuls 리포지토리의 경로가 포함된 새 디렉터리를 만듭니다.

  1. mkdir -p $GOPATH/src/github.com/future-architect

다음으로 이동합니다.

  1. cd $GOPATH/src/github.com/future-architect

다음 명령을 실행하여 GitHub에서 Vul을 복제합니다.

  1. git clone https://github.com/future-architect/vuls.git

패키지 폴더를 입력하십시오:

  1. cd vuls

다음을 실행하여 동시에 컴파일하고 설치합니다.

  1. make install

이 명령을 완료하는 데 약간의 시간이 걸릴 수 있습니다.

전역적으로 액세스할 수 있도록 /usr/local/bin에 복사합니다.

  1. sudo cp $GOPATH/bin/vuls /usr/local/bin

이제 Vuls에 대한 구성 파일을 만듭니다. /usr/share/vuls-data로 다시 이동합니다.

  1. cd /usr/share/vuls-data

Vuls는 구성을 config.toml이라고 하는 TOML 파일에 저장합니다. 텍스트 편집기를 사용하여 작성하십시오.

  1. sudo nano config.toml

다음 구성을 입력합니다.

[cveDict]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/cve.sqlite3"

[ovalDict]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/oval.sqlite3"

[gost]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/gost.sqlite3"

[servers]

[servers.localhost]
host = "localhost"
port = "local"
scanMode = [ "fast" ]
#scanMode = ["fast", "fast-root", "deep", "offline"]

이 구성의 처음 두 섹션(cveDict, ovalDictgost)은 Vul이 방금 추가한 취약성 데이터베이스를 가리킵니다. servers 섹션은 서버 관련 정보의 시작을 표시합니다. 별도의 섹션은 각 서버에 대한 정보를 그룹화합니다. 이 개요 구성으로 Vuls가 스캔할 유일한 서버는 로컬 서버인 localhost입니다.

Vuls는 네 가지 스캔 모드를 제공합니다.

  • 빠른 모드(기본값)는 루트 권한 없이 스캔하고 종속성이 없으며 대상 서버에서 매우 가볍습니다.
  • 빠른 루트 모드는 루트 권한으로 검사하고 업그레이드되었지만 아직 다시 시작되지 않은 프로세스를 감지할 수 있습니다.
  • 딥 스캔 모드는 빠른 루트 모드와 동일하지만 변경 로그를 확인하므로 대상 서버에 높은 부하가 발생할 수 있습니다.
  • 오프라인 모드는 인터넷에 접속하지 않고 기기를 스캔하며 다른 모드와 함께 사용할 수 있습니다.

파일을 저장하고 닫습니다.

구성 파일의 유효성을 테스트하려면 다음 명령을 실행하십시오.

  1. vuls configtest

다음과 유사한 출력이 표시됩니다.

Output
[Jan 5 20:24:29] INFO [localhost] vuls-v0.22.0-build-20230105_201926_554ecc4 [Jan 5 20:24:29] INFO [localhost] Validating config... [Jan 5 20:24:29] INFO [localhost] Detecting Server/Container OS... [Jan 5 20:24:29] INFO [localhost] Detecting OS of servers... [Jan 5 20:24:29] INFO [localhost] (1/1) Detected: localhost: ubuntu 22.10 [Jan 5 20:24:29] INFO [localhost] Detecting OS of containers... [Jan 5 20:24:29] INFO [localhost] Checking Scan Modes... [Jan 5 20:24:29] INFO [localhost] Checking dependencies... [Jan 5 20:24:29] INFO [localhost] Dependencies... Pass [Jan 5 20:24:29] INFO [localhost] Checking sudo settings... [Jan 5 20:24:29] INFO [localhost] sudo ... No need [Jan 5 20:24:29] INFO [localhost] It can be scanned with fast scan mode even if warn or err messages are displayed due to lack of dependent packages or sudo settings in fast-root or deep scan mode [Jan 5 20:24:29] INFO [localhost] Scannable servers are below... localhost

구성을 올바르게 입력했으며 Vuls가 로컬 서버를 스캔할 수 있음을 감지했습니다.

로컬 서버를 스캔하도록 Vuls를 설치 및 구성했습니다. 다음 단계에서는 로컬 스캔을 실행하고 생성된 보고서를 봅니다.

3단계 - 로컬 스캔 실행

이 단계에서는 로컬 스캔을 실행한 다음 생성된 취약성 보고서를 봅니다. 지금까지 Vuls가 마지막 단계에서 올바르게 감지한 로컬 서버만 구성했습니다. 명시적으로 지정되지 않은 경우 기본 스캔 모드는 빠름입니다.

스캔을 실행하려면 다음 명령을 실행하십시오.

  1. vuls scan

출력은 다음과 유사합니다.

[Jan  5 20:26:14]  INFO [localhost] vuls-v0.22.0-build-20230105_201926_554ecc4
[Jan  5 20:26:14]  INFO [localhost] Start scanning
[Jan  5 20:26:14]  INFO [localhost] config: /usr/share/vuls-data/config.toml
[Jan  5 20:26:14]  INFO [localhost] Validating config...
[Jan  5 20:26:14]  INFO [localhost] Detecting Server/Container OS...
[Jan  5 20:26:14]  INFO [localhost] Detecting OS of servers...
[Jan  5 20:26:14]  INFO [localhost] (1/1) Detected: localhost: ubuntu 22.10
[Jan  5 20:26:14]  INFO [localhost] Detecting OS of containers...
[Jan  5 20:26:14]  INFO [localhost] Checking Scan Modes...
[Jan  5 20:26:14]  INFO [localhost] Detecting Platforms...
[Jan  5 20:26:14]  INFO [localhost] (1/1) localhost is running on other
[Jan  5 20:26:14]  INFO [localhost] Scanning OS pkg in fast mode
[Jan  5 20:26:14]  INFO [localhost] Scanning listen port...
[Jan  5 20:26:14]  INFO [localhost] Using Port Scanner: Vuls built-in Scanner


Scan Summary
================
localhost       ubuntu22.10     695 installed





To view the detail, vuls tui is useful.
To send a report, run vuls report -h.

Vuls는 프로세스에서 수행한 작업을 기록했습니다. 식별된 취약점 보고서를 보려면 다음을 실행하십시오.

  1. vuls tui

Vuls는 보고서 보기를 네 개의 패널로 나눕니다.

  • 왼쪽 상단에 있는 스캔된 머신에는 Vuls가 스캔한 머신이 나열됩니다.
  • 컴퓨터 목록 오른쪽에 있는 발견된 취약점은 설치된 패키지에서 발견된 취약점 취약점을 보여줍니다.
  • 화면 왼쪽을 차지하는 상세 정보는 데이터베이스에서 가져온 취약점에 대한 상세 정보를 보여줍니다.
  • 자세한 정보 오른쪽에 있는 영향을 받는 패키지에는 영향을 받는 패키지 버전과 수정된 버전이 있는지 표시됩니다.

ENTER를 눌러 각 패널에서 커서를 순환할 수 있습니다. 키보드 화살표를 사용하여 각 패널 내에서 탐색할 수 있습니다. 완료되면 CTRL+C를 눌러 종료합니다.

이 단계에서는 로컬 스캔을 실행하고 결과를 검사했습니다. 다음(선택 사항) 섹션에서는 여러 대상 시스템을 검색하도록 Vul을 구성합니다.

4단계 - (선택 사항) 여러 대상 시스템 구성

이 섹션에서는 여러 대상 시스템을 검색하도록 Vul을 구성합니다. 이 프로세스에는 대상 시스템에서 /etc/sudoers를 구성하고 해당 대상을 스캔하도록 Vuls를 구성하는 작업이 수반됩니다.

대상 서버의 IP 주소, 대상 서버에 대한 루트 액세스 권한 및 대상 서버에서 사용 가능한 계정(sammy-shark 이 튜토리얼에서).

빠른 모드에서 검색하려면 대상 서버에서 루트가 아닌 사용자 계정만 사용할 수 있습니다. 빠른 루트 및 심층 모드에서 검색을 활성화하려면 대상 컴퓨터에서 /etc/sudoers 파일을 편집해야 합니다. sudoers 파일은 어떤 사용자가 어떤 명령을 실행할 수 있고 지정된 명령에 대한 암호가 필요한지 여부를 제어합니다.

visudo는 액세스 및 권한 있는 액세스에 대한 규칙을 정의하는 유틸리티이며 루트로만 실행할 수 있습니다. sudoers의 중요성 때문에 오류와 함께 종료하려고 하면 파일에서 경고를 표시합니다.

대상 서버에서 root로 로그인하고 visudo를 실행하여 편집을 위해 sudoers를 엽니다.

  1. visudo

파일 끝에 다음 행을 추가하십시오.

sammy-shark ALL=(ALL) NOPASSWD: /usr/bin/apt-get update, /usr/bin/stat *, /usr/sbin/checkrestart

이 라인은 sudo에게 사용자 sammy-sharkapt-get update, checkrestart 를 실행할 수 있도록 지시합니다. 및 암호를 제공하지 않고 stat에서 사용할 수 있는 모든 명령입니다.

파일을 저장하고 닫습니다. 프로세스에서 구문 오류가 발생한 경우 visudo는 이를 알리고 다시 편집하거나 종료할 것을 제안합니다.

참고: sudoerssammy-shark 사용자를 추가하면 Vul이 빠른 루트 및 딥 모드를 사용하여 스캔할 수 있습니다. 로컬 시스템(localhost)에 대해서도 이러한 모드를 허용하려면 localhost에서 sudoers를 편집할 수 있습니다. sudoers에 대한 자세한 내용은 Sudoers 파일을 편집하는 방법에 대한 자습서를 검토할 수 있습니다.

Vuls는 checkrestart 유틸리티를 사용하여 업데이트되었지만 다시 시작해야 하는 패키지를 확인합니다. 대상 서버에 있는지 확인하려면 다음 명령을 실행하여 보조 서버에 설치하십시오.

  1. apt install debian-goodies -y

이것이 대상 서버에서 수행해야 하는 전부입니다. 이제 대상에서 로그아웃하고 초기 서버로 돌아갈 수 있습니다.

스캔할 새 서버를 추가하려면 config.toml을 열고 [servers] 표시 아래에 다음 줄을 추가합니다.

[servers.target_name]
host = "target_ip"
port = "22"
user = "account_username"
keyPath = "/home/sammy/.ssh/id_rsa"
scanMode = [ "deep" ] # "fast", "fast-root" or "deep"

위의 줄은 새 서버를 추가하기 위한 템플릿입니다. target_name을 원하는 이름으로 바꾸고, target_ip를 대상 서버의 IP인 <로 바꾸십시오. mark>account_username에 사용자 이름(이 자습서에서는 sammy-shark 사용)을 사용하고 사용자 새미. Vuls는 SSH 암호 인증을 지원하지 않으므로 keyPath를 지정해야 합니다.

파일을 저장하고 닫습니다.

다음으로 추가한 각 대상 서버에 대해 로컬 컴퓨터에서 RSA 키를 확인합니다. 이를 위해 다음과 같이 적절한 키를 사용하여 첫 번째 서버에서 대상 서버에 로그인합니다.

  1. ssh sammy-shark@target_ip -i /home/sammy/.ssh/id_rsa

개인 RSA 키의 경로를 입력해야 합니다. 연결을 계속할지 묻는 메시지가 표시되면 yes를 입력한 다음 CTRL + D를 눌러 로그아웃합니다.

참고: 키 파일 권한이 너무 열려 있다는 오류가 발생하면 다음 명령을 실행하여 권한을 600으로 설정하십시오.

  1. chmod 600 account_rsa_key

권한을 600으로 설정하면 소유자만 키 파일을 읽고 쓸 수 있습니다.

새 구성의 유효성을 확인하려면 다음 명령을 실행합니다.

  1. vuls configtest

출력에는 종속성, 수퍼유저 액세스, OS 버전 등 Vuls가 확인한 모든 내용이 자세히 표시됩니다. 오류가 있는 경우 이 섹션의 앞부분에서 제공된 구성에 대해 config.toml을 확인하십시오.

이 단계에서는 Vuls 구성에 더 많은 서버를 추가하여 검색을 위해 표시했습니다. 다음 섹션에서는 Vuls가 주기적으로 스캔하여 Slack 작업 공간으로 보고서를 보내도록 구성합니다.

5단계 - 정기 검사 구성 및 Slack에 보고

이제 Slack에 보고서를 보내도록 Vuls를 구성하고 Vuls 스캔을 주기적으로 실행하도록 cron 작업을 설정합니다.

Slack 통합을 사용하려면 워크스페이스에 대해 Slack에 들어오는 웹후크가 있어야 합니다. 수신 웹후크는 애플리케이션이 다른 애플리케이션의 실시간 정보를 제공할 수 있도록 합니다. 이 경우 Slack 채널에 보고하도록 Vuls를 구성합니다.

웹후크를 생성하지 않은 경우 먼저 워크스페이스용 앱을 생성해야 합니다. 이렇게 하려면 먼저 Slack에 로그인하고 Slack의 앱 생성 페이지로 이동합니다. 인식할 수 있는 이름을 선택하고 원하는 작업 공간을 선택한 다음 앱 만들기를 누릅니다.

새 앱의 설정 페이지로 리디렉션됩니다. 왼쪽 탐색 모음에서 수신 Webhooks 항목을 선택합니다.

수신 웹후크 활성화 제목 옆에 있는 스위치 버튼을 켜기로 전환하여 웹후크를 활성화합니다.

활성화되면 새 섹션이 페이지에 로드됩니다. 작업 공간에 새 Webhook 추가 버튼으로 스크롤한 다음 누릅니다. 작업 공간에 대한 액세스를 요청하는 새 페이지가 열립니다. 보고서를 보낼 채널을 선택하고 허용을 누릅니다.

웹후크 설정 페이지로 다시 리디렉션되고 이제 웹후크 URL 아래의 표에 새 웹후크가 나열됩니다. 복사를 클릭하여 URL을 복사하고 나중에 사용할 수 있도록 기록해 둡니다.

초기 서버용 터미널로 돌아가서 편집을 위해 config.toml을 엽니다.

  1. sudo nano config.toml

다음 줄을 추가합니다.

[slack]
hookURL      = "your_hook_url"
channel      = "#your_channel_name"
authUser     = "your_username"
#notifyUsers  = ["@username"]

your_hook_URL을 기록해 둔 웹훅 URL로, your_channel_name을 원하는 채널의 이름으로, 를 교체하십시오. >your_username을 웹후크를 생성한 Slack 사용자의 사용자 이름으로 바꿉니다. 파일을 저장하고 닫습니다.

통합을 테스트하려면 vuls report를 실행하여 보고서를 생성할 수 있습니다.

  1. sudo vuls report -to-slack

Vuls는 실행하고 종료하는 데 몇 분 정도 걸립니다. 오류를 반환하는 경우 이전 줄에 대해 입력한 내용을 확인합니다.

Slack 앱을 확인하여 Vuls가 표시된 채널로 보고서를 성공적으로 보냈는지 확인하세요.

이제 보고를 구성했으므로 예약 검사를 설정할 수 있습니다. cron은 모든 우분투 시스템과 함께 제공되는 시간 기반 작업 스케줄러입니다. 명령이 실행되어야 하는 정확한 구문을 정의하는 crontab 파일을 통해 구성됩니다. 편집을 돕기 위해 편집기에서 현재 crontab 파일을 여는 crontab 유틸리티를 사용합니다.

다음 명령을 실행하여 현재 crontab 파일을 엽니다.

  1. crontab -e

메시지가 표시되면 목록에서 원하는 텍스트 편집기를 선택합니다.

파일 끝에 다음 줄을 추가합니다.

0 0 * * * vuls scan -config=/usr/share/vuls-data/config.toml; vuls report -config=/usr/share/vuls-data/config.toml > /dev/null 2>&1

이 줄은 cron이 매일 정오에 지정된 구성으로 vuls scanvuls report를 실행하도록 지시합니다(0 0 * *로 표시됨). * cron 구문에서).

파일을 저장하고 닫습니다.

이 단계에서는 Vuls를 Slack 작업 공간에 연결하고 매일 정오에 Vuls 검사를 실행하고 Slack에 보고하도록 cron을 구성했습니다.

결론

이제 Ubuntu 22.04 서버에서 자동 검색 및 보고 기능을 사용하여 Vuls를 성공적으로 설정했습니다. 더 많은 보고 옵션과 문제 해결을 보려면 Vuls 설명서를 방문하세요.

Vuls를 사용하면 프로덕션 환경에서 취약성 평가가 더욱 원활해집니다. cron을 설정하는 대신 Vuls와 함께 방화벽에서 Vuls를 사용하여 액세스를 제한하고 루트 액세스의 필요성을 줄이는 것도 가능합니다.