百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

工具推荐:Vuls,一款优秀的Linux漏洞扫描器

cac55 2024-10-01 07:38 33 浏览 0 评论

摘要

对于系统管理员来说,每天进行安全漏洞分析和软件更新是每日必需的基本活动。为了避免生产环境中的故障,对系统管理员来说选择不使用由保管理器提供的自动更新选项并执行手动更新非常常见。但是这会导致以下问题的发生:

1、系统管理员必需不断提防NVD(国际漏洞数据库)中所有新的安全漏洞等。对于系统管理员来说

2、如果在服务器上安装了大量的软件,那么监控所有的软件基本是不可能的。

3、通过执行分析来确定被漏洞影响的服务器需要付出高昂的代价。在分析过程中忽略一两个服务器是很正常的。

Vuls是解决以上问题的工具。它具有以下特征:

1、通知系统相关漏洞的用户。

2、通知受影响服务器的用户。

3、实现漏洞自动化检测以防止检查。

4、在使用CRON等的日常基础上生成报告来管理漏洞。

主要特点

1、在Linux服务器上扫描安全漏洞

1.1、支持Ubuntu,Debian,CentOS,Amazon Linux,RHEL ;

1.2、支持Cloud,on-premise,Docker;

2、系统包管理器中不包括扫描中间设备

2.1、针对漏洞的扫描中间设备、程序语言库和框架;

2.2、在CPE中注册支持软件;

3、无代理架构

要求用户只在一台通过SSH连接到其他目标服务器的机器上进行设置;

4、配置文件模版的自动生成

使用CIDR服务器设置的自动监测,生成配置文件模版;

5、支持电子邮件和Slack通知(支持日本);

6、扫描结果在附件软件、TUI 查看终端中可见。

Vuls不能做什么?

Vuls不能更新漏洞集合包;

Hello Vuls

本教程将使用vuls带领你扫描localhost中的漏洞。

扫描可以通过以下步骤完成:

1、Launch Amazon Linux Launch Amazon Linux

2、Enable to ssh from localhost 允许来自localhost的ssh

3、Install requirements 安装需要的程序

4、Deploy go-cve-dictionary 部署 go-cve-dictionary

5、Deploy Vuls 部署 Vuls

6、Configuration 配置

7、Prepare 准备

8、Scan 扫描

9、TUI(Terminal-Based User Interface) TUI(基于终端的用户交互)

第一步. Launch Amazon Linux

1、我们在这个例子中使用的是旧的AMI(amzn-ami-hvm-2015.09.1.x86_64-gp2 – ami-383c1956)

2、实例大小:t2.medium

2.1、第一次使用时,t2.medium和AMI用于从NVD(大约需要2.3GB容量)fetch数据。

2.2、你可以在之后初始化数据fetch之后转换到t2.nano。

3、把下面内容添加到云的初始化中以避免在第一次launch时自动更新。

Q:我在第一次launch时如何对重要安全更新禁用自动安装?

#cloud-config

repo_upgrade: none

第二步. SSH 设置

需要ssh到自己。

创建一个密钥对,然后对验证密钥追加公钥:

$ ssh-keygen -t rsa

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

$ chmod 600 ~/.ssh/authorized_keys

第三步. 安装要求

Vuls需要下面的包:

1、sqlite

2、git

3、gcc

4、go v1.6

$ ssh ec2-user@52.100.100.100 -i ~/.ssh/private.pem

$ sudo yum -y install sqlite git gcc

$ wget https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz

$ sudo tar -C /usr/local -xzf go1.6.linux-amd64.tar.gz

$ mkdir $HOME/go

在/etc/profile.d/goenv.sh中增加这些行:

export GOROOT=/usr/local/go

export GOPATH=$HOME/go

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

设置操作系统环境:

$ source /etc/profile.d/goenv.sh

第四步. 部署 go-cve-dictionary

$ sudo mkdir /var/log/vuls

$ sudo chown ec2-user /var/log/vuls

$ sudo chmod 700 /var/log/vuls

$ go get github.com/kotakanbe/go-cve-dictionary

把 go-cve-dictionary 开启为服务模式。

第一次时,go-cve-dictionary fetch 来自 NVD 的漏洞数据。

这样耗时约10分钟(在AWS上)。

$ go-cve-dictionary server

... Fetching ...

$ ls -alh cve.sqlite3

-rw-r--r-- 1 ec2-user ec2-user 7.0M Mar 24 13:20 cve.sqlite3

现在我们成功的收集了漏洞数据,然后再次以服务模式开启它。

$ go-cve-dictionary server

[Mar 24 15:21:55] INFO Opening DB. datafile: /home/ec2-user/cve.sqlite3

[Mar 24 15:21:55] INFO Migrating DB

[Mar 24 15:21:56] INFO Starting HTTP Sever...

[Mar 24 15:21:56] INFO Listening on 127.0.0.1:1323

第五步. 部署 vuls

Launch一个新的终端,SSH到ec2实例。

$ go get github.com/future-architect/vuls

第六步. 配置

创建一个配置文件(TOML 格式)

$ cat config.toml

[servers]

[servers.172-31-4-82]

host = "172.31.4.82"

port = "22"

user = "ec2-user"

keyPath = "/home/ec2-user/.ssh/id_rsa"

第七步. 为vuls设置目标服务器

$ vuls prepare

第八步. 开始扫描

$ vuls scan

INFO[0000] Begin scanning (config: /home/ec2-user/config.toml)

... snip ...

172-31-4-82 (amazon 2015.09)

============================

CVE-2016-0494 10.0 Unspecified vulnerability in the Java SE and Java SE Embedded components in Oracle

Java SE 6u105, 7u91, and 8u66 and Java SE Embedded 8u65 allows remote attackers to

affect confidentiality, integrity, and availability via unknown vectors related to

2D.

... snip ...

CVE-2016-0494

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

Score 10.0 (High)

Vector (AV:N/AC:L/Au:N/C:C/I:C/A:C)

Summary Unspecified vulnerability in the Java SE and Java SE Embedded components in OracleJava SE 6u105,

7u91, and 8u66 and Java SE Embedded 8u65 allows remote attackers to affect confidentiality,

integrity, and availability via unknown vectors related to 2D.

NVD https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-0494

MITRE https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0494

CVE Details http://www.cvedetails.com/cve/CVE-2016-0494

CVSS Claculator https://nvd.nist.gov/cvss/v2-calculator?name=CVE-2016-0494&vector=(AV:N/AC:L/Au:N/C:C/I:C/A:C)

RHEL-CVE https://access.redhat.com/security/cve/CVE-2016-0494

ALAS-2016-643 https://alas.aws.amazon.com/ALAS-2016-643.html

Package/CPE java-1.7.0-openjdk-1.7.0.91-2.6.2.2.63.amzn1 -> java-1.7.0-openjdk-1:1.7.0.95-2.6.4.0.65.amzn1

第九步. TUI

Vuls拥有基于终端的用户交互来查看扫描结果。

$ vuls tui

体系架构

go-cve-dictionary

从 NVD,JVN(日本)fetch漏洞信息,然后插入SQLite。

Vuls

1、在服务器上扫描漏洞并创建CVE ID列表;

2、为了获得监测到的CVE更多详细信息,发送HTTP请求到go-cve-dictionary;

3、通过Slack,Email发送报告;

4、系统操作员可以通过终端查看最近的报告;

用例

扫描所有服务器

扫描单个服务器

负载均衡下使用相同配置的 Web/app 服务器

支持操作系统 Distribution Release Ubuntu 12, 14, 16 Debian 7, 8 RHEL 4, 5, 6, 7 CentOS 5, 6, 7 Amazon Linux All 用法:自动发现服务器

发现子命令发现CIDR范围中特定的活跃服务器,然后打印配置文件(TOML格式)到终端。

$ vuls discover -help

discover:

discover 192.168.0.0/24

例如:

$ vuls discover 172.31.4.0/24

# Create config.toml using below and then ./vuls --config=/path/to/config.toml

[slack]

hookURL = "https://hooks.slack.com/services/abc123/defghijklmnopqrstuvwxyz"

channel = "#channel-name"

#channel = "#{servername}"

iconEmoji = ":ghost:"

authUser = "username"

notifyUsers = ["@username"]

[mail]

smtpAddr = "smtp.gmail.com"

smtpPort = 465

user = "username"

password = "password"

from = "from@address.com"

to = ["to@address.com"]

cc = ["cc@address.com"]

subjectPrefix = "[vuls]"

[default]

#port = "22"

#user = "username"

#password = "password"

#keyPath = "/home/username/.ssh/id_rsa"

#keyPassword = "password"

#user = "root"

#cpeNames = [

# "cpe:/a:rubyonrails:ruby_on_rails:4.2.1",

#]

你可以使用此模版进行自定义配置

配置

Slack部分

1、hookURL:进入到webhook的URL

2、通道:通道名称

如果你设置 #{servername} 到通道,该报告将呗发送到 #servername 通道。

在下面的例子中,该报告将被发送到 #server1 和 #server2 中。

确定在扫描前创建这些通道。

[slack]

channel = "#{servername}"

...snip...

[servers]

[servers.server1]

[servers.server2]

host = "172.31.4.83"

...snip...

3、iconEmoji:emoji

4、authUser:slack团队的用户名

5、notifyUsers:Slack 用户名列表以发送 Slack 通知。如果你设置["@foo", "@bar"]称notifyUsers,@foo @bar将被纳入文本中。

所以 @foo,@bar 可以在手机上接受到推送到通知。

邮件部分

from = "from@address.com"

默认部分

如果没有特别指定,则使用默认部分。

服务器部分

你可以在默认部分覆盖默认值。

Vuls支持多种SSH身份验证方法:

1、SSH 代理

2、SSH 公钥验证(使用密码、空密码)

3、密码验证

使用:准备

准备在每台服务器上安装包需要的子命令。

Distribution Release Requirements Ubuntu 12, 14, 16 - Debian 7, 8 apptitude CentOS 5 yum-plugin-security, yum-changelog CentOS 6, 7 yum-plugin-security, yum-plugin-changelog Amazon All - RHEL 4, 5, 6, 7 -

$ vuls prepare -help

prepare:

prepare [-config=/path/to/config.toml] [-debug]

-config string

/path/to/toml (default "$PWD/config.toml")

-debug

debug mode

-use-unattended-upgrades

[Deprecated] For Ubuntu, install unattended-upgrades

使用:扫描

$ vuls scan -help

scan:

scan

[-lang=en|ja]

[-config=/path/to/config.toml]

[-dbpath=/path/to/vuls.sqlite3]

[-cve-dictionary-url=http://127.0.0.1:1323]

[-cvss-over=7]

[-report-slack]

[-report-mail]

[-http-proxy=http://192.168.0.1:8080]

[-debug]

[-debug-sql]

-cve-dictionary-url string

http://CVE.Dictionary (default "http://127.0.0.1:1323")

-cvss-over float

-cvss-over=6.5 means reporting CVSS Score 6.5 and over (default: 0 (means report all))

-dbpath string

/path/to/sqlite3 (default "$PWD/vuls.sqlite3")

-debug-sql

SQL debug mode

-http-proxy string

http://proxy-url:port (default: empty)

-lang string

[en|ja] (default "en")

-report-mail

Email report

-report-slack

Slack report

-use-unattended-upgrades

[Deprecated] For Ubuntu. Scan by unattended-upgrades or not (use apt-get upgrade --dry-run by default)

-use-yum-plugin-security

[Deprecated] For CentOS 5. Scan by yum-plugin-security or not (use yum check-update by default)

例子

在扫描前运行 go-cve-dictionary作为服务模式:

$ go-cve-dictionary server

扫描配置文件中定义的所有服务器:

$ vuls scan --report-slack --report-mail --cvss-over=7

使用这条样本命令可以:

1、扫描配置文件中定义的所有服务器;

2、向 slack 和 email 中发送扫描结果;

3、只报告CVSS分数超过7的CVE;

4、向终端打印扫描结果;

扫描特定的服务器

$ vuls scan server1 server2

使用这条命令可以:

1、只扫描2个服务器(sever1,sever2);

2、向终端打印扫描结果;

使用:扫描非系统包的漏洞

你自己监测你编译的漏洞是可能的,比如在CPE中注册的语言库盒框架等。

1、如何通过软件名搜索CPE名

NVD:搜索 Common Platform Emumerations(CPE)

检查CPE命名结构:2.2

2、配置

为检测Rails v4.2.1上的Ruby漏洞,cpeNames需要在服务器部分中被设置:

keyPath = "/home/username/.ssh/id_rsa"

cpeNames = [

"cpe:/a:rubyonrails:ruby_on_rails:4.2.1",

]

使用:更新NVD数据

$ go-cve-dictionary fetchnvd -h

fetchnvd:

fetchnvd

[-last2y]

[-dbpath=/path/to/cve.sqlite3]

/path/to/sqlite3 (default "$PWD/cve.sqlite3")

-last2y

Refresh NVD data in the last two years.

在整个时期fetch数据:

$ go-cve-dictionary fetchnvd -entire

在最后两年fetch数据:

$ go-cve-dictionary fetchnvd -last2y

Misc

1、HTTP代理支持

如果你的系统使用了HTTP代理,你必须指定 –http-proxy选项。

2、如何守护进程 go-cve-dictionary

使用 Systemd,Upstart 或 supervisord,daemontools…

3、如何西东更新漏洞数据。使用作业调度器 Cron(带 -last2y 选项)。

4、如何交叉编译

$ cd /path/to/your/local-git-reporsitory/vuls

$ GOOS=linux GOARCH=amd64 go build -o vuls.amd64

5、日志

日志写在 /var/log/vuls/下。

6、调试

运行 –debug, –sql-debug选项进行调试。

7、调整打开文件限制

Riak文档是很棒的选择。

Windows

使用微软Baseline安全分析器。MBSA

相关推荐

让组策略保护Windows XP的安全

默认安装完WindowsXP之后,我们的WindowsXP并不很安全。因此,我们有必要对系统进行一些修修补补,一般情况下我们都要动用到注册表。诚然,修改注册表是一种非常有效的方法,但是它需要一定的...

你造吗?十种方式保护你免受"零日攻击"

|责编:王迪WindowsXP的寿终正寝,数据安全问题又再一次成为人们关注的焦点。近日,微软透漏,一个基于InternetExplorer的“零日攻击”给用户带来了严重破坏。“零日攻击”一种利用...

特立独行——打造游戏专用独立系统

大部分人的电脑是为了学习和工作用的,所以,如果你是一个游戏迷,那么推荐你安装一个独立系统专用于游戏,做到工作娱乐两不相扰。方案1:游戏专用移动WindowsXP目的:解决游戏兼容性问题喜欢玩游戏的都...

驰为VX8 3G Win8入门教程篇

距离Win8.1的正式发布也将近1年了,凭借着Win8.1在移动便携以及娱乐办公上的优势,现在的Win8平板越来越受到消费者的追捧,而驰为VX83G就是其中一款,搭载了卓越的英特尔Z3735G四核芯,...

易淘收银软件说明

易淘收银系统,简称易淘收银,专为小型及连锁零售、餐饮行业打造。基于SaaS模式,智能便捷,无需维护,轻量级设计却功能强大,简约而不失专业,助力门店高效管理收银。1、前台系统:收银客户端;2、后台系...

CAD打不开怎么办?原因可能是电脑中毒了,6步就能完美解决问题

一、问题描述我的CAD安装后无法打开,安装过程中没有出现任何问题,但是安装后打开就出现一个对话框“DBXCAS0”点击后又出现“FATALERROR:UnhandledAccessViola...

腾讯QQ6.1正式版发布更新

2014-07-2405:12:00作者:张林【中关村在线软件资讯】7月24日消息:腾讯QQ官网小幅更新了QQ6.1正式版,最新版本号升级至11905,继续主打扁平化、炫酷登录窗口、支持同步最近一...

Win10等网页版OneDrive无法登陆怎么办?

IT之家(www.ithome.com):Win10等网页版OneDrive无法登陆怎么办?Win10之家报道,微软OneDrive云网盘是跨平台的数据同步和存储服务,支持WindowsPC(如Wi...

经典回顾:折戟沉沙的Windows Longhorn有着惊艳的登录屏幕

尽管微软原先计划让WindowsLonghorn继承WindowsXP操作系统的衣钵,但这个充满雄心壮志的操作系统项目最终还是未能迎来曙光,而是被微软用WindowsVista取而代...

电脑怎么优化

电脑配置和宽带流量也是硬件,但这些要求其实并不需要很高,关键还是怎么去安全使用电脑并进行有效的优化。电脑的应用和优化处理一、电脑的应用和优化处理二、目前,大家使用的个人电脑,配置方面均没多大问题,比如...

怎么安装usb驱动

USB驱动主要是针对WIN98时代的说法,如今WINXP已集成大部分USB驱动,通常都能识别。只有极少数情况下,例如手机、打印机或扫描仪等办公设备的USB驱动可能无法自动识别。1、USB驱动偶尔无法...

普通话考试多名考生信息被泄露,接投诉后涉事网站被限制访问

“陕西普通话成绩查询网(sxpth.cn)”泄露个人信息网站截图网传图片显示,407名普通话考试考生的姓名、身份证号码等个人信息疑似被泄露。9月26日下午,涉事网站sxpth.cn的域名注册商——成...

电脑伪技巧——个人电脑无需设置登录密码

默认情况下,我们每次登录系统都要输入登录账户对应的密码才能进入桌面。有些朋友觉得这样很麻烦,由于电脑只是自己使用,还不如不要设置密码,这样每次可以自动登录。大家知道,账户密码是系统验证用户合法性的唯一...

Windows 10/11 自带远程桌面:实用技巧与操作指南

Windows10/11自带远程桌面:实用技巧与操作指南在当今快节奏的数字时代,远程访问和控制计算机的需求日益增长。微软在Windows10和Windows11中内置了远程桌面功能,为用户提供...

不升级系统的5大原因造吗?

2015-01-2405:54:00作者:陈占伟Windows10系统的发布,让人们重新将目光聚焦到生命力长久的Windows系统之上。如今操作系统越来越多,似乎Windows升级的获得的关注度...

取消回复欢迎 发表评论: