ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Kali Linux 安装 Nessus 漏洞扫描器:从激活到实战全流程指南

Kali Linux 安装 Nessus 漏洞扫描器:从激活到实战全流程指南 1. 开工之前Kali 上装 Nessus到底图什么提到 Kali Linux大部分人脑子里蹦出来的是一整套渗透测试工具链Metasploit、Nmap、Burp Suite、Hashcat要什么有什么。但真到做企业级安全评估或者漏洞管理的时候你会明显感觉到一件事Kali 里缺了一个“能打的”商业化漏洞扫描器。Nessus 正好补上这块短板。Nessus 是 Tenable 公司出品的老牌漏洞扫描器长期以来一直是业内做漏洞发现和合规评估的标配工具之一。它在 Kali 里不在默认安装列表里需要我们自己动手装而且装完还要完成注册、激活、初始化这一整套流程比装普通软件麻烦不少。这篇文章我不会只甩几条命令给你而是会把从下载安装包、处理依赖、启动服务、配置 Web 界面、申请激活码、跑第一次扫描到最终拿到一份像模像样的漏洞报告的完整过程都过一遍顺便把我实际操作中踩过的坑和最后总结出来的习惯一并交代清楚。适合谁看如果你是刚接触漏洞评估、想知道“Nessus 装起来到底要几步”的入门选手这篇文章里的操作你可以照着做如果你已经在用别的扫描器想快速迁移到 Nessus 上排错和优化部分应该能帮你少走弯路。整个过程的核心就三个动作装服务、拿激活码、开始扫。1.1 Nessus 到底是怎么工作的先把原理讲明白。Nessus 的工作过程可以粗略分成四步资产发现先探测目标网络上有哪些主机是活着的常见手段是 ICMP Ping、TCP 端口探测以及 ARP 扫描在本地网段时。端口与指纹识别对存活主机做端口扫描识别端口上跑的服务和版本这一步有点像 Nmap 做的事情但 Nessus 有自己的实现逻辑。插件匹配Nessus 最核心的资产是它的插件库。每个插件对应一个已公开的漏洞或配置问题扫描器根据目标指纹去匹配并执行相应插件做实际验证而不是只靠版本号猜测。漏洞评估输出把验证结果按风险等级归一化用 CVSS 评分体系给出严重程度整理成报告。一句话概括Nessus 像是一套自动化的“体检流水线”先发现人再量血压再根据各项指标判断有没有问题。插件库就是它的“病例知识库”不断更新这也是它比很多自研脚本可靠的地方。1.2 为什么不直接用 OpenVAS 或者其他我知道肯定有人会问Kali 里不是有 OpenVAS现在叫 Greenbone Vulnerability Management吗为什么还要单独装一个商业工具我自己的感受是OpenVAS 胜在免费开源部署也不难但它的管理界面、报告可读性、插件更新频率和稳定性说实话跟 Nessus 还是有点差距的。Nessus 的 Web 控制台做得很顺手结果分类清晰导出报告格式专业对“要把漏洞清单交上去”的工作场景特别友好。把两者摆在一起看差别更直观对比维度NessusOpenVAS / Greenbone上手难度相对简单网页引导式配置模块多初次配置稍繁琐插件更新Tenable 官方持续维护速度快社区驱动更新周期不定报告质量专业、美观、合规导向信息量大但排版和可读性一般免费程度Nessus Essentials 免费但限 16 个 IP完全开源免费企业认可度很多安全团队和咨询机构用部分场景但商业认可度略低如果你只是扫描自己几台机器OpenVAS 也能干但如果你是帮公司做资产盘点或者想自己练手以后往安全评估方向发展Nessus 更值得投入时间。这也是我给不少朋友的建议工具可以多学但先把一个工业界真正认可的工具用到熟练比什么都摸一下强。1.3 安装前必须确认的几件事在动手之前有几件事提前搞定能让你后面省掉一大堆麻烦确认架构是 x86_64。Kali 官方镜像基本都是 64 位但有些老机器或者 ARM 板子比如树莓派上刷的 Kali就不适用了Nessus 的 Linux 软件包主要还是面向 amd64。内存建议给足。Nessus 服务本身就要吃几百兆内存插件编译和扫描进程起来之后4GB 内存的虚拟机已经很紧张8GB 会更从容一些。磁盘空间预留够。插件库不断膨胀我见过装完加更新后占 10GB 以上空间的。加上扫描结果和各种报告建议至少留出 20GB 到 30GB。提前注册好 Tenable 账户。Nessus Essentials 是免费版本只要你注册一个 Tenable 账号并申请一个激活码就能用。这一步不需要任何付费信息但必须有激活码才能完成初始化。目标网络要有授权。这一点我必须放到前面说Nessus 是漏洞扫描工具不是随便拿别人 IP 乱扫的玩具。扫描未经授权的目标轻则违反平台规则重则有法律风险。请只在你自己拥有、或者合同明确允许测试的范围内使用。2. 下载安装包先避开几个常见坑安装包获取是整个流程里最容易让人懵的地方因为 Tenable 官网的下载逻辑跟普通软件不一样。它不是给你一个固定的“最新版.deb”链接而是走了一个带认证跳转的下载接口。不讲清楚这一点你很可能在官网里转半天点了半天按钮最后也没搞清楚下载链接到底怎么复制出来的。2.1 自己去官网下还是用命令行下载两种方式都行但我更推荐你用浏览器先登录 Tenable 下载页面然后拿到真实下载地址再回到命令行用 wget 或者 curl 下载。原因很简单Nessus 的下载页面需要你在浏览器里先接受 Tenable 的许可证协议没有这一步直接用 wget 去抓主页面抓回来的往往是 HTML 而不是安装包。浏览器里点一下“I Agree”之后页面会生成一个带参数的真实下载链接这个链接才是能直接拉文件的有效地址。浏览器下载方式虽然直观但有个缺点如果你在本地电脑下载还得再传到 Kali 上去来回折腾。我自己习惯的做法是在 Kali 的浏览器或者本机浏览器里打开下载页找到对应文件后右键复制下载链接然后在 Kali 终端里粘贴到 wget 后面。2.2 下载链接的结构和校验下载链接长什么样大概是这样的模式https://www.tenable.com/downloads/api/v1/public/pages/nessus/downloads/下载ID/download?i_agree_to_tenable_license_agreementtruefileNessus-10.9.4-debian10_amd64.deb其中下载ID是个数字编号它会根据 Nessus 版本和文件类型变化不固定。你不需要背这个结构只需要知道一点链接里带上了i_agree_to_tenable_license_agreementtrue这个参数这是 Tenable 用来标记用户已同意许可证的。当你拿到链接后在 Kali 终端执行cd ~/Downloads wget https://www.tenable.com/downloads/api/v1/public/pages/nessus/downloads/下载ID/download?i_agree_to_tenable_license_agreementtruefileNessus-10.9.4-debian10_amd64.deb -O Nessus-10.9.4-debian10_amd64.deb注意我用了双引号把 URL 包起来了因为链接里有参数在 bash 里不加引号会被解释成后台执行符号命令会变形。下载完成后校验一下文件完整性。下载页面上会列出对应文件的 SHA256 校验和sha256sum Nessus-10.9.4-debian10_amd64.deb把输出的结果和官网页面上显示的值比对一下一致再装。这个习惯很重要尤其是从命令行下载的场景等于多了一道保险。2.3 deb 包到底该选哪个版本进入下载页面后你会发现 Nessus 提供好几种安装包RPM、DEB、tar.gz、macOS 版、Windows 版甚至还有针对 AIX 和 Solaris 的。作为 Kali Linux 用户你只需要盯住 DEB 文件。具体选哪个 deb看页面文件名里的标记。比如Nessus-10.9.4-debian10_amd64.debNessus-10.9.4-debian11_amd64.debKali 本身基于 Debian 测试分支滚动更新系统库版本往往比 Debian 稳定版还要新。实际操作中debian10 和 debian11 两个标识的 deb 包在较新版本的 Kali 上都能正常工作因为 Tenable 的“debian10”包本身对 glibc 的要求并不苛刻而且 Kali 的 glibc 版本通常很新。不过有个原则值得记住优先选页面里和你系统架构一致、标识较新的 deb 包没有把握就两个都下载下来用dpkg -I查看包信息和依赖要求dpkg -I Nessus-10.9.4-debian10_amd64.deb注意这里的deb包标注的 Debian 版本并不是绝对兼容标准只是 Tenable 构建时用的基础环境。Kali 的包管理机制跟 Debian 同源只要没有 glibc 这类底层库冲突装进去就能跑。提示如果 wget 下载中途断掉不要重新点一遍页面。直接加-c参数续传就行。这也是我下载大安装包时的常规操作。3. 安装与启动把服务老老实实跑起来下载和解压只是前菜真正有意思的部分从安装开始。Nessus 的安装跟普通软件不太一样它不是一个简单的“解压到某个目录”而是会创建系统服务、独立用户、日志目录和数据目录。你得理解它装完之后动了哪些东西出了问题才知道去哪看。3.1 用 dpkg 装好之后发生了什么安装命令很简单一条 dpkg 就搞定sudo dpkg -i Nessus-10.9.4-debian10_amd64.deb如果你的 Kali 系统之前装过旧版本dpkg 会自动尝试覆盖安装。安装过程会在屏幕上打印一些信息告诉你服务已经注册、默认监听端口是 8834。装完以后你可以看一下它究竟装了哪些东西。命令dpkg -L nessus输出结果会告诉你目录结构重点记住/opt/nessus这个根目录。Nessus 把二进制文件、插件库、日志、配置都放在这一棵目录树里/opt/nessus/sbin/nessuscli命令行管理工具后面很多操作会用到。/opt/nessus/sbin/nessusd主服务进程。/opt/nessus/var/nessus/logs/日志目录排错全靠它。/opt/nessus/etc/nessus/配置目录。依赖问题偶尔会冒出来。如果 dpkg 报依赖缺失别急着慌先试标准修复命令sudo apt install -f这条命令会尝试把缺失的依赖补齐。如果apt install -f解决不了再考虑是不是系统源的问题运行sudo apt update之后重新执行。3.2 启动服务并确认它在监听安装完成后Nessus 的 systemd 服务单元已经注册好了。启动方式sudo systemctl start nessusd sudo systemctl enable nessusdenable是让它在开机时自动启动。如果你只是临时用一下不打算长期开着其实只执行start就够了。虚拟机里做实验的话我更建议开着省得每次重启后还要手动拉起来。启动后别急着打开浏览器先用几条命令确认服务状态sudo systemctl status nessusd --no-pager -l看状态应该为active (running)。然后确认端口 8834 在监听sudo ss -lntp | grep 8834输出里如果能看到类似LISTEN 0 4096 *:8834的行说明 Web 服务已经正常起监听。顺便看下初始日志确认初始化过程没有异常sudo tail -f /opt/nessus/var/nessus/logs/nessusd.messages这条日志文件是整个 Nessus 排错的第一入口之后不管遇到什么问题都先来看它。3.3 进入 Web 初始化向导创建管理员账号服务正常监听后浏览器访问https://127.0.0.1:8834注意是https不是http端口 8834 本身就是 HTTPS。第一次访问时浏览器会提示“连接不是私密连接”或“证书无效”这很正常因为 Nessus 默认用的是自签名证书。你需要在浏览器里点“高级”“继续前往”之类的选项把这个站点加入信任例外。这一步不要慌证书问题不影响使用。进入初始化页面后首先会让你创建一个管理员账号也就是之后登录 Nessus Web 控制台的账号。用户名和密码要记好后面所有管理操作都用它登录。提示如果你是远程访问 Kali 上的 Nessus访问地址就是https://你的Kali主机IP:8834。但一定要确认防火墙或者云安全组放通了 8834 端口。Kali 默认防火墙通常不折腾人但有些虚拟机模板里装了防火墙规则需要提前排查。4. 激活 Nessus Essentials跑出第一次扫描账号建好之后Nessus 会把你引导到激活页面。这一步很多人会卡住因为激活不是随便填个邮箱就行它需要你输入 Tenable 官方发放的激活码。激活码怎么拿下面一步步来。4.1 去 Tenable 官网申请一个免费激活码打开 Tenable 官网注册/登录你的账户在 Nessus 产品页面里找到 Nessus Essentials 的注册入口。它通常要求你填写姓名、邮箱然后会发一封验证邮件点收件箱里的链接完成确认。确认之后Tenable 会在你的账户后台显示一个激活码Activation Code是一串比较长的字母数字组合。把它复制下来。拿到激活码之后在 Nessus Web 初始化界面的激活输入框里粘贴选择好要用的插件集。默认选项通常建议选“Nessus Core”或“Nessus Essentials”配套的插件集。插件集的选择主要影响你能跑的扫描类型比如 Web 漏洞扫描、配置审计这类插件是否包含在内。我见过不少人在这里犯的一个错误点完激活按钮后看到页面上的进度条半天不走就以为卡死了于是关掉页面重新来。其实这阶段是 Nessus 正在下载和编译插件库耗时长是正常的。新装机器上这个阶段短则十几分钟长则一两个小时取决于网络速度和 CPU 性能。你只需要耐心等或者去后台盯日志sudo tail -f /opt/nessus/var/nessus/logs/nessusd.messages日志里如果出现“All plugins loaded”或类似字样说明插件初始化和编译已经完成这时候再刷新页面就不会一直转圈了。4.2 创建你的第一次基础网络扫描激活完成后Nessus 主界面会出现“My Scans”和“New Scan”按钮。点新建扫描会看到一堆扫描模板——从基础网络扫描、恶意软件检测、Web 应用测试到认证补丁审计、合规性检查等等。第一次上手我建议从“基础网络扫描”Basic Network Scan开始。原因很简单这个模板不需要配置任何凭据只需要填目标 IP 或网段Nessus 会自动去做端口发现、服务识别和漏洞探测是最不依赖环境的一类扫描。参数设置的要点Targets这一栏填要扫描的 IP 或网段。可以是单 IP、IP 范围比如192.168.1.10-192.168.1.20也可以是 CIDR 写法比如192.168.1.0/24。Name建议起得有意义比如按资产或项目名命名别起全默认名。后面报告多了你会发现清晰的命名是高效管理的基石。其他设置项可以先不动。扫描设置里的“扫描强度”“端口范围”这些高级项等你熟了一点再调。新手先用默认Nessus 默认配置已经是很平衡的折中方案。保存扫描配置之后点右下角的“Launch”按钮扫描任务就会开始执行。扫描过程中你会看到主机列表里出现目标资产每个资产下面有端口、服务的探测状态以及扫描时间。基础网络扫描的耗时跟目标数量和网络环境强相关。扫一个中小型网段通常需要几十分钟到几小时。扫描过程不影响你做其他事你可以让它后台跑着先去把报告模板看完。4.3 扫描报告怎么看扫描跑完之后点进扫描任务切换到Vulnerabilities标签页就能看到目标资产的漏洞列表。Nessus 对每个漏洞都给了 CVSS v3 评分、严重级别和详细描述。严重级别分成四档级别含义常见例子Critical可被远程利用且影响大远程代码执行、默认口令High容易被利用影响范围较大SQL 注入、权限提升Medium需要一定条件才能利用信息泄露、中间人攻击风险Low影响较小一般需结合其他问题版本号泄露、非关键配置问题报告里最值得看的不只是漏洞列表还有两个实用功能Hosts标签页按主机维度查看每台机器的问题适合做资产责任人推送。谁的机器谁认领比自己硬啃所有漏洞高效得多。Remediations标签页给出修复建议比如“升级到某个版本”“关闭某个服务”“修改某类配置”。这部分可以导出作为整改任务清单。导出报告也很简单扫描完成后点Export可以选择导出为 HTML、PDF、CSV 还是 Nessus 原生格式。实际工作中CSV 适合拿来二次统计HTML 适合直接当交付文档。注意免费版 Nessus Essentials 有 16 个 IP 的扫描上限。如果你目标网段有几十上百台机器要么分批扫要么考虑购买商业版授权。这一点很多人用着用着才想起来到时候还得回头清数据重新规划。5. 排错、优化、常用命令这些坑我替你踩过了Nessus 装完之后真正让人头疼的是使用中的各种“不配合”。我把自己在 Kali 上用过一段时间后遇到的典型问题整理了一下按现象、原因、解决办法的方式列出来你可以直接当速查表用。5.1 服务起不来状态一直报失败现象执行sudo systemctl start nessusd后过了一会再查状态发现是failed。排查思路先看服务日志sudo journalctl -u nessusd --no-pager -n 50同时看 Nessus 自己的日志sudo tail -n 50 /opt/nessus/var/nessus/logs/nessusd.messages常见原因有几个端口被占用。如果之前装过其他版本或者别的软件占了 8834服务起不来。解决办法确认端口占用并停掉冲突进程或者改 Nessus 监听端口。权限问题。/opt/nessus下的文件所有者不对Nessus 服务用户无法读取插件库。解决办法确认/opt/nessus的属主是nessus用户和组。磁盘空间满了。Nessus 启动时需要初始化插件库和数据库磁盘写不进去就会反复失败。用df -h检查一下根分区的空间。改 Nessus 监听端口的命令如果你真想换端口可以用sudo /opt/nessus/sbin/nessuscli fix --set xmlrpc_listen_port8834这个命令的8834可以替换成你想用的端口。改完重启服务生效。5.2 网页一直转圈卡在加载中现象插件激活后Web 界面一直显示加载中刷新也没用但系统负载又很高。这个场景我太熟了。新装 Nessus 后首次运行插件库需要编译成优化过的缓存格式这个过程会持续占用 CPU。你在 Kali 上跑top很可能会看到 nessusd 进程的 CPU 占用率接近 100%。这不代表卡死是它在埋头干活。耐心等它编译完页面就会自己恢复正常。如果等了很久超过两三个小时还是不行再怀疑是不是插件下载不完整。对策是重新跑一次插件更新sudo systemctl stop nessusd sudo /opt/nessus/sbin/nessuscli update --plugins-only sudo systemctl start nessusd注意更新插件前先停服务否则会提示插件库被占用。我就因为图省事没停服务直接执行命令结果收到一把报错老老实实重启服务之后就好了。5.3 扫描速度慢怎么调优Nessus 默认配置求稳不会把扫描线程拉满因为怕把目标网络打崩。但如果你在隔离的测试环境里希望跑快一点可以改几个设置在扫描配置的Discovery设置里把“扫描速度”调成“正常”或“激进”端口扫描策略改成“全部端口”。在Advanced设置里增大最大并发主机数Max simultaneous hosts和并发检查数Max simultaneous checks per host。默认值比较保守测试环境里可以拉高一倍左右。别同时炮轰目标。并发数拉满扫一堆机器不仅可能触发目标的入侵检测系统还容易造成误报。我一般把同时扫描的主机数控制在 10 台以内。另外扫描行为会受到网络环境影响。跨网段扫远程目标时延迟高会显著拖慢速度。如果可以把扫描器的位置尽量放到和目标网络同一二层域内。5.4 Nessus CLI 到底能干什么Web 界面能做大部分事但有些操作必须在命令行里完成。说几个我常用的命令# 查看当前用户列表 sudo /opt/nessus/sbin/nessuscli lsuser # 新增一个用户可指定管理员权限 sudo /opt/nessus/sbin/nessuscli adduser username # 删除用户 sudo /opt/nessus/sbin/nessuscli rmuser username # 切换许可证激活码 sudo /opt/nessus/sbin/nessuscli fetch --register-only --code 新的激活码 # 只更新插件库 sudo /opt/nessus/sbin/nessuscli update --plugins-only # 重置 Web 界面密码忘了管理员密码时用 sudo /opt/nessus/sbin/nessuscli fix --set admin_password新密码一个很实用的排查思路Web 登录不上了先跑lsuser看看用户是否还在如果用户在但密码忘了直接fix重置。这些命令我都写过脚本存着省得临时查文档。5.5 插件更新失败或提示许可证过期Nessus Essentials 的免费许可证本质上是定期续期的。你可能会遇到插件更新时提示许可证无效。解决办法就是重新登录 Tenable 账户去看当前的激活码是否还有效。如果是续期更新同一个 Email/账号下的激活码即可然后用sudo /opt/nessus/sbin/nessuscli fetch --register-only --code 新激活码之后正常nessuscli update --plugins-only插件就能继续更新了。6. 最后再聊几点实际操作里的心得这篇文章写到这该说的流程和坑基本都覆盖了。最后我再分享几个自己长期使用中沉淀下来的习惯不一定在官方文档里能看到但确实能提升效率和减少折腾。第一安装完 Nessus 之后第一时间在 Kali 里做一个虚拟机快照。这个操作太值了。插件库更新、激活码变更、配置调整哪个环节都可能把服务搞坏。有了快照出了问题拉回去重新初始化耽误不了几分钟。没有快照你只能看着/opt/nessus一点点重新编译插件。第二扫描目标一定要在白名单里过一遍。我这几年见过太多人兴致勃勃装完 Nessus随手填了一个公网 IP 就开始扫。扫到自己的服务器还好扫到别人的责任和风险都是实打实的。在扫描配置里认真核对目标资产范围是比任何技术操作都重要的一步。我自己的习惯是凡是需要扫的 IP一律先在文档里登记用途再写进扫描清单。第三报告比扫描结果本身更考验功夫。Nessus 输出的漏洞列表只能算原始素材真正有价值的是你针对业务环境做的分析和修复建议。同一个漏洞在公网服务器和在内网测试机上的优先级完全不一样。我一般会在导出报告的基础上再按资产归属和影响范围重新圈一遍重点而不是把原始列表直接甩给别人。养成这个习惯之后你会明显感觉自己的安全评估能力上了不止一个档次。最后说一句Nessus 装在 Kali 里只是一个工具箱里的新成员。真正决定它能发挥多大价值的是你对目标网络的理解程度和对漏洞原理的掌握深度。工具给的是线索判断和处置还得靠人。希望这篇文章能帮你把它顺顺当当地跑起来少走点我当年走过的弯路。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进