+5

Bài 9 : Cài đặt vuls (vulnerability scanner) quét các lỗ hổng và các phần miềm dịch vụ của các máy chủ trong cụm microk8s

Một ngày đẹp trời, tự nhiên máy chủ bị hack và chúng ta bị đuổi vì làm mất dữ liệu, hoặc hệ thống sập vì mấy bạn hacker, để phòng chống và ngăn ngừa thì chúng ta cần biết máy chủ của bạn có đang bị lỗ hổng, hay cần cập nhật bản vá lỗi gì không

Các khái niệm

  • Đối với một quản trị viên hệ thống, phải thực hiện phân tích lỗ hổng bảo mật và cập nhật phần mềm hàng ngày có thể là một gánh nặng. Để tránh thời gian chết trong môi trường sản xuất, thông thường các quản trị viên hệ thống chọn không sử dụng tùy chọn cập nhật tự động được cung cấp bởi trình quản lý gói của họ và thay vào đó thực hiện cập nhật thủ công. Điều này dẫn đến các vấn đề sau đây.
  1. Quản trị viên hệ thống cần liên tục theo dõi NVD (National Vulnerability Database - Cơ sở dữ liệu về lỗ hổng quốc gia) hoặc các cơ sở dữ liệu tương tự để tìm các lỗ hổng mới.
  2. Quản trị viên hệ thống có thể không giám sát được tất cả phần mềm nếu có một số lượng lớn các gói được cài đặt trên máy chủ.
  3. Thật tốn kém khi thực hiện phân tích để xác định các máy chủ bị ảnh hưởng bởi các lỗ hổng mới. Khả năng nhìn ra một hoặc hai máy chủ trong quá trình phân tích là có.
  • Vuls (vulnerability scanner) là một công cụ được tạo ra để giải quyết các vấn đề được liệt kê ở trên. Nó có các đặc điểm sau đây.
    1. Thông báo cho người dùng về các lỗ hổng liên quan đến hệ thống.
    2. Thông báo cho người dùng về các máy chủ bị ảnh hưởng
    3. Phát hiện lỗ hổng được thực hiện tự động để ngăn chặn bất kỳ sự giám sát nào.
    4. Báo cáo được tạo thường xuyên bằng CRON hoặc các phương pháp khác để quản lý lỗ hổng image.png

Các tính năng chính

  • Vuls cung cấp một cách tự động hóa lỗ hổng cho các gói Linux
  • Vuls có thể được cài đặt trên tất cả các phân phối dựa trên Linux chẳng hạn: - Linux, Ubuntu, Debian, FreeBSD, Centos, Solaris, v.v.
  • Vuls có khả năng quét nhiều hệ thống tại một thời điểm bằng cách sử dụng giao thức SSH và gửi báo cáo qua Slack hoặc Email.
  • Vuls sử dụng ba chế độ quét nhanh, gốc nhanh và sâu bạn có thể chọn theo tình huống hoặc theo yêu cầu của bạn.
  • Scan results can be Viewed by using TUI (Terminal user interface) and GUI (Graphical user interface).
  • Khi tạo báo cáo, Vuls ưu tiên các lỗ hổng mức độ nghiêm trọng cao bằng cách sử dụng hệ thống xếp hạng được thiết lập từ cơ sở dữ liệu.

Hướng dẫn

Danh sách các máy chủ

IP Hostname vCPU RAM DISK
127.0.0.1 Host 8 core 32G SSD 500G
192.168.56.2 microk8s-master-1 1 core 2G 50G
192.168.56.3 microk8s-master-2 1 core 2G 50G
192.168.56.4 microk8s-master-3 1 core 2G 50G
192.168.56.5 microk8s-worker-1 1 core 2G 50G
192.168.56.6 microk8s-worker-2 1 core 2G 50G
192.168.56.7 microk8s-worker-3 1 core 2G 50G
192.168.56.8 microk8s-worker-4 1 core 2G 50G

Sơ đồ cài đặt

vuls-host-client.drawio.png

Cài đặt

Cài bằng vulsctl trên host

Bước 1: Kéo code install về bằng lệnh

git clone https://github.com/vulsio/vulsctl

Screenshot 2023-03-02 at 14.32.28.png

Bước 2: Chạy lệnh cài đặt

sudo bash vulsctl/install-host/install.sh 

Screenshot 2023-03-02 at 14.36.10.png

Bước 3: Tìm nạp tất cả cơ sở dữ liệu

cd  vulsctl/install-host/
sh update-all.sh 

Chổ này chạy hơi lâu các bạn vui lòng đợi nhé

Screenshot 2023-03-02 at 14.46.43.png

Screenshot 2023-03-02 at 14.50.40.png

Screenshot 2023-03-02 at 15.26.06.png

Bước 4: coppy config.toml.localscan -> config.toml

cd ..
cp config.toml.localscan config.toml

Screenshot 2023-03-02 at 15.33.33.png

Bước 5: Scan test local

vuls scan

Screenshot 2023-03-02 at 15.34.31.png

Tạo report

vuls report

Screenshot 2023-03-02 at 15.37.58.png

Khởi động lại máy

sudo reboot

sau đó ta dùng lệnh vuls tui để xem máy có lỗi hổng bảo mật gì không

vuls tui

Screenshot 2023-03-02 at 15.45.21.png

Như vậy máy chủ host đang không có vấn đề về các lỗ hổng của hệ điều hành

Cài đặt Web UI (VulsRepo)

Bước 1: git clone

cd $HOME && git clone https://github.com/ishiDACo/vulsrepo.git

Screenshot 2023-03-02 at 15.54.02.png

Bước 2. Thay đổi cài đặt của vulsrepo-server

mkdir /opt/vuls/
mkdir /opt/vuls/results

cd $HOME/vulsrepo/server
cp vulsrepo-config.toml.sample vulsrepo-config.toml
vi vulsrepo-config.toml
[Server]
rootPath = "/root/vulsrepo"
resultsPath  = "/opt/vuls/results"
serverPort  = "5111"

Screenshot 2023-03-02 at 15.55.47.png

Bước 3. Bắt đầu máy chủ vulsrepo

Chạy vulsrepo bằng lệnh

./vulsrepo-server

Screenshot 2023-03-02 at 16.06.09.png

Bây giờ ta vào trình duyệt để test http://127.0.0.1:5111

Screenshot 2023-03-02 at 16.06.42.png

Như vậy ta đã thành công cài vulsrepo

Bước 4: Luôn kích hoạt vulsrepo-server

Sao chép tập tin khởi động. Thay đổi nội dung theo môi trường.

sudo cp $HOME/vulsrepo/server/scripts/vulsrepo.service /lib/systemd/system/vulsrepo.service
sudo vi /lib/systemd/system/vulsrepo.service

Screenshot 2023-03-02 at 16.11.14.png

Đặt để bắt đầu tự động

sudo systemctl enable vulsrepo

Bắt đầu máy chủ vulsrepo

systemctl daemon-reload
sudo systemctl start vulsrepo

Kiểm tra trạng thái vulsrepo

sudo systemctl status vulsrepo

Screenshot 2023-03-02 at 16.12.31.png

Chế độ quét từ xa

Bước 1. Khởi chạy Ubuntu Linux mới

  • Khởi chạy một thiết bị đầu cuối mới và SSH đến Máy chủ từ xa.
  • Để thêm Khóa máy chủ của máy chủ từ xa vào $HOME/.ssh/known_hosts, bạn cần đăng nhập vào máy chủ từ xa thông qua SSH trước khi quét.

Bước 2. Cho phép SSH từ máy chủ Host

Tạo ssh bằng lệnh

ssh-keygen -t rsa

Screenshot 2023-03-02 at 16.21.53.png

view ssh key bằng lệnh

cat ~/.ssh/id_rsa.pub 

Screenshot 2023-03-02 at 16.22.45.png

Lấy ssh key public ở đây

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCWwkMB/jFQgxUnpt9oamS9YUBrP15i6Z9eVn6oeu4y9PN5QUm9KQWFfr+8TFJikEpXgnAzI789t17/Os8qA/dOLoGGSZ9JutgU93KPgoCRIpSEBfQdDE5+jNJsWJMqgEpDFep5+h4JZzkwjzWEiCUWc04MJsBlh/GdyfUPdoTGGZ/SYEi4t8KBAT4ZvFfJyVStJhS1mYZLxh2BgjDRFM8glJAPfCOJpiMWg+D/oYocU261nu3QJJI1dr34KLeNXW4Iy6wHViIDC0iNSl7ZrvmN/Un1E78y7+hOjm5LYxQ026oRfNaMdlWBfEGoB9txjI2DwHF9ja7u5Np+DikPs/rYCY28HsUv7+ztqCgqylp2F2840TP21TmBIOqLbR76ISYiHOOyNqtw9EHqjkXGomD61zlEHrZegLUrpgd3Gcx3xGTVGlOH0znmQj+Y643r/+J/FthFpd5GUFka46DBWkItHgIny2kPY99hNOm3Zlz+77ze50YGsPwDnW44uv7HUm0= root@jenkins-server

Bước 3: ở các máy cần scan, ở đây là các máy microk8s-master-01, microk8s-master-02, microk8s-master-03, microk8s-worker-01, microk8s-worker-02, microk8s-worker-03, microk8s-worker-04, microk8s-worker-05

Thực hiện các lệnh sau ở tất cả máy chủ cần scan

mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
nano  ~/.ssh/authorized_keys

Dán ssh key public vào ~/.ssh/authorized_keys

Screenshot 2023-03-02 at 16.30.27.png

Và ngoài ra, xác nhận rằng các khóa máy chủ của các máy chủ đích quét đã được đăng ký trong các host đã biết của máy Host

ssh ubuntu@192.168.56.2 -i ~/.ssh/id_rsa
ssh ubuntu@192.168.56.3 -i ~/.ssh/id_rsa
ssh ubuntu@192.168.56.4 -i ~/.ssh/id_rsa
ssh ubuntu@192.168.56.5 -i ~/.ssh/id_rsa
ssh ubuntu@192.168.56.6 -i ~/.ssh/id_rsa
ssh ubuntu@192.168.56.7 -i ~/.ssh/id_rsa

Tiếp theo cập nhật file config.toml

nano config.toml
[servers]

[servers.localhost]
host               = "127.0.0.1"
port               = "local"
scanMode           = ["fast"]

[servers.microk8s-master-01]
host        = "192.168.56.2"
port        = "22"
user        = "ubuntu"
scanMode    = ["fast-root"]
keyPath     = "/root/.ssh/id_rsa"

[servers.microk8s-master-02]
host        = "192.168.56.3"
port        = "22"
user        = "ubuntu"
scanMode    = ["fast-root"]
keyPath     = "/root/.ssh/id_rsa"

[servers.microk8s-master-03]
host        = "192.168.56.4"
port        = "22"
user        = "ubuntu"
scanMode    = ["fast-root"]
keyPath     = "/root/.ssh/id_rsa"

[servers.microk8s-worker-01]
host        = "192.168.56.5"
port        = "22"
user        = "ubuntu"
scanMode    = ["fast-root"]
keyPath     = "/root/.ssh/id_rsa"

[servers.microk8s-worker-02]
host        = "192.168.56.6"
port        = "22"
user        = "ubuntu"
scanMode    = ["fast-root"]
keyPath     = "/root/.ssh/id_rsa"


[servers.microk8s-worker-03]
host        = "192.168.56.7"
port        = "22"
user        = "ubuntu"
scanMode    = ["fast-root"]
keyPath     = "/root/.ssh/id_rsa"


[servers.microk8s-worker-04]
host        = "192.168.56.8"
port        = "22"
user        = "ubuntu"
scanMode    = ["fast-root"]
keyPath     = "/root/.ssh/id_rsa"

sau đó ta sử dụng lệnh vuls scan để scan

vuls scan

Screenshot 2023-03-02 at 16.59.31.png

Như vậy ta đã cài đạt thành công quyets các máy chủ từ xa

Screenshot 2023-03-02 at 17.25.16.png

Chúng ta vào giao diện web để xem các lỗ hổng

Đang cập nhật

Quét docker image

Quét các lỗ hổng của các gói không phải hệ điều hành

Quét cổng bằng máy quét cổng ngoài


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí