보안 스캐너 · 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
종속성이 설치된 후 시스템에 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.gzGolang이 설치되면 사용자로 로그인하고 홈 디렉토리 내에 새 ‘ go ‘ 디렉토리를 생성합니다.
su - arvd
mkdir $HOME/go다음으로 ‘ nano ‘ 편집기를 사용하여 새 환경 파일 ‘ /etc/profile.d/go-env.sh ‘를 생성합니다.
sudo nano /etc/profile.d/go-env.shGolang의 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 ‘에 설치되어 있습니다.

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
이제 아래 명령어를 실행하여 ‘ 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-msfdb ‘ 도구를 설치하고 컴파일합니다.
cd $GOPATH/src/github.com/vulsio
git clone https://github.com/vulsio/go-msfdb.git
cd go-msfdb; make install
그 후, 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
모든 것이 설치되면 각 도구의 바이너리 파일이 ‘$GOPATH/bin’ 디렉토리에 있습니다. 아래 명령어를 실행하여 해당 디렉토리를 확인합니다.
ls $GOPATH/bin/아래에서 ‘ vuls ‘, ‘ go-cve-dictionary ‘, ‘ goval-dictionary ‘, ‘ go-exploitdb ‘, ‘ go-msfdb ‘, ‘ go-kev ‘ 및 ‘ go-cti ‘의 바이너리 파일을 확인할 수 있습니다.
마지막으로 아래 ‘ vuls ‘ 명령어를 확인할 수 있습니다. 이는 ‘ vuls ‘에 대한 도움말 메시지를 보여줍니다.
vuls help
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


프로세스가 완료되면 CVE 데이터베이스가 홈 디렉토리에 ‘ .sqlite3 ‘ 형식으로 제공됩니다. 다음 명령어로 데이터베이스 목록을 확인합니다.
ls -ah *.sqlite3Vuls로 로컬 머신 스캔
이제 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적절한 구성이 되어 있다면 다음과 같은 출력을 볼 수 있습니다:

다음으로 아래 ‘ vuls scan ‘ 명령어로 로컬호스트를 스캔합니다.
sudo vuls scan아래에서 스캔 프로세스가 완료된 것을 볼 수 있습니다.

스캔 보고서의 세부정보를 얻으려면 아래 ‘ 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]
대상 서버 ‘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를 통한 원격 스캔이 완료된 것을 볼 수 있습니다.

결론
축하합니다! 우분투 24.04 서버에 Vuls 취약점 스캐너 설치를 완료했습니다. 또한 Vuls로 CVE 데이터베이스를 생성하고 로컬 및 원격 서버를 스캔하는 방법을 배웠습니다. 이제 Vuls를 NMAP과 같은 다른 스캐너와 통합하거나 Vulsrepo를 설치하여 그래픽 및 웹 기반 인터페이스를 사용할 수 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.