Cài đặt Vuls trên ubuntu 18.04

30/12/2020

Khi sử dụng hệ điều hành thì ta thường xuyên cài đặt các gói và các ứng dụng. Làm sao để biết được nó có lỗ hỏng nào đó. Thì Vuls là một giải pháp giúp bạn có thể scan được các lỗ hỏng. Tôi sẽ hướng dẫn các bạn cài đặt Vuls.

I. Giới thiệu Vuls

Khái niệm

  • Vuls được viết tắt của vulnerability scanner là một công cụ được sử dụng để quét các lỗ hỏng của các gói ứng dụng
  • Vuls được viết bằng ngôn ngữ GO và có khả năng tự động phân tích các lỗ hổng bảo mật của các phầm mềm cài đặt trên hệ thống
  • Vuls sử dụng nhiều loại  vulnerability databases để đối chiếu như là : National Vulnerability Database(NVD), FREEBSD, OVAL…
  • NVD : là một nơi lưu trữ các thông tin các lỗ hỏng được công khai lớn nhất.

Chức năng

  • Vuls Có khả năng scan được nhiều hệ thống cùng một lúc. Và có thể cảnh báo qua được e-mailslack
  • Vuls sẽ có 3 mode được sử dụng : fast, fast root, deep
  • Vuls Không thể kiểm soát lưu lượng mạng
  • Khi mà DB của Vuls đưa ra các phát hiện lỗ hỏng thì nó cũng được đưa vào tin nhắn gửi cảnh báo
  • Mức độ ưu tiên của cảnh báo đã được cài đặt sẵn ở trong DB của Vuls. Và nó sẽ thực hiện theo mức độ cảnh báo đó

Mục tiêu bài viết

  • Bài viết này sẽ hướng dẫn bạn cài đặt Vuls trên ubuntu 18.04 server
  • Cài đặt cấu hình của Vuls cảnh báo về slack
  • Cần chuẩn bị hai máy ubuntu 18.04 tối thiểu RAM 2G

IPPlanning

Host name IP RAM DISK CPU
vuls 10.10.34.131 2G 30G 1
vuls-client 10.10.34.133 2G 20G 1

Mô hình

II. Thực hiện

1. Cài đặt môi trường

Tạo thư mục để lưu trữ dữ liệu của Vuls

sudo mkdir /usr/share/vuls-data

Update các gói dữ liệu

sudo apt update

Cài đặt các gói cần thiết

sudo apt install sqlite git debian-goodies gcc make wget

Cài đặt ngôn ngữ GO. Dùng snap để có thể download được phiên bản mới nhất của GO

sudo snap install go --classic

Tạo file /etc/profile.d/go-env.sh. Chức năng của nó là tạo ra các biến môi trường. Thêm nội dưới đây vào file

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

Cấp quyền cho thư mục

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

Chạy để thực thi file để có biến môi trường

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

NOTE : Hãy chạy file này mỗi khi bật máy để có biến môi trường

2. Cài đặt gói go-cve-dictionary

Chức năng của gói:

  • Gói này sẽ cung cấp quyền truy cập NVD(National Vulnerability Database)
  • NVD là kho lưu trữ vulnerabilities và public lớn nhất. Nó có sẵn định dạng cho máy đọc

Tạo thư mục để lưu trữ go-cve-dictionary. và di chuyển tới thư mục

mkdir -p $GOPATH/src/github.com/kotakanbe cd $GOPATH/src/github.com/kotakanbe

clone go-cve-dictionary từ git về

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

Cài đặt go-cve-dictionary

cd go-cve-dictionary make install

Để hệ thống có sẵn copy nó vào thư mục của hệ thống

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

Tạo thư mục log cho nó và cấp quyền cho thư mục

sudo mkdir /var/log/vuls  sudo chmod 777 /var/log/vuls

Download dữ liệu từ NVD về máy

for i in `seq 2002 $(date +"%Y")`; do sudo go-cve-dictionary fetchnvd -dbpath /usr/share/vuls-data/cve.sqlite3 -years $i; done

NOTE : Thời gian làm bước này rất lâu nên hãy đợi nó download

3. Cài đặt và chạy goval-dictionary

Di chuyển đến thư mục chứa được tạo ra trước đó

cd $GOPATH/src/github.com/kotakanbe

Clone gói từ github

git clone https://github.com/kotakanbe/goval-dictionary.git

Cài đặt goval-dictionary

cd goval-dictionary  make install

Sao chép vào thư mục /usr/local/bin

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

Tìm dữ liệu cho OVAL

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

4. Cài đặt và chạy gost

Tạo ra thư mục mới để lưu trữ

sudo mkdir -p $GOPATH/src/github.com/knqyf263 cd $GOPATH/src/github.com/knqyf263

Clone nó về từ git

sudo git clone https://github.com/knqyf263/gost.git

Cài đặt gói

cd gost  make install

Copy vào thư mục /usr/local/bin

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

symlink tới thư mục của vuls để nó có thể thấy được

ln -s $GOPATH/src/github.com/knqyf263/gost/gost.sqlite3  /usr/share/vuls-data/gost.sqlite3

Tạo thư mục log cho gost

sudo mkdir /var/log/gost

Cấp quyền cho thư mục

sudo chmod 777 /var/log/gost

Tìm dữ liệu và lưu trong bảo mật của Debian

gost fetch debian

5. Download và cài đặt Vuls

Tạo ra thư mục lưu trữ và di chuyển với thư mục

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

Clone từ github

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

Cài đặt gói

cd vuls  make install

Copy vào thư mục /usr/local/bin

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

Tạo file cấu hình cho Vuls

cd /usr/share/vuls-data  sudo vi config.toml

với nội dung sau. Mặc định nó sẽ chạy ở chế độ fast

[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"]

Kiểm tra xem cấu hình có đúng hay là không

vuls configtest

6. Chạy local scan

Thực hiện scan trong local nếu không chỉ định rõ ràng sẽ thực hiện ở chế độ fast

vuls scan

output

[Feb 27 19:44:12]  INFO [localhost] Detecting OS of servers... [Feb 27 19:44:12]  INFO [localhost] (1/1) Detected: localhost: ubuntu 18.04 [Feb 27 19:44:12]  INFO [localhost] Detecting OS of containers... [Feb 27 19:44:12]  INFO [localhost] Checking Scan Modes... [Feb 27 19:44:12]  INFO [localhost] Detecting Platforms... [Feb 27 19:44:12]  INFO [localhost] (1/1) localhost is running on other [Feb 27 19:44:12]  INFO [localhost] Scanning vulnerabilities... [Feb 27 19:44:12]  INFO [localhost] Scanning vulnerable OS packages... [Feb 27 19:44:12]  INFO [localhost] Scanning in fast mode   One Line Summary ================ localhost       ubuntu18.04     537 installed   To view the detail, vuls tui is useful. To send a report, run vuls report -h.

Nó đã ghi lại những gì làm ở quá trình trên để xem được kết quả

vuls tui
  • Number 1 : Liệt kê các máy mà vuls đã scan
  • Number 2 : Liệt kê danh sách các lỗ hỏng được tìm thấy trong cài đặt
  • Number 3 : Hiển thị thông tin chi tiết về lỗ hỏng được lấy từ DB
  • Number 4 : Các gói bị ảnh hưởng và phiên bản của nó
  • Sử dụng tab hoặc là enter để di chuyển con trỏ sang các bảng.

7. Cấu hình scan nhiều máy

Đăng nhập vào remote server(vuls-client) và cài đặt

sudo apt install debian-goodies -y

Quay về trở về máy cài đặt vuls thêm nội dung vào file /usr/share/vuls-data/config.toml

[servers.target_name] host = "target_ip" port = "22" user = "account_username" keyPath = "account_rsa_key" scanMode = [ "deep" ] # "fast", "fast-root" or "deep"

Trong đó:

  • target_name : Tên muốn hiển thị cho remote-server
  • target_ip : IP của remote-server
  • port : port dùng để ssh
  • user : user muốn sử dụng để scan
  • keyPath : đường dẫn tới key ssh. Do vuls không hỗ trợ ssh bằng password
  • scanmode : Chế độ muốn scan

Cấu hình của tôi

[servers.vuls-client] host = "10.10.34.133" port = "22" user = "root" keyPath = "/root/.ssh/id_rsa" scanMode = [ "deep" ] # "fast", "fast-root" or "deep"

Chạy thử lệnh scan

8. Cài đặt scan và report cho slack

Để làm được bước này hãy tạo slack và cài đặt Incoming Webhooks

Thêm nội dung vào file /usr/share/vuls-data/config.toml

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

Trong đó :

  • your_hook_url : là địa chỉ URL của webhook
  • #your_channel_name : Tên kênh mà bạn muốn gửi đến
  • your_username : Tên user tạo ra kênh đó

Kiểm tra xem đã kết nối được tới slack bằng cách gửi tao cáo tới slack.

sudo vuls report -to-slack

Lên kênh của slack để check

Sau đó có thể dùng crontab để có thể chạy được lệnh scan và report theo như lịch trình bạn muốn

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

Trong đó :

  • Ví dụ trên chạy 12h hằng ngày
  • Nó sẽ scan; và report tới file config.toml

Ta có thể thực hiện bằng crontab hoặc là chạy bằng lệnh report như trên tôi đã làm để gửi báo cáo tới slack nhé. Chúc các bạn thành công !

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

Cài đặt phpMyAdmin sử dụng Nginx trên CentOS 7

Cài đặt 1. Trong kho lưu trữ repositories của RHEL 7.0 hoặc CentOS 7.0 không cung cấp gói cài đặt PhpMyAdmin,...
25/12/2020

Brute force password sử dụng medusa

Medusa là một công cụ được dùng để tấn công brute force password cố gắng truy cập hệ thống từ...
30/12/2020

Jitsi [Part 5] – Hướng dẫn tích hợp Jitsi LDAP

Mặc định, Jitsi cho phép bất cứ ai cũng có thể sử dụng. Vậy nếu bạn là một tổ chức, một...
30/12/2020