보안 스캐너 · 6 min read · Sep 16, 2025

우분투 24.04에 Vuls 취약점 스캐너 설치 및 사용 방법

Vuls는 어디에서나 실행할 수 있는 에이전트 없는 무료 오픈 소스 취약점 스캐너입니다. Vuls는 클라우드, 온프레미스 및 도커에서 실행할 수 있으며 주요 배포판을 지원합니다. Vuls는 NVD, JVN, OVAL, RHSA/ALAS/ELSA/FreeBSD-SA와 같은 여러 취약점 데이터베이스를 지원합니다.

Vuls를 사용하면 여러 방법을 사용하여 여러 운영 체제를 스캔할 수 있습니다. 호스트의 로컬을 스캔할 수 있으며 SSH를 통해 원격 호스트/서버를 스캔할 수 있습니다. 또한 루트 권한이 필요하지 않은 빠른 스캔과 루트 권한이 필요한 깊은 스캔을 포함한 여러 스캔 방법을 제공합니다. Vuls는 여러 대상 서버를 동시에 스캔할 수 있습니다. 스캔이 완료되면 결과를 이메일 및 슬랙으로 보낼 수 있습니다.

이 가이드에서는 우분투 24.04 서버에 Vuls 취약점 스캐너를 설치하는 방법을 보여줍니다. Vuls를 설치하고 CVE 데이터베이스를 생성하며 로컬 및 원격 스캔을 통해 우분투/데비안을 스캔할 것입니다.

전제 조건

이 가이드를 시작하려면 다음이 필요합니다:

  • 우분투 24.04 서버
  • 루트 권한이 있는 비루트 사용자
  • Vuls를 통한 원격 스캔을 위한 추가 우분투/데비안 머신

종속성 설치

Vuls를 설치하기 전에 시스템에 Golang이 설치되어 있는지 확인해야 합니다. 현재 Vuls의 최신 버전은 최신 Golang을 요구하므로 바이너리 패키지를 다운로드하여 Golang을 수동으로 설치해야 합니다.

먼저 아래 명령어를 실행하여 우분투 패키지 인덱스를 업데이트하고 ‘ sqlite3 ‘, ‘ git ‘, ‘ make ‘, ‘ gcc ‘와 같은 종속성을 설치합니다.

sudo apt update  
sudo apt install sqlite3 git debian-goodies gcc make wget -y

update repo and install deps

종속성이 설치된 후 시스템에 Golang을 설치해야 합니다. 이 예제에서는 수동 바이너리 설치를 통해 최신 버전의 Golang을 설치합니다.

아래와 같이 Golang 버전을 선택합니다. 예를 들어 Golang 1.23.2:

export latest_version=1.23.2

아래 ‘wget’ 명령어를 실행하여 Golang을 다운로드하고 ‘ tar ‘ 명령어를 사용하여 ‘ /usr/local ‘ 디렉토리에 추출합니다.

wget https://dl.google.com/go/go$latest_version.linux-amd64.tar.gz  
sudo tar -C /usr/local -xzf go$latest_version.linux-amd64.tar.gz

Golang이 설치되면 사용자로 로그인하고 홈 디렉토리 내에 새 ‘ go ‘ 디렉토리를 생성합니다.

su - arvd  
mkdir $HOME/go

다음으로 ‘ nano ‘ 편집기를 사용하여 새 환경 파일 ‘ /etc/profile.d/go-env.sh ‘를 생성합니다.

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

Golang의 PATH를 설정하기 위해 다음 구성을 붙여넣습니다.

export GOROOT=/usr/local/go  
export GOPATH=$HOME/go  
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

작업이 완료되면 파일을 저장하고 종료합니다.

이제 ‘ /etc/profile.d/go-env.sh ‘를 실행 가능하게 만들고 ‘ source ‘ 명령어로 현재 세션에 로드합니다.

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

마지막으로 ‘ go ‘의 바이너리 파일을 확인하고 다음 명령어로 버전을 확인합니다.

which go  
go version

아래와 같이 Golang ‘ 1.23.2 ‘가 ‘ /usr/local/go/bin/go ‘에 설치되어 있습니다.

setup and install Golanfg

Vuls 및 Vuls 사전 설치

Golang이 설치된 후 CVE 데이터베이스를 sqlite3 형식으로 구축하기 위해 Vuls 및 그 구성 요소를 컴파일하고 설치합니다. 아래는 설치할 Vuls 구성 요소입니다:

  • go-cve-dictionary ‘는 NVD(국가 취약점 데이터베이스)를 구축하는 데 사용됩니다.
  • goval-dictionary ‘는 데비안, 우분투 및 레드햇과 같은 대부분의 리눅스 배포판에 대한 CVE를 포함하는 OVAL 데이터베이스를 구축하는 데 사용됩니다.
  • go-exploitdb ‘는 exploitdb 데이터베이스에서 익스플로잇을 검색하는 데 사용됩니다.
  • go-msfdb ‘는 메타스플로잇 데이터베이스 내에서 CVE를 검색하는 데 사용됩니다.
  • go-kev ‘는 CISA에서 제공하는 KEV(알려진 익스플로잇 취약점)의 로컬 복사본을 구축하는 데 사용됩니다.
  • go-cti ‘는 CTI(사이버 위협 정보)에서 CVE 데이터베이스를 구축하는 데 사용됩니다.

먼저 아래 명령어를 실행하여 새 로그 디렉토리를 만들고 소유권을 사용자 ‘arvd’로 변경합니다.

sudo mkdir /var/log/{vuls,go-exploitdb,go-msfdb,go-kev,go-cti}  
sudo chown arvd /var/log/{vuls,go-exploitdb,go-msfdb,go-kev,go-cti}  
sudo chmod 700 /var/log/{vuls,go-exploitdb,go-msfdb,go-kev,go-cti}

다음으로 ‘$GOPATH/src/github.com/vulsio’에 새 디렉토리를 생성합니다.

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

‘$GOPATH/src/github.com/vulsio’ 디렉토리로 이동하여 ‘ go-cve-dictionary ‘ 도구의 소스 코드를 ‘git’을 통해 다운로드한 후 컴파일하고 설치합니다.

cd $GOPATH/src/github.com/vulsio  
git clone https://github.com/vulsio/go-cve-dictionary.git  
cd go-cve-dictionary; make install

cve dictionary

이제 아래 명령어를 실행하여 ‘ goval-dictionary ‘ 도구를 다운로드하고 컴파일하여 설치합니다.

cd $GOPATH/src/github.com/vulsio  
git clone https://github.com/vulsio/goval-dictionary.git  
cd goval-dictionary; make install

‘goval-dictionary’가 설치된 후, 다음 도구인 ‘ go-exploitdb ‘ 도구를 설치합니다.

cd $GOPATH/src/github.com/vulsio  
git clone https://github.com/vulsio/go-exploitdb.git  
cd go-exploitdb; make install  
ln -s $GOPATH/src/github.com/vulsio/go-exploitdb/go-exploitdb.sqlite3 $HOME/go-exploitdb.sqlite3

go-exploitdb

다음으로 아래 명령어를 실행하여 ‘ go-msfdb ‘ 도구를 설치하고 컴파일합니다.

cd $GOPATH/src/github.com/vulsio  
git clone https://github.com/vulsio/go-msfdb.git  
cd go-msfdb; make install

go-msfdb

그 후, CISA에서 제공하는 KEV(알려진 익스플로잇 취약점) 데이터베이스를 구축하기 위해 ‘ go-kev ‘ 도구를 설치합니다.

cd $GOPATH/src/github.com/vulsio  
git clone https://github.com/vulsio/go-kev.git  
cd go-kev; make install  
ln -s $GOPATH/src/github.com/vulsio/go-kev/go-kev.sqlite3 $HOME/go-kev.sqlite3

그리고 CTI(사이버 위협 정보)에서 CVE를 구축하는 데 사용될 ‘ go-cti ‘ 도구를 설치합니다.

cd $GOPATH/src/github.com/vulsio  
git clone https://github.com/vulsio/go-cti.git  
cd go-cti; make install  
ln -s $GOPATH/src/github.com/vulsio/go-cti/go-cti.sqlite3 $HOME/go-cti.sqlite3

다음으로 아래 명령어를 실행하여 ‘ vuls ‘를 우분투 머신에 다운로드, 컴파일 및 설치합니다.

mkdir -p $GOPATH/src/github.com/future-architect  
cd $GOPATH/src/github.com/future-architect  
git clone https://github.com/future-architect/vuls.git  
cd vuls; make install

install vuls

모든 것이 설치되면 각 도구의 바이너리 파일이 ‘$GOPATH/bin’ 디렉토리에 있습니다. 아래 명령어를 실행하여 해당 디렉토리를 확인합니다.

ls $GOPATH/bin/

아래에서 ‘ vuls ‘, ‘ go-cve-dictionary ‘, ‘ goval-dictionary ‘, ‘ go-exploitdb ‘, ‘ go-msfdb ‘, ‘ go-kev ‘ 및 ‘ go-cti ‘의 바이너리 파일을 확인할 수 있습니다.

마지막으로 아래 ‘ vuls ‘ 명령어를 확인할 수 있습니다. 이는 ‘ vuls ‘에 대한 도움말 메시지를 보여줍니다.

vuls help

check vuls

CVE(공통 취약점 및 노출) 데이터베이스 다운로드

이 예제에서는 다음에 대한 CVE 데이터베이스를 다운로드합니다:

  • go-cve-dictionary ‘를 통한 NVD(국가 취약점 데이터베이스)
  • goval-dictionary ‘를 통한 우분투 24.04의 OVAL(오픈 취약점 및 평가 언어)
  • go-exploitdb ‘를 통한 ExploitDB 데이터베이스
  • go-msfdb ‘를 통한 메타스플로잇 데이터베이스
  • CISA의 ‘ go-kev ‘를 통한 KEV(알려진 익스플로잇 취약점) 카탈로그
  • go-cti ‘를 통한 MITRE ATT&CK 및 CAPEC 데이터베이스

다음과 같이 홈 디렉토리로 이동합니다.

cd $HOME

이제 아래 명령어를 실행하여 CVE(공통 취약점 및 노출) 데이터베이스를 다운로드하고 빌드합니다.

go-cve-dictionary fetch nvd  
goval-dictionary fetch ubuntu 24.04  
go-exploitdb fetch exploitdb  
go-msfdb fetch msfdb  
go-kev fetch kevuln  
go-cti fetch threat

download nvd database

download oval database

download msfdb

프로세스가 완료되면 CVE 데이터베이스가 홈 디렉토리에 ‘ .sqlite3 ‘ 형식으로 제공됩니다. 다음 명령어로 데이터베이스 목록을 확인합니다.

ls -ah *.sqlite3

Vuls로 로컬 머신 스캔

이제 Vuls와 CVE 데이터베이스를 포함한 구성 요소를 설치했습니다. 이 섹션에서는 Vuls로 로컬 우분투 머신을 스캔합니다.

홈 디렉토리 내에 ‘ config.toml ‘라는 새 파일을 ‘ nano ‘ 편집기로 생성합니다.

nano config.toml

아래 구성을 삽입하여 로컬호스트에 대한 스캔을 ‘fast’ 모드로 설정합니다.

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

파일을 저장하고 편집기를 종료합니다.

이제 아래 ‘vuls’ 명령어를 실행하여 ‘config.toml’ 파일을 확인합니다.

vuls configtest

적절한 구성이 되어 있다면 다음과 같은 출력을 볼 수 있습니다:

check configuration

다음으로 아래 ‘ vuls scan ‘ 명령어로 로컬호스트를 스캔합니다.

sudo vuls scan

아래에서 스캔 프로세스가 완료된 것을 볼 수 있습니다.

scanning localhost with vuls

스캔 보고서의 세부정보를 얻으려면 아래 ‘ vuls tui ‘ 명령어를 사용합니다. 이는 Vuls 보고서의 터미널 사용자 인터페이스를 보여줍니다.

sudo vuls tui

CTRL+c ‘를 눌러 Vuls TUI에서 종료할 수 있습니다.

Vuls로 원격 서버 스캔

이 섹션에서는 Vuls로 원격 스캔을 설정하는 방법을 배웁니다. 따라서 Vuls를 통해 SSH로 원격 시스템을 스캔합니다. 이 예제에서는 IP 주소 ‘ 192.168.10.10 ‘와 사용자 ‘ alice ‘를 가진 대상 서버 Debian 12를 스캔합니다.

먼저 아래 명령어를 실행하여 Debian 12에 대한 OVAL 데이터베이스를 다운로드합니다.

goval-dictionary fetch debian 12

이제 SSH 공개 및 개인 키를 생성한 후 ‘ ssh-copy-id ‘ 명령어로 대상 서버에 업로드합니다.

ssh-keygen -t ed25519  
ssh-copy-id [email protected]

copy ssh key

대상 서버 ‘192.168.10.10’에 연결한 후 패키지 인덱스를 업데이트하고 ‘ debian-goodies ‘ 및 ‘ reboot-notifier ‘와 같은 종속성을 설치합니다.

ssh [email protected]  
sudo apt update && sudo apt install debian-goodies reboot-notifier -y

대상 서버에서 로그아웃하려면 ‘ exit ‘를 입력합니다.

다음으로 ‘ nano ‘ 편집기를 사용하여 Vuls 구성 ‘ config.toml ‘을 엽니다.

nano ~/config.toml

아래 구성을 삽입하여 대상 서버 세부정보를 추가합니다. 이 경우 새 대상 서버는 IP 주소 ‘ 192.168.10.10 ‘와 SSH 키를 통한 인증으로 ‘ debian12 ‘라는 이름이 됩니다.

[servers.debian12]  
host = "192.168.10.10"  
port = "22"  
user = "alice"  
keyPath = "~/.ssh/id_ed25519"  
scanMode = [ "fast-root" ] # "fast", "fast-root" 또는 "deep"

파일을 저장하고 편집기를 종료합니다.

이제 아래 ‘ vuls ‘ 명령어를 실행하여 구성을 확인합니다. 올바르고 적절한 구성이 되어 있는지 확인합니다.

vuls configtest

그 후, 아래 명령어로 원격 ‘ debian12 ‘ 서버를 스캔합니다.

vuls scan debian12

아래에서 Vuls를 통한 원격 스캔이 완료된 것을 볼 수 있습니다.

scan remote server with vuls

결론

축하합니다! 우분투 24.04 서버에 Vuls 취약점 스캐너 설치를 완료했습니다. 또한 Vuls로 CVE 데이터베이스를 생성하고 로컬 및 원격 서버를 스캔하는 방법을 배웠습니다. 이제 Vuls를 NMAP과 같은 다른 스캐너와 통합하거나 Vulsrepo를 설치하여 그래픽 및 웹 기반 인터페이스를 사용할 수 있습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.