工具推荐:Vuls,一款优秀的Linux漏洞扫描器
cac55 2024-10-01 07:38 50 浏览 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
相关推荐
- 苹果新macOS、新Mac还没出,但已经有新版虚拟机软件Parallels Desktop 19
-
自从苹果电脑全面转向ARM架构芯片之后,想在新款Mac电脑上安装Windows或Linux系统,就只能依靠虚拟机软件了,其中ParallelsDesktop应该是比较多Mac用户选择使用的一款,现在...
- 这个开源神器可快速帮你安装 MacOS 虚拟机
-
大家好,我是JackTian。安装Windows和Linux操作系统是最熟悉不过的必备技能了。那么,给大家推荐一个非常实用的开源脚本:macos-guest-virtualbox.sh,帮你...
- 如何在VMware虚拟机上安装运行Mac OS系统??
-
想在自己的Windows电脑上安装一个MacOS体验一下苹果系统的小伙伴,教程来了!!!一、安装前准备虚拟机运行软件:VMwareWorkstationPro,版本:16.0.0。(可以注册)VM...
- 效率!MacOS下超级好用的Linux虚拟工具:Lima
-
对于MacOS用户来说,搭建Linux虚拟环境一直是件让人头疼的事。无论是VirtualBox还是商业的VMware,都显得过于笨重且配置复杂。今天,我们要介绍一个轻巧方便的纯命令行Linux虚拟工具...
- 普通电脑安装苹果MacOS+Windows10双系统,这次可不是虚拟机
-
上篇文章中说到,有一朋友因为工作需要,得临时使用苹果系统,笔者给他用VmwareWorkStation安装了一个苹果系统的虚拟机,结果装是装上了,但是发现调整分辨率有点小问题,文件传输也不方便。虽说...
- 官方证实苹果M1芯片不支持Windows 11
-
中关村在线消息:近日根据微软官方透露,目前已经确定Windows11不支持运行在苹果M1芯片上,这意味着过往在Mac电脑上安装Windows系统的做法在M1芯片的Mac电脑上并不适用。不过此前有网友...
- 这可能是 Mac 共享文件最详细的教程了
-
如果希望让一台Mac访问另一台Mac上的文件,就可以使用Mac的文件共享功能。而且不仅是Mac之间,甚至用iPhone、iPad、WindowsPC都可以访问Mac的共享文件...
- 在 M1/M2 Mac 上,让 Windows 11 免费“跑”起来
-
自从苹果在产品中逐步使用自研的M系列芯片淘汰掉英特尔芯片之后,很多事情都发生了改变。作者|KirkMcElhearn和JoshuaLong译者|弯月出品|CSDN(ID:CS...
- VMware Workstation克隆虚拟机后修改ip地址和mac地址
-
VMwareWorkstation克隆虚拟机,登录之后发现,克隆虚拟机不仅用户名相同,连ip地址、mac地址也是相同的,很显然访问相同ip地址的虚拟机是会出现ip地址冲突的。一、修改IP地址这就需要...
- VirtualBox7中安装macOS big sur,在windows10&11上「保姆级教程」
-
macOSBigSur是苹果公司研发的桌面端操作系统,于北京时间2020年6月23日在2020苹果全球开发者大会上发布。BigSur采用全新的精美设计,为主要app如Safari浏览器...
- 最强mac虚拟机Parallels Desktop 16 有哪些重要的新增功能?
-
ParallelsDesktop16正式发布,软件带来了一些显着的新功能和性能增强,包括对macOSBigSur的全面支持。当苹果推出macOSBigSur时,它终止了对Par...
- 关于在MacOS安装虚拟机的全过程(macos 安装虚拟机)
-
哈喽大家好,我是咕噜美乐蒂,很高兴又见面啦!下面美乐蒂将详细地给大家介绍一下在macOS上使用VMwareFusion创建虚拟机并安装操作系统的步骤:一、确认虚拟化支持:首先,确认你的Ma...
- macOS上也能轻松运行Win系统的虚拟机,你还不知道吗?
-
在macOS系统上运行Win系统的方式,虚拟机篇吉安光头强原创你是否曾经为了在Mac上运行Windows系统而烦恼不用着急,下面我将分享一种简单易行的方法,让你轻松在Mac上运行Windows系统准备...
- Mac M芯片上安装统信UOS 1070arm64虚拟机
-
原文链接:MacM芯片上安装统信UOS1070arm64虚拟机Hello,大家好啊!今天给大家带来一篇关于如何在苹果M系列芯片的Mac电脑上,通过VMware安装ARM64版统信UOS1070...
- 虚拟机不好用?Mac mini 多配一台Windows电脑,用远程桌面更好!
-
最近新入手了MacminiM4款,这里来更新一下相关问题,对于还没有购买Macmini,但是又想要用苹果电脑的朋友,一些参考,我觉得还是挺有用的!Macmini选择哪个渠道购买好?现在比较划算...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 苹果新macOS、新Mac还没出,但已经有新版虚拟机软件Parallels Desktop 19
- 这个开源神器可快速帮你安装 MacOS 虚拟机
- 如何在VMware虚拟机上安装运行Mac OS系统??
- 效率!MacOS下超级好用的Linux虚拟工具:Lima
- 普通电脑安装苹果MacOS+Windows10双系统,这次可不是虚拟机
- 官方证实苹果M1芯片不支持Windows 11
- 这可能是 Mac 共享文件最详细的教程了
- 在 M1/M2 Mac 上,让 Windows 11 免费“跑”起来
- VMware Workstation克隆虚拟机后修改ip地址和mac地址
- VirtualBox7中安装macOS big sur,在windows10&11上「保姆级教程」
- 标签列表
-
- 如何绘制折线图 (52)
- javaabstract (48)
- 新浪微博头像 (53)
- grub4dos (66)
- s扫描器 (51)
- httpfile dll (48)
- ps实例教程 (55)
- taskmgr (51)
- s spline (61)
- vnc远程控制 (47)
- 数据丢失 (47)
- wbem (57)
- flac文件 (72)
- 网页制作基础教程 (53)
- 镜像文件刻录 (61)
- ug5 0软件免费下载 (78)
- debian下载 (53)
- ubuntu10 04 (60)
- web qq登录 (59)
- 笔记本变成无线路由 (52)
- flash player 11 4 (50)
- 右键菜单清理 (78)
- cuteftp 注册码 (57)
- ospf协议 (53)
- ms17 010 下载 (60)