一步一步带你体验 openvas

openvas 是 nessus 项目的一个开源分支,用于对目标系统进行漏洞评估和管理,openvas 的配置使用相较于 nessus 更加复杂,扫描速度也不如 nessus,但是胜在开源免费。相比于 nessus,openvas 的漏洞评估更加侧重系统内部的漏洞,尤其是在 Linux 内核级的漏洞检测上尤为明显。

在实际工作做,若公司愿意在安全投入足够的资金情况下,仍建议采购商业版的漏扫器, 若投入有限,利用开源的 openvas 实现对系统层面漏洞进行有效管理归集,也能直观的体现出系统的基本风险状态,也不失为一种展现工作成果的方式。

测试系统环境:

部署系统:centos7.4

目标系统:centos7.4 和 Windows server 2012

安装部署过程:

关闭 selinux,重启主机

更新系统:

yum install -y update

安装依赖包:

yum install -y wget bzip2 texlive net-tools alien gnutls-utils

添加 openvas 的安装源

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

安装 openvas 包:

yum install -y openvas

安装 openvas 包以后,查看可使用的命令:

几个主要命令的简单说明:

openvas-check-setup 检查 openvas 安装状态,安装完成以后检查是否安装完成;

openvas-setup 执行命令安装 openvas

openvassd 启动扫描进程

openvasmd 管理 openvas,可以用于设置管理账户和密码

gsad 启动系统的安全评估进程,提供 web 接口

greenbone-nvt-sync 更新漏洞库的命令

注:保证系统正常运行,必须启动 gsad、openvassd、openvasmd 三个进程, openvas-setup 进行安装 openvas 系统,过程等待时间比较长:

第一步: 设置下载漏洞库的方式,默认使用 rsync 方式,安装默认方式即可

第二步: 设置允许连接 ip,默认是全放开

第三步: 设置管理员账号密码,默认管理员账号是 admin,默认的 web 端口为 9392

要正常使用扫描器功能必须安装 redis,如下配置 redis.conf,设置后台启动,更换默认端口,且只允许本机连接:

启动 redis 服务:

/usr/bin/redis-server /etc/redis.conf

安装完成以后检查安装状态:

openvas-check-setup --v9

注:在 centos7 以上版本,v7 和 v8 因 nmap 版本不是 5.51,无法正常使用,v9 版本虽然会有提醒 nmap 版本不匹配但是影响正常使用

安装正常会提示:

It seems like your OpenVAS-9 installation is OK.

查看系统启动后的进程状态:

系统的登录页面:

注:若开启了防火墙,需要在防火墙上放开 9392 端口

openvas 的配置使用

首页仪表盘:

默认呈现“任务风险评估状态”、“任务执行状态”、“CVE 漏洞库变化趋势”、“资产网络拓扑”、“NVT 漏洞库”

常用功能模块简单介绍:

Dashboard :首页仪表盘

Scans :扫描模块

----tasks:扫描任务列表

----results:扫描结果列表

----reports:扫描报告列表

Assets :资产模块

----hosts:以主机维度呈现风险情况

----operating systems:以操作系统维度呈现风险情况

----hosts(classic):以主机列表形式列出风险情况、端口和应用情况

Secinfo:漏洞库模块,列出了系统收集的所有漏洞清单

Configuration:配置功能模块

----targets:可自定义扫描目标

----port lists:可自定义扫描的端口

----credentials:配置登录认证扫描

----scan config:可自定义扫描策略

Extras:一些其他的系统设置

Administration:管理员设置,包括用户和用户组、认证的设置

Help:系统的使用帮助和介绍

将系统时间设置为上海时间,避免扫描的时间和本地时区有时差:

新建扫描任务:

在 scan targets 里配置扫描目标,可以设置账号登录扫描,Linux 系统可以使用 SSH 方式,Windows 系统可以使用 SMB 方式( SMB 服务必须是启动的):

在配置登录过程中,若提示 “Credential exist already”,则分别要在 “scans” 功能模块的 “tasks” 选项里和 “configuration” 功能模块的 “Targets”“Credentials” 选项里筛选出对应的主机清单进行删除。

创建好任务以后,在任务列表里选择点击列表右侧的扫描按钮:

点击开始扫描后若弹出以下错误,则说明 openvassd 的扫描进程未启动

进入系统执行命令 openvassd 启动进程

执行状态:

默认的扫描速度比较慢,可以在 configuration 功能模块的 scan config 定制不同的扫描策略,减少不必要的扫描过程:

自定义 centos 系统的扫描策略和默认全量快速扫描策略的扫描类和漏洞库数量的差异:

执行扫描过程中可以通过 ps –ef 查看正在检测的规则模块,通过定制可以缩减测试的功能模块漏洞库数量,加快扫描速度;若扫描过程中长期卡在一个漏洞库规则的扫描进程上,可以直接 kill 该进程号,继续后续的扫描:

对比登录扫描和未登录扫描的差异,可以明显发现登录扫描能够探测出更多系统内部的漏洞:

配置过滤规则,可以查看中高危漏洞,以下为 Windows 主机为例扫描出的中高危漏洞:

查看 Linux 系统扫描示例,可以看出高危漏洞绝大多数是内核级的漏洞:

Linux 系统针对内核级漏洞修复方式:

注:实际生产环境中,涉及内核漏洞的一定先测试确保不影响业务系统

导入 key

sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

安装 yum 源

sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

安装内核

sudo yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml

检查启动顺序

sudo awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg

设置默认启动顺序

sudo grub2-set-default 0

重启后删除原 kernel

sudo yum remove kernel

升级内核以后的漏洞扫描情况对比,可以明显看出内核级漏洞已经不存在:

测试过程中的漏洞记录表

扫描报表导出:

“Scan” 功能模块里的 “reports”,然后选择,然后选择需要导出的任务报表,点击列表里 “Date” 一列的任务时间,点击进去以后在左上角选择导出的报表格式:

小结:

Openvas 的整体功能还是比较强大的,但是相比于商业版扫描器的配置使用起来会更加的麻烦,就此次小样本的测试结果而言,Linux 系统漏洞检测的侧重点在内核级的漏洞,Windows 的漏洞扫描功能相对而言较弱,不如 nessus。

原文发布于微信公众号 - 信安之路(xazlsec)

原文发表时间:2018-01-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

使用 Nginx 自己实现一个 Web 调试代理服务器

在Hecker News中我提到过,我记录了一种我使用NGINX(一个久经考验的产品,可以迅速地反向代理)作为一个本地测试代理服务器的方法。

21710
来自专栏IT技术精选文摘

高性能配置中心 duic - 设计&实现

配置(Configuration)对于技术人员来说应该都不陌生,通常配置都是以 key-value 的形式存在于配置文件当中。例如线程池大小、数据库连接、逻辑开...

15130
来自专栏磨磨谈

cephonebox发布(ceph+calamari集成iso)

现在已经是2016年收官的一个月了,之前一直想做一个calamari的集成版本,之所以有这个想法,是因为,即使在已经打好包的情况下,因为各种软件版本的原因,造成...

9140
来自专栏linux运维学习

linux学习第三十二篇:linux任务计划cron,chkconfig工具,systemd管理服务,unit介绍,target介绍

linux任务计划cron crontab -u :指定某个用户,不加-u选项则为当前用户; -e :制定计划任务; -l :列出计划任务; ...

20270
来自专栏云计算教程系列

如何在Chef中使用角色和环境来控制服务器配置

在构建基础架构时,管理多服务器,服务,用户和应用程序可能会很快变得很难。配置管理系统可用于帮助您管理这种混乱。

12630
来自专栏软件测试经验与教训

如何手写LR脚本?

教学网址:http://computer-database.gatling.io/computers

12420
来自专栏岑玉海

批量设置ssh无密码登陆脚本

最近要给集群设置ssh无密码登陆,如果需要手动设置这个无密码登陆,所以在网上找了几个脚本,亲测下面这个好使,并且设置比较简单。 需要用root账户执行,我也是要...

54950
来自专栏北京马哥教育

Python之包管理工具快速入门

例如,很多时候Python开发人员都会去PyPI网站去查找自己想要使用的包,然后进行安装。PyPI ( Python Package Index)是获得第三方 ...

13930
来自专栏从流域到海域

数据库连接池

数据库连接池相关资料: 关于数据库连接池的使用,首先我们要明白我们为什么要用它,对应普通的数据库连接操作,通常会涉及到以下一些操作是比较耗时的: 网络通讯...

26570
来自专栏云计算教程系列

如何在Debian 9上安装Nginx

Nginx是世界上最受欢迎的网络服务器之一,负责托管互联网上一些规模最大,流量最高的网站。在大多数情况下,它比Apache更具资源友好性,可以用作Web服务器或...

2.4K50

扫码关注云+社区

领取腾讯云代金券