『OpenCVE 是追蹤 CVE 更新並收到新漏洞警報的最簡單方法。』-OpenCVE 官網說的
OpenCVE官網: https://www.opencve.io/welcome
OpenCVE 是一個開源的 CVE 預警平台(CVE Alerting Platform),讓你可以在本地端架設自己私有的CVE漏洞資料庫。
OpenCVE 與 NVD 來源同步,因此每個 CVE 都會顯示標準的弱點資訊(CVE、CWE、CPE、CVSS)。它也會儲存 CVE 的完整歷史記錄,從建立日期到最後一次變更(新增新的 CPE、變更 CVSS 分數...)。
你可以透過該服務在整個 CVE 列表中進行搜尋,並根據需求過濾結果:按供應商、產品、CVSS 或 CWE。也可以建立自己的標籤(未讀、重要、開發團隊...)來進行管理和追蹤。該服務也有整合訂閱機制,可以透過針對特定供應商或產品訂閱,當訂閱清單有 CVE 新出現或更時,OpenCVE 會向你設定的郵件發送通知。
其實 OpenCVE 是個非常單純的服務,它就是把 NVD 的 CVE 資料庫來源給同步一份到你的私有空間,然後幫你做好了一些篩選、標籤、通知的服務。該服務裡面的內容其實也都是公開資料,如果不談及訂閱與標籤的話,服務裡面的內容是沒有機敏資訊的。
特色:
如果想先看看 OpenCVE 長甚麼樣子
用起來是甚麼樣子
官方也有 Online demo 的服務可以讓你用看看
https://www.opencve.io/cve
OpenCVE的架設,可以在主機上安裝
也可以利用 docker-compose 進行架設
這邊流程我是利用 docker 架設
雖然它整個服務有不同的組件,但主要就是讀取同一個設定檔案而已
這邊架設過程其實有一點坑,如果你不想跟著操作 Debug,也可以看完全文才安裝
# Docker 安裝步驟
# 拉取 Github code 並且構建 Dockerfile
git clone https://github.com/opencve/opencve-docker.git
cd opencve-docker/
git checkout v1.4.1
cp ./conf/opencve.cfg.example ./conf/opencve.cfg
cd conf/
# 如果需要修改設定檔資訊在這個步驟修改
vim opencve.cfg
cd ..
sudo docker-compose build
sudo docker-compose up -d postgres redis webserver celery_worker
# 開始初始化CVE資料,這步驟會需要一段時間
sudo docker exec -it webserver opencve upgrade-db
sudo docker exec -it webserver opencve import-data
# 這個步驟是建立使用者帳號密碼. (先建立一個admin帳號)
# 帳號:密碼 hackercat:myPassword
# 信箱 hackercat@fake.org
sudo docker exec -it webserver opencve create-user hackercat hackercat@fake.org --admin
sudo docker-compose up -d celery_beat
上面 vim opencve.cfg 的階段,官方建議更新下列參數
上面的步驟我是先修改監聽的 IP 跟 secret_key 而已
以上流程完成之後,應該服務就成功啟動了
可以檢查看看容器都有正常運作
也可以用以下指令檢查 Webserver 有監聽
netstat -antup | grep 8000
有成功架設 Server,但連線過去發現內容有問題
直接打開瀏覽器查看就會發現轉址到的地方都會是無法連線或 404
查了一下,可以看到原始碼的 src 全部去抓 0.0.0.0 的資料,所以抓不到
這個網路上也有其他人遇過,別人留言建議的解法是
把設定檔 opencve.cfg 裡面的 server_name 設為空值即可
這個 opencve.cfg 是被 bind mount 的
所以修改主機上的,容器內的也會被修改
可以直接改主機上面的檔案
實際上我們修改成空值之後
[core]
; The name and the port of OpenCVE server. Change it if you launch the
; webserver with a different value (ie opencve webserver -b 0.0.0.0:80).
server_name =
重啟容器
docker-compose restart
是可以讓 Web 正常運作
服務看起來很正常,世界多麼美好,空氣多麼清新
但其實這邊有個坑要提醒一下大家
網路上會看到有人建議留空的方式
這樣其實看起來是可以正常運作的
網站瀏覽都沒問題
但實際上會有問題,這樣是沒辦法正常寄信的
OpenCVE 有一個寄信通知的功能
如果你要使用到這個功能,Maybe 就不能用這種方式修補
其實查看 Server log 也會發現剛剛的方式有顯示問題
所以我們要改成使用給定的 IP
不要使用 0.0.0.0,我們用 LAN 端的 IP
這邊我直接使用
[core]
; The name and the port of OpenCVE server. Change it if you launch the
; webserver with a different value (ie opencve webserver -b 0.0.0.0:80).
server_name = 192.168.101.142:8000
docker-compose restart
這樣我們就可以讓服務正常運作也可以正常寄信了
(記得要在 opencve.cfg 配置你的 SMTP 資訊)
; Configuration to set up SMTP mails.
smtp_server = <your_smtp_server>
smtp_port = 465
smtp_use_tls = True
smtp_use_ssl = False
smtp_username = <your_username>
smtp_password = <your_password>
然後 OpenCVE 預設情況是 15 分鐘會去檢查一次更新
celery_beat 會定期去更新
我們可以查看 Logs 看一下有沒有正常的運行
A periodic task is scheduled every 15 minutes to check the new changes