運行openvas


openvas結構框圖

 

 

 

說明:

gsad 是提供給用戶配置任務資源的UI接口的程序。

gvmd 是管理器,主要功能是管理任務和各種資源,當啟動掃描任務時,向openvassd發送 掃描請求,接受openvassd的掃描結果。

openvassd 是掃描器,掃描核心,執行掃描任務,執行nasl腳本。

 

openvas 是基於C/S 和B/S架構工作。

B/S模式 通過瀏覽器登錄gsad ,gsad連接gvmd,使用openvas服務的。安裝 gsad gvmd openvassd即可。

C/S模式 是通過命令行 連接gvmd, 使用openvas服務的。需要安裝 gvm-cli gvmd openvassd 。

命令行的使用要求高一點,需要了解gmp協議和使用的命令,適合老手。

對於新手來說,建議B/S模式。

因為官網自帶的安裝包,一種連接方式是加密的,一種是sock文件方式,都不能很好的抓包分析協議。

我改了一下代碼,gvmd使用 監聽 socket 端口方式,但不加密。並且增加了日志。

gsad 與 gvmd 之前的協議,和gvmd 與openvassd之前的協議 可以通過日志和抓包看到。

代碼路徑如下 https://github.com/songnana, 有興趣的可以看一下。

 

運行openvas

 

配置openvas

查看配置openvassd -s

1.同步feed

greenbone-nvt-sync       同步feed,花費大約20分鍾

2.運行redis,openvas已經安裝了redis的配置文件示例

redis-server /usr/share/doc/openvas-scanner/redis_config_examples/redis_4_0.conf          #用作特征的緩存

3.運行openvas

openvassd

建立/usr/var/run/openvassd.sock.

更新配置或者更新feed,需要重新加載配置,發送SIGHUP信號

kill -1 openvassd

日志在/usr/var/log/gvm/openvassd.log

日志完全被/usr/etc/openvas/openvassd_log.conf控制。

配置文件/usr/etc/openvas/openvassd.conf

4.運行gvmd

有inet socket 和unix socket兩種運行方式,分別表示監聽的socket方式。

 

gvmd --listen=127.0.0.1                       #inet socket

 

gvmd          #unix socket,建立/usr/var/run/gvmd.sock

 

日志在/usr/var/log/gvm/gvmd.log

日志完全被/usr/etc/gvm/gvmd_log.conf控制。

 

5.運行gsad

gsad 連接到gvmd上,所以根據gvmd的監聽方式,也存在兩種運行方式。

 

gvmd 創建用戶

gvmd --create-user=admin --password=admin

 

gsad --http-only --mlisten=127.0.0.1 --mport=9390  #與gvmd的inet socket通信,不加密方式

gsad --mlisten=127.0.0.1 --mport=9390  #與gvmd的inet socket通信,加密方式

gsad --munix-socket=/usr/var/run/gvmd.sock        #與gvmd 的unix socket通信

 

查看gsad幫助 gsad --help

 

# gsad --http-only --mlisten=127.0.0.1 --mport=9390

現在可以用admin賬號登錄 127.0.0.1:80端口,訪問gsa了,建立task,啟動掃描任務。

 

# gsad --mlisten=127.0.0.1 --mport=9390

現在可以用admin賬號登錄 https://192.168.10.129端口,訪問gsa了,建立task,啟動掃描任務。

 

 我的運行腳本如下:

#!/bin/sh

iptables -t filter -I INPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT                                  #放開防火牆的攔截
iptables -t filter -I INPUT 2 -p tcp -m tcp --dport 443 -j ACCEPT

gvm-manage-certs -a                                                        #產生認證文件

gvmd --create-user=admin --password=admin                 #創建用戶

greenbone-nvt-sync                #同步特征

redis-server /etc/redis_4_0.conf                                       #運行redis
openvassd                    #運行openvassd,等加載完nvt后(也即openvassd只有一個進程時),再啟動gvmd和gsad,否則出現僵屍進程,代碼有缺陷,我這里加載nvt需要3分鍾
gvmd --listen=127.0.0.1                                                    #啟動gvmd,監聽本機
gsad --mlisten=127.0.0.1 --mport=9390         #啟動gsad,監聽80和443端口

然后瀏覽器可以登錄http://ip地址/ 自動跳轉到https鏈接,用剛才創建的admin賬戶登錄即可。

然后就可以創建config,shedule,target,掃描個主機看看。

之后設備重啟,只運行紅色命令即可,也可以放入啟動腳本中,自動運行。

 

6.建立掃描任務:

此處未寫。詳細的可以參考手冊。

web interface 手冊 參考:https://docs.greenbone.net/GSM-Manual/gos-5/en/                     #操作web界面的手冊文檔

參考:https://www.cnblogs.com/cocowang68/p/8759626.html    #快速建立個任務,進行掃描

運行gvm-tools

 

gvm-tools命令說明

1.概述

gvm-tools提供了三個命令,gvm-cli, gvm-script, gvm-pyshell。

三個命令都是基於tls,ssh,unix domain socket這三種連接方式連接到gvmd上。

參考:https://gvm-tools.readthedocs.io/en/latest/

gvm-cli

gvm-cli發送xml格式的gmp協議或者osp協議的命令,接受xml格式的gmp或者osp的回復,用於簡單實例,類似於命令行功能,是一個底層命令行工具。

gvm-cli命令--xml 選項的參數是XML腳本,應該僅僅用做簡單用例。

gmp協議和osp協議基於xml定義的。

gvm-script

此命令是2.0正式版中新出現的。

gvm-script用於執行基於python的gvm腳本,gvm腳本調用的是基於python的gvm API,實現復雜的功能。命令用--protocol參數指定使用gmp,osp哪種協議,默認是gmp協議。

gvm-pyshell

gvm-pyshell是一個python交互腳本,調用的基於python 的gvm API.

同樣,也用--protocol參數指定使用哪種協議,默認gmp協議。

 

2.功能

gvm-cli

gvm-cli --xml 可以跟着gmp/osp命令,

對於獲取版本信息這樣簡單地命令,可以用gvm-cli,因為它的命令和回復都很簡單,一眼就能看到。

但是對於獲取task,創建task等的命令,用gvm-cli就有點不夠用了。因為創建task,需要config,target等參數,並且獲取task的回復是一個龐大的xml文檔,需要xml解析器才能明確的得到想要的信息。這就需要gvm-script了。雖然gvm-script的作用更廣泛,但是編寫調用的gvm腳本,需要調試,最好先根據gvm-cli獲取的信息,編寫gvm腳本。

gvm-script只是幫我們把gmp命令封裝好了,最后發送給gvmd的還是xml文檔。

gvm-script

對於不同的功能,需要編寫特定的gvm腳本。

幸運的是,package中提供了部分腳本,可以當做例子拿來使用。

沒有的功能,就需要自己編寫了。

參考一下手冊,

3. 實例

gvm-tools v2.0.0.beta1版本

gvm-tools文檔:https://gvm-tools.readthedocs.io/en/latest/

gvm-tools包含兩個命令gvm-cli和gvm-pyshell.

還有一個python-gvm庫,里面是gvm的pythonAPI接口,用於編寫python腳本。

 

例子:

unix

gvm-cli socket --gmp-username admin --gmp-password admin --socketpath /usr/var/run/gvmd.sock  --log DEBUG -X '<get_version/>'

 

tls

gvm-cli tls --gmp-username admin --gmp-password admin   --log DEBUG -X '<get_version/>' --hostname 127.0.0.1 --port 9390 --certfile '/usr/var/lib/gvm/CA/servercert.pem'   --keyfile '/usr/var/lib/gvm/private/CA/serverkey.pem'  --cafile '/usr/var/lib/gvm/CA/servercert.pem'

 

gvm-pyshell

gvm-pyshell socket   --socketpath /usr/var/run/gvmd.sock --gmp-username admin --gmp-password admin  --protocol GMP/OSP -i

 

python-API 庫內置了socket文件為/usr/local/var/run/gvmd.sock,

為了運行給出的腳本例子,

vim /usr/lib/python3.7/site-packages/ gvm/connections.py  +41

 

 

修改之后運行命令可以不用指定socketpath,

gvm-cli socket --gmp-username admin --gmp-password admin --log DEBUG -X '<get_version/>'

 

gvm-pyshell socket --gmp-username admin --gmp-password admin  --protocol GMP/OSP -i

--protocol 可以指定兩種協議,一種GMP,一種OSP,默認GMP

gvm-pyshell socket --gmp-username admin --gmp-password admin  --protocol GMP abc.txt

                                                      

 

 

python腳本

pretty_print(gmp.get_tasks())

 

 

gvm-tools v2.0.0版本(release版本)

gvm-cli

  gvm-cli socket --socketpath /usr/var/run/gvmd.sock --xml "<get_version/>"

gvm-cli --gmp-username admin --gmp-password admin socket --socketpath /usr/var/run/gvmd.sock --xml "<get_tasks/>"

  gvm-cli -c ./gvm-tools.conf socket --xml "<get_reports/>"

  gvm-cli -c ./gvm-tools.conf tls --hostname 127.0.0.1 --port 9390 --xml "<get_reports/>"

gvm-cli -c ./gvm-tools.conf tls --hostname 127.0.0.1 --port 9390 --xml "<get_report_formats/>"

 

 

gvm-script

gvm-script --gmp-username admin --gmp-password admin socket --socketpath /usr/var/run/gvmd.sock list-tasks.gmp

  gvm-script -c ./gvm-tools.conf tls --hostname 127.0.0.1 --port 9390 list-tasks.gmp

 gvm-script -c ./gvm-tools.conf tls --hostname 127.0.0.1 --port 9390 scripts/pdf-report.gmp ef7b9853-59f8-4612-bb3d-53e3c9d5f819

產生 ef7b9853-59f8-4612-bb3d-53e3c9d5f819.pdf文件

 

注釋:因為導出的pdf報告不能用,根據社區的回復,需要安裝xsltproc,pdflatex,xmlstarlet

安裝了這三個命令之后,導出的pdf文檔可以打開。

 我的gvm-tools.conf配置文件的內容如下:

[main]
timeout=120
[gmp]
username=admin
password=admin
[unixsocket]
socketpath=/usr/var/run/gvmd.sock
[tls]
port=9390

 主要是省去了每次指定命令行參數的麻煩。

我的命令中穿插使用了tls和socket兩種方式,需要對應gvmd的啟動方式。

如果是socket方式,gvmd這樣啟動,gvmd     #監聽socket文件

如果是tls方式,gvmd這樣啟動,gvmd --listen=127.0.0.1       #監聽tcp端口

 

Greenbone Protocol versions

gvm-10當前支持的協議包括gmpv7,gmpv8,ospv1

gmp version 7         https://docs.greenbone.net/API/GMP/gmp-7.0.html

gmp version 8         https://docs.greenbone.net/API/GMP/gmp-8.0.html

osp version 1          https://docs.greenbone.net/API/OSP/osp-1.1.html

#說明在/usr/lib/python3.7/site-packages/gvm/protocols/__init__.py

 

 

 

XML文檔:

https://lxml.de/tutorial.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM