OpenVAS 架設與管理

OpenVAS 算是蠻有名的弱點掃瞄軟體啦!而且,是免費的。下面就來寫寫安裝過程、設定及掃描

系統安裝
依照官方的快速安裝說明,直接安裝就可以了,非常的快速,不過,更新資料需要等一段時間

第一步:設定 Atomicorp Repository」(就是在系統的 yum 中加裝 Atomicorp 的 repo 檔)
(使用 root,只需執行一次)

wget -q -O - http://www.atomicorp.com/installers/atomic |sh

第二步:快速安裝 OpenVAS
(使用 root,只需執行一次)

yum upgrade
yum install openvas
openvas-setup

第三步:快速啟動 OpenVAS
(什麼事都不用做,所有的動作於安裝後自動執行)

第四步:登入 OpenVAS 使用第二步驟所產生的帳號
開啟 https://localhost:9392
註:開 80 port 也是可以,會自動轉址

這一段安裝流程,最長的就是 SCAP 檔案更新 towns 花了兩天的時間
註1:可以中斷更新,在重新開機後,等 OpenVAS Manager(openvassd) 啟動完成後,再執行 openvas-setup
註2:可以使用 ps aux |grep openvassd 看到重新載入 NVTs 情形
註3:OpenVAS 使用 rsync 方式同步資料,是走 TCP/873,所以在防火牆上的設定需開放 873 Port

以上四個步驟完成後,就可以開始執行弱點掃瞄了


指令說明

在說明指令前,有幾個名詞需要知道
targetid:設備編號。給設備一個唯一的編號(不過,一個編號不見得只能放一個設備)
taskid:掃描工作編號。
reportid:報表編號
formatid:報表格式編號
configid:掃描模式的ID

-------------------------------------------------------------------------------------------------

openvas-cli 指令

openvas-setup
自動安裝與設定指令。這個指令只有有安裝 openvas-cli-1.4.4-10.el7.art.x86_64,套件時才會出現,如果使用 epel 來安裝,就沒這個指令了

-------------------------------------------------------------------------------------------------

openvas-check-setup --v8
安裝測試指令,檢查版本 8。這個指令會一步一步測試所有設定是否正常,並告之管理人如何處理錯誤

註:這個工具已經停止維護了,所以,安裝完 OpenVAS,是不會有這個工具的

參考資料:
greenbone 討論串
https://community.greenbone.net/t/where-can-i-download-openvas-check-setup/936

-------------------------------------------------------------------------------------------------

omp
文字介面指令。手動執行掃描的指令,所有的建置都自己來

指令使用建立新的 targetID
omp -u test -w ****** --xml='<create_target><name>webserver</name><hosts>192.168.1.100</hosts><comment></comment></create_target>'
-u 使用者、-w 密碼 --xml 使用 xml 格式建立 targetID 資訊

回應
<create_target_response id="********-****-****-****-************" status_text="OK, resource created" status="201"></create_target_response>

刪除一個 target ID
omp -u test -w ****** --xml='<delete_target target_id="********-****-****-****-************"/>'
補充1:多台主機可用 - ,如 10.120.0.101-102

列出目前有多少個 targetID
omp -u test -w ****** -T

回應
********-****-****-****-************  Localhost
********-****-****-****-************  webserver

補充1:如果沒有建立新的 targetID 就只會出現 Localhost 這一個
補充2:如果要修改 target 中的內容,必需先刪除其下的 Task ID

-------------------------------------------------------------------------------------------------

建立掃描的工作 taskID

取得 configID。建立 taskID 時,需要使用 ConfigID,來確認掃瞄模式
omp -u test -w ****** -g
8715c877-47a0-438d-98a3-27c7a6ab2196  Discovery
085569ce-73ed-11df-83c3-002264764cea  empty
daba56c8-73ec-11df-a475-002264764cea  Full and fast
698f691e-7489-11df-9d8c-002264764cea  Full and fast ultimate
708f25c4-7489-11df-8094-002264764cea  Full and very deep
74db13d6-7489-11df-91b9-002264764cea  Full and very deep ultimate
2d3f051c-55ba-11e3-bf43-406186ea4fc5  Host Discovery
bbca7412-a950-11e3-9109-406186ea4fc5  System Discovery

方式一:新增掃瞄工作
omp -u test -w ****** --xml='<create_task><name>test</name><comment></comment><config id="daba56c8-73ec-11df-a475-002264764cea"/><target id="********-****-****-****-************" /></create_task>'

回應
<create_task_response id="f905ec79-5a4f-416d-9ffa-447bca9956ec" status_text="OK, resource created" status="201"></create_task_response>

方式二:新增掃瞄工作
omp -u test -w abcd1234 -C -n test -m -c daba56c8-73ec-11df-a475-002264764cea -t ********-****-****-****-************

回應
f905ec79-5a4f-416d-9ffa-447bca9956ec

刪除 Task ID
omp -u test -w ****** -D f905ec79-5a4f-416d-9ffa-447bca9956ec
omp -u test -w ****** --xml='<delete_task task_id="f905ec79-5a4f-416d-9ffa-447bca9956ec"/>

取得目前掃瞄狀態
omp -u test -w ****** -G

回應
f905ec79-5a4f-416d-9ffa-447bca9956ec    Done           test
補充:第一欄為 Task ID,第二欄為狀態,有New、Running、Stopped、Requested、Done

方式一:啟動掃瞄工作
omp -u test -w ****** --xml='<start_task task_id="f905ec79-5a4f-416d-9ffa-447bca9956ec" />'

回應
<start_task_response status_text="OK, request submitted" status="202"><report_id>b611f9b9-4f75-48aa-a220-0897c16f5bf6</report_id></start_task_response>

方式二:啟動掃瞄工作
omp -u test -w ****** -S 073bded1-5f68-42a0-b0e3-ee111c55a2b6

回應
b611f9b9-4f75-48aa-a220-0897c16f5bf6

暫停掃瞄工作
omp -u test -w ****** --xml='<stop_task task_id="f905ec79-5a4f-416d-9ffa-447bca9956ec" />'

回復掃瞄工作
omp -u test -w ****** --xml='<resume_or_start_task task_id="f905ec79-5a4f-416d-9ffa-447bca9956ec" /></start_task>'

刪除掃描工作(刪除Task ID)
omp -u test -w ****** -D f905ec79-5a4f-416d-9ffa-447bca9956ec
omp -u test -w ****** --xml='<delete_task task_id="f905ec79-5a4f-416d-9ffa-447bca9956ec"/>

-------------------------------------------------------------------------------------------------

取得報告

方式一:取得報告格式(report ID)
omp -u test -w ****** --xml='<get_report_formats />'
跳出一大串 xml 語法,不太容易看出來

方式二:取得報告格式(report ID)
omp -u test -w ****** -F

回應
6c248850-1f62-11e1-b082-406186ea4fc5  HTML
c402cc3e-b531-11e1-9163-406186ea4fc5  PDF
a3810a62-1f62-11e1-9219-406186ea4fc5  TXT
a994b278-1f62-11e1-96ac-406186ea4fc5  XML

一共有15項,第一欄就是 Report Format ID,第二欄為格式。towns 只列出常用的項目

方式一:匯出報告
omp -u test -w ****** --xml='<get_report report_id="b611f9b9-4f75-48aa-a220-0897c16f5bf6" format_id="6c248850-1f62-11e1-b082-406186ea4fc5"/>' >/home/towns/rpms/test.html

方式二:匯出報告
omp -u test -w ****** -R b611f9b9-4f75-48aa-a220-0897c16f5bf6 -f 6c248850-1f62-11e1-b082-406186ea4fc5 >/home/towns/rpms/test.html

取得報告ID(Report ID)
omp -u test -w ****** -G f905ec79-5a4f-416d-9ffa-447bca9956ec

回應
a310b8ff-40a9-4264-b61a-0a6d11312de5  Done         web_test
  8ab3c1bd-4cc1-4a4a-8a13-474c9484b2b1  Done      3   9   4  87  2016-10-28T16:39:09+08:00
  0843b9d3-3b08-4fd8-9cd9-7ae6162e377c  Done      3   7   4  80  2016-11-03T11:43:05+08:00
下面兩段的第一欄就是 Report ID

刪除報告
omp -u test -w ****** -E 8ab3c1bd-4cc1-4a4a-8a13-474c9484b2b1
omp -u test -w ****** --xml='<delete_report report_ID"8ab3c1bd-4cc1-4a4a-8a13-474c9484b2b1" />'

補充:當 report ID 被刪光後,該 task 狀態又會變為 New,所以要重新掃瞄後,才會出現新的 Report ID

-------------------------------------------------------------------------------------------------

建立使用者
建立使用者是指建立 Manager 中的帳號,依上述安裝流程安裝,在過程中就會請管理人建立帳號了,一般不會使用到這個指令
openvasmd --create-user=<name> --role=Admin && openvasmd --user=<name> --new-password=<password>

查詢目前有哪些使用者
openvasmd --get-users

查詢目前有哪些掃瞄器
openvasmd --get-scanners

憑證產生指令。當這台主機有開放對外使用時,就需要使用這個工具了
openvas-mkcert <== server 端憑證
openvas-mkcert -f <== 同上
openvas-macert-client <== client 端憑證
openvas-macert-client -n -i <== 非互動建立並安裝 client 端憑證
openvas-mkcert-client -i -n om <== 同上

修改掃瞄器使用的公私鑰(當發生過私鑰過期時,就會用到了)
openvasmd --modify-scanner <uuid> --scanner-ca-pub <cacert> --scanner-key-pub <clientcert> --scanner-key-priv <clientkey>

-------------------------------------------------------------------------------------------------

其他相關指令

檢查 OpenVAS Scanner(openvassd) 及 Manager(openvasmd)是否正常開啟
ps aux |grep open
注意1:openvassd 及 openvasmd 是否有啟動
注意2:openvassd 後面的文字如果後面出現的是 Reloaded,表示正在重新載入資料庫,直到變成 Waiting for……,表示完成,這時下面的測試才會正常

檢查網頁介面是否正常開啟
ps aux |grep gsad

檢查連接埠及其應用程式
netstat -tlnp
openvasmd 預設會開啟 IPv6 9390
openvassd 預設會開啟 9391
gsad 預設會開啟 9392 及 80

統計 nvts 數量是否正常。正常情形應該有近5萬筆資料,不過,必需要安裝 uuid 套件
sqlite3 /var/lib/openvas/mgr/tasks.db "select count(*) from nvts"

檢查 plugins 中檔案的 md5sum。正常來說,應該要每一個都 OK,否則就是 nvt 檔來源不明或弱點資料庫的檔案遭篡改
cd "/var/lib/openvas/plugins" ; /usr/bin/md5sum -c "/var/lib/openvas/plugins/md5sums" | less

補充:這些動作最好是在開機10分鐘後操作


OpenVAS 套件

openvas-cli-1.4.4-10.el7.art.x86_64
文字介面工具。只有一個檔案
/usr/bin/omp

openvas-1.0-22.el7.art.noarch
僅有四支程式。主要功能為資料更新寫入排程、測試安裝設定及安裝設定的批次檔
/etc/cron.d/openvas-sync-cert
/etc/cron.d/openvas-sync-scap
/usr/bin/openvas-check-setup
/usr/bin/openvas-setup

openvas-manager-6.0.9-36.el7.art.x86_64
OpenVAS 管理程式。接收 cli 端發出的 O.M.P 指令,並與 O.T.P 溝通,檔案內容有 Manager 主要設定檔、同步更新批次檔及主程式
/etc/logrotate.d/openvas-manager
/etc/openvas/openvasmd_log.conf
/etc/openvas/pwpolicy.conf
/etc/sysconfig/openvas-manager
/usr/lib/systemd/system/openvas-manager.service
/usr/sbin/greenbone-certdata-sync
/usr/sbin/greenbone-scapdata-sync
/usr/sbin/openvas-certdata-sync
/usr/sbin/openvas-migrate-to-postgres
/usr/sbin/openvas-portnames-update
/usr/sbin/openvas-scapdata-sync
/usr/sbin/openvasmd

openvas-scanner-5.0.7-25.el7.art.x86_64
掃瞄主套件。內含憑證設定檔、nvt 同步及主程式
/etc/cron.d/openvas-sync-plugins
/etc/logrotate.d/openvas-scanner
/etc/openvas
/etc/openvas/gnupg
/etc/openvas/openvassd.conf
/etc/sysconfig/openvas-scanner
/usr/bin/openvas-mkcert-client
/usr/sbin/greenbone-nvt-sync
/usr/sbin/openvas-mkcert
/usr/sbin/openvas-nvt-sync
/usr/sbin/openvas-nvt-sync-cron
/usr/sbin/openvassd

openvas-libraries-8.0.8-25.el7.art.x86_64
scanner 的資料庫
/usr/bin/openvas-nasl
/usr/bin/openvas-nasl-lint

greenbone-security-assistant-6.0.11-27.el7.art.x86_64
網頁介面
/etc/logrotate.d/gsad
/etc/openvas/gsad_log.conf
/etc/sysconfig/gsad
/usr/lib/systemd/system/gsad.service
/usr/sbin/gsad

補充:其他需求套件
uuid、libxslt、libmicrohttpd、redis、sqlite、nmap(選用)、texlive(PDF套件、選用)、mingw32-nsis(選用)、alien(選用)


路徑說明

雖然說 OpenVAS 的設定及測試非常容易,不過,有些路徑、檔案還是知道一下比較好

各資料檔案同步設定。使用官方的自動安裝,這都會自動出現
/etc/cron.d/openvas-sync-cert
/etc/cron.d/openvas-sync-scap
/etc/cron.d/openvas-sync-plugins

各套件設定檔
manager 相關設定檔
/etc/logrotate.d/openvas-manager <== log 的輪替設定檔
/etc/openvas/openvasmd_log.conf <== log 設定檔,含等級、路徑、格式
/etc/openvas/pwpolicy.conf <== 密碼規則設定檔。可以強制要求密碼格式,預設為關閉
/etc/sysconfig/openvas-manager <== 加參數的檔案。預設為空值

scanner 相關設定檔
/etc/logrotate.d/openvas-scanner <==  log 的輪替設定檔
/etc/openvas/gnupg <== GPG 簽章資料存放處
/etc/openvas/openvassd.conf <== 設定檔
/etc/sysconfig/openvas-scanner <== 加參數的檔案。

greenbone-security-assistant(網頁介面)相關設定
/etc/logrotate.d/gsad <==  log 的輪替設定檔
/etc/openvas/gsad_log.conf <==  log 設定檔
/etc/sysconfig/gsad <== 加參數的檔案。預設可看到 IP 及 Port 設定

資料路徑
/var/lib/openvas/CA/ <== 憑證公鑰存放處
/var/lib/openvas/cert-data/ <== cert 檔案存放處
/var/lib/openvas/gnupg/ <== GPG 簽章資料存放處/var/lib/openvas/mgr/ <== 資料庫檔案存放處
/var/lib/openvas/plugins/ <== NVT 檔案存放處。
/var/lib/openvas/private/ <== 憑證私鑰存放處
/var/lib/openvas/scap-data/ <== scap 檔案存放處 

使用者資料路徑
/var/lib/openvas/users/


名詞說明

NVT:Network Vulnerabillity Test。網路弱點測試檔
檔案存放於 /var/lib/openvas/plugins/ 中,nasl 為設定檔,asc 為指紋驗證檔
註:在這個路徑中可以看到大量應用程式的資料

cert:towns 不是很清楚這是什麼檔案,不過依 xml 內容來看,他與 CVE 有關(Computer Emergency Readiness Team)
檔案存放於 /var/lib/openvas/cert-data/ 中,xml 為**檔,asc 為指紋驗證檔
註:檔案中會連到 https://www.dfn-cert.de/ 這個網站取資料

scap:towns 不是很清楚這是什麼檔案,不過依 xml 內容來看,他與 CVE 有關(Security Content Automation Protocol)
檔案存放於 /var/lib/openvas/scap-data/ 中 xml 為**檔,asc 為指紋驗證檔 
註:檔案中會連到 https://scap.nist.gov/ 這個網站取資料


憑證問題

如果使用指令產生憑證,預設有效時間為365天,所以在365天後,會出現 Service temporarily down 這樣的問題,這時就需要重建憑證了,新憑證可以使用 openvas-mkcert -f,產生新的 server 憑證,openvas-mkcert-client -i -n om 產生 client 憑證
註:如果在互動過程中有注意,在建立 server 端憑證時,可以設定更長的到期時間。

錯誤訊息
建立新掃描會出現 Service temporarily down 錯誤

在 /var/log/openvas/openvasmd.log 中可以看到以下兩個錯誤
lib  serv:WARNING:2017-12-15 09h53.33 utc:13019:    Failed to gnutls_bye: GnuTLS internal error.
lib  serv:WARNING:2017-12-15 09h57.07 utc:13984: Failed to shake hands with peer: The TLS connection was non-properly terminated.

處理流程
1. 重新產生 server、client 憑證
openvas-mkcert -f
openvas-mkcert-client -i -n(或 openvas-mkcert-client -i -n om)
檢查 /var/lib/openvas/CA/*.pem 及 /var/lib/openvas/private/CA/*.pem 檔,檔案時間是否變更

2. 修改 scanner 讀取金鑰
使用指令 openvasmd --modify-scanner <uuid> --scanner-ca-pub <cacert> --scanner-key-pub <clientcert> --scanner-key-priv <clientkey>
 1. uuid,使用 openvasmd --get-scanners 取得(通常只有一個)
 2. cacert,/var/lib/openvas/CA/cacert.pem
 3. clientcert,Default: /var/lib/openvas/CA/clientcert.pem
    /var/lib/openvas/CA/servercert.pem <== towns 使用這個檔案
 4. clientkey,Default: /var/lib/openvas/private/CA/clientkey.pem
    /var/lib/openvas/private/CA/serverkey.pem <== towns 使用這個檔案
這是由 b651108.lee 大的文章中截錄出來的,但 towns 有些問題,就是 clientcert 及 clientkey b651108.lee 大是使用 servercert.pem 及 serverkey.pem,有點奇怪!

3. 重啟服務
/etc/init.d/openvasmd restart
/etc/init.d/openvassd restart

這個流程有很多寫法,最完整的方式應該是 bisser.todorov大 所寫的內容


手動更新 cert、scap、plugins

如果使用套件安裝方式,通常在 /etc/cron.d/ 中會自動寫入更新排程並每日更新,但如果使用 OSSIM 這個整合套件,好像不會自動更新,需要手動更新或自行寫入 cron.d 下

towns 執行流程
1. 停止 openvasmd、openvassd

2. 下更新指令
openvas-nvt-sync
openvas-certdata-sync
openvas-scapdata-sync
openvas-sync-plugins

3. 啟動 openvasmd、openvassd

4. 重建 redis.sock
redis-cli -s /var/lib/redis/redis.sock
redis /var/lib/redis/redis.sock> keys *
1) "OpenVAS.__GlobalDBIndex"
redis /var/lib/redis/redis.sock> del OpenVAS.__GlobalDBIndex
(integer) 1

註1:使用手動更新,會發生第四點的問題 openvassd 一直停在 Reloaded all the NVTs,造成無法掃瞄
註2:在不同的系統中 redis.sock 不見得相同,在 AlienVault OSSIM 5.3.1 版中,這個檔是指 /var/run/redis/redis-server-openvas.sock

參考資料:
leeilu大 -- Reloaded all the NVTs 解法
https://leeilu.blogspot.com/2016/08/openvas-occur-reloaded-all-nvts.html

CSDN -- Leeboy_Wang 大的說明
https://blog.csdn.net/Leeboy_Wang/article/details/78093319

kali 討論 -- adamhj 大的說明
https://forums.kali.org/showthread.php?29682-Openvas-Reloaded-all-the-NVTs-issue 


錯誤 GMP Servcie is down

安裝完後,登入頁面出現 GMP Servcie is down,請檢查 openvas-manager.service 是否正常啟動
註:OpenVAS 有四個服務 openvas-manager、openvas-scanner、gsad、gvmd 


於 CentOS 7 中安裝完 OpenVAS 後無法產生 PDF 檔

透過官方方式安裝完 OpenVAS 後,點產生 PDF 報告時,檔案都是 0 Kb,這看來是因為少裝套件的關係及設定,以下是參考 surkum 大的文章

# yum -y install texlive-changepage texlive-titlesec
# mkdir -p /usr/share/texlive/texmf-local/tex/latex/comment
# cd /usr/share/texlive/texmf-local/tex/latex/comment
# wget http://mirrors.ctan.org/macros/latex/contrib/comment/comment.sty
# chmod 644 comment.sty
# texhash

參考資料:
surkum 大的文章 -- Openvas not generating pdf reports in centOS 7
http://miotramemoria.blogspot.com/2014/08/centos-7-openvas-pdf-reports.html


資料:

網管人 吳惠麟先生 文章
http://www.netadmin.com.tw/article.content.aspx?sn=1603090001

網管人 丁光立先生 文章 -- 上、下
http://www.netadmin.com.tw/article.content.aspx?sn=1605060001
http://www.netadmin.com.tw/article.content.aspx?sn=1606210002

官方文件 -- CentOS 快速安裝指南 -- 所有需要的套件,這裡都有
http://www.openvas.org/install-packages-v6.html#openvas_centos_atomic

官方指令範例
http://www.openvas.org/omp-2-0.html

官方 Manager 教學
http://www.openvas.org/src-doc/openvas-manager/index.html

b651108.lee 大 -- 教學文件(含問處理)
http://blog.xuite.net/b651108.lee/index/236170497-%E4%B8%BB%E6%A9%9F%E5%BC%B1%E9%BB%9E%E6%8E%83%E6%8F%8F+openvas

bisser.todorov大的文章 -- 很詳細的操作流程
https://itsol.biz/openvas-status-code-503-status-message-service-temporarily/

mykysyk大 -- 架設教學
https://qiita.com/mykysyk@github/items/5a73dbb2f30ce4284437 

浮雲雅築 -- 架設教學
http://shaurong.blogspot.com/2018/06/openvas-9-yumcentos-75-x64.html 

留言

這個網誌中的熱門文章

zimbra 安裝、管理、設定

Fortigate 100D -- 管理、設定

IT 隨手記6