Nessus支持很多种环境, docker vm 主机 aws等等, 这里主要介绍两种:
- 自己构建docker镜像, 也可以使用官网的,
- 使用一键脚本, 文章末尾提供一键脚本
官方提供docker版本的Nessus镜像,但是没有插件 https://docs.tenable.com/nessus/Content/DeployNessusDocker.htm
docker pull tenableofficial/nessus
所以自己把插件添加进去, 在docker容器启动以后,运行下crack.sh, 就可以使用插件了
Nessus 下载地址
https://www.tenable.com/downloads/nessus
扫描漏洞模块下载地址
镜像制作步骤:
- 拉取debian镜像,添加文件, 安装nessus
- 打包上传docker hub
- 使用
- 删除
1. 拉取Debian镜像,并添加文件, 安装nessus
拉取debian镜像
docker -d run -it --name nessus-init -p 8834:8834 debian bash
添加文件
docker cp Nessus-10.5.0-debian10_amd64.deb nessus-init:/opt/
docker cp all-2.0.tar.gz nessus-init:/opt/
docker cp crack.sh nessus-init:/opt/
crack.sh 内容
#!/bin/bash
/etc/init.d/nessusd stop
/opt/nessus/sbin/nessuscli update /opt/all-2.0.tar.gz
cat > /opt/nessus/var/nessus/plugin_feed_info.inc <
我省略了PLUGIN_SET获取过程, 直接手工指定,
安装
dpkg -i Nessus-10.5.0-debian10_amd64.deb
安装好以后,访问对应IP的8834端口进行安装操作,
2. 打包镜像上传
有人会问为什么这里不先运行破解crack.sh后再打包, 因为权限问题! docker 无法保存使用chattr +i修改了权限的文件,所以选择在容器运行阶段进行解压和权限设置
打包
docker commit nessus-init dockerhub用户名/仓库名:tag名
#登陆,已登录过可忽略
docker login
username:
password:
#上传,使用上面coomit处创建的
docker push dockerhub用户名/仓库名:tag名
3. 使用
我们使用 --cap-add LINUX_IMMUTABLE 来进行权限设置
拉取镜像
docker run -d -it --name nessus --cap-add LINUX_IMMUTABLE -p 8834:8834 k9scc/nessus:v202303110605 bash
#登陆进 docker容器
docker exec -it nessus bash
导入插件和许可
#登陆进容器以后执行下面的命令
bash /opt/crack.sh
这个时候等一会就好了, 大约十分钟左右, 访问8834端口, 即可, 默认用户名 admin 密码 admin
4. 删除
因为使用了 --cap-add LINUX_IMMUTABLE 权限, 删除容器的时候会提示失败, 我们需要取消对应文件的 锁定 权限即可 例如,上图的地址为
/var/lib/docker/overlay2/58cf5fc21037833de45ff6406a37d26a0cb10ef81df999a39a97f79e32db7bba/diff/opt/nessus/var/nessus/plugin_feed_info.inc
chattr -i /var/lib/docker/overlay2/58cf5fc21037833de45ff6406a37d26a0cb10ef81df999a39a97f79e32db7bba/diff/opt/nessus/var/nessus/plugin_feed_info.inc
插件目录,批量取消锁定权限
chattr -i -R /var/lib/docker/overlay2/c9df7514dedca1c5f230dd01d99016720986d2eb0195cd6c542aebe4b95da79e/diff/opt/nessus/lib/nessus/plugins/
每次新创建的docker, docker路径都是不一样的,docker 文件 映射的主机路径 为 Uppdir里面的路径,使用 inspect可以查看
docker inspect nessus
Linux一键安装
环境
- OS: debian11
- Nessus: 10.5.0
- Plugins: 202303071847
直接使用
curl -k https://www.hao.kim/soft/nessus-install.txt | bash
其他系统的ness可以到这里下载 https://www.tenable.com/downloads/nessus 这里为debian11, 其他系统对应脚本的4-5行内容进行修改 如果没有安装curl,dpkg 的安装一下,
#debian/Ubuntu
apt install curl dpkg -y
#Rhel Centos
yum -y install curl dpkg -y
ness-install.sh
#!/bin/bash
/etc/init.d/nessusd stop
curl --request GET \
--url 'https://www.tenable.com/downloads/api/v2/pages/nessus/files/Nessus-10.5.0-debian10_amd64.deb' \
--output 'Nessus.deb'
dpkg -i Nessus.deb && rm -rf Nessus.deb
curl -A Mozilla -o all-2.0.tar.gz \
--url 'https://plugins.nessus.org/v2/nessus.php?f=all-2.0.tar.gz&u=4e2abfd83a40e2012ebf6537ade2f207&p=29a34e24fc12d3f5fdfbb1ae948972c6' &>/dev/null
#curl -A Mozilla -o all-2.0.tar.gz --url 'https://www.hao.kim/soft/all-2.0.tar.gz 如果国内下载慢可以使用我下载的, 每天更新
chattr -i -R /opt/nessus/lib/nessus/plugins/
chattr -i /opt/nessus/var/nessus/plugin_feed_info.inc
/opt/nessus/sbin/nessuscli update all-2.0.tar.gz && rm -rf update all-2.0.tar.gz
vernum=$(curl https://plugins.nessus.org/v2/plugins.php 2> /dev/null)
cat > /opt/nessus/var/nessus/plugin_feed_info.inc <