ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

Kali Linux安装Nessus完整指南:从依赖修复到激活避坑全记录

Kali Linux安装Nessus完整指南:从依赖修复到激活避坑全记录

在 Kali Linux 上完整安装 Nessus:一份贴近实战的踩坑指南

如果你手里有一台 Kali Linux,又恰好需要做内网漏洞扫描、基线核查或渗透测试前的资产普查,装一个 Nessus 是很自然的选择。它的社区版免费、更新机制成熟、插件库庞大,比直接用开源扫描器省不少配置功夫。但 Kali 的包管理和普通 Debian 不完全一样,默认的源里没有 Nessus,直接从官网下载安装包也经常因为软件源、依赖、端口占用或者激活流程卡住。这篇就按我自己的实操路径写一份带细节的安装教程——不是只给命令清单,而是把每个环节“为什么这么做”也讲清楚,顺便把我踩过的坑一并列出来。


1. 安装前准备与版本认知

1.1 为什么选择 Nessus,而不是只看开源扫描器

很多人在 Kali 上做漏洞扫描时,第一反应是装 OpenVAS 或 nuclei 这类工具。OpenVAS 确实免费,但它的插件更新速度和对新漏洞的覆盖往往跟不上 NVD 的节奏;nuclei 适合做模板化的快速验证,做深度漏报检测就差点意思。Nessus 的优势体现在三个地方:一是漏洞规则库更新快,Tenable 的 Research 团队会针对新披露的漏洞提前推送检测插件;二是扫描结果的可读性高,出来的报告有风险评级、实验验证步骤和修复建议,汇报给管理层也方便;三是它可以自定义扫描策略,合规基线扫描(比如等保、CIS)也能直接复用现成的模板。如果你的工作场景主要是在内网做漏洞扫描、渗透测试前期信息收集,或者给客户做定期安全评估,Nessus 是一个非常顺手的工具。

1.2 Kali Linux 的版本确认与网络条件

Kali 的底座是 Debian,但它的内核、默认用户权限和部分库文件的版本有自己的一套。装 Nessus 之前,建议先确认一下系统版本,避免装错安装包类型:

lsb_release -a dpkg --print-architecture

大多数 Kali 是 amd64 架构,这个后面选包用得上。另外 Nessus 在安装阶段需要从 Tenable 服务器拉取插件和激活信息,所以你的机器必须能正常访问外网。如果你的工作环境有代理,记得先把代理配好,不然最后激活那一步会卡到怀疑人生。建议用curl -I https://www.tenable.com先测一下连通性,省得后续装完发现是网络问题。

注意:Kali 默认以 root 身份运行,Nessus 的服务默认监听 8834 端口,这两个点后面都会用到。


2. 获取安装包:Deb 还是 RPM

2.1 从官网下载正确的安装包

Nessus 官方提供以下几种安装包格式:.deb(Debian/Ubuntu/Kali)、.rpm(RHEL/CentOS/Fedora)、还有.tar.gz和适用于 macOS 的.dmg。Kali 基于 Debian,所以我们要选.deb包。

下载页面是 Tenable 的官网,需要注册一个账号才能进入下载区。注册是免费的,用邮箱就能注册。在下载页面选择 Nessus,然后选对应的平台(这里选 Linux Debian amd64),就会得到一个类似Nessus-10.7.x-debian10_amd64.deb的文件。这里有个小细节:Kali 的版本可能显示为 Debian 12 或者更新,但 Nessus 的 deb 包兼容性很好,选当前主流的 Debian 版本即可。

如果你所在的网络环境不方便从官网下载,可以先在一个有网的机器上下载好 deb 包再拷贝到 Kali 里。Nessus 的安装包不到 100MB,拷贝成本很低。

2.2 安装包类型对后续升级的影响

deb包安装后,Nessus 的二进制文件统一放在/opt/nessus下,升级时可以直接用官方的自动更新,也可以手动下载新包重新dpkg -i覆盖安装。rpm包则把文件放在/opt/nessus但用 RPM 数据库管理,升级路径稍有差异。对 Kali 用户来说,坚持用.deb是最省事的。


3. 安装步骤:从 dpkg 到服务启动

3.1 安装过程中可能遇到的依赖问题

下载好 deb 包后,安装命令很简单:

dpkg -i Nessus-10.7.x-debian10_amd64.deb

但这里有个 Kali 特有的坑:Kali 的源里某些基础库版本比 Debian 低或高,或者某些过渡包(transitional package)没有被默认安装。Nessus 官方 deb 包的依赖里可能包含libc6、libssl等基础库,这些在 Kali 上基本都满足,但保险起见,建议安装时先运行:

apt install -f

这个命令会修复安装过程中的依赖问题,补齐缺少的依赖包。如果你直接dpkg -i报错说缺少依赖,不要慌,先运行上面这行再重新安装一次,90% 的情况都能解决。

3.2 安装与启动服务验证

安装完成后,Nessus 会注册一个名为nessusd的系统服务。启动它:

systemctl start nessusd systemctl enable nessusd

第一行是启动服务,第二行是设置开机自启。如果你想验证服务状态,用:

systemctl status nessusd

正常情况下会看到active (running)的状态。如果服务没有启动,排查的第一步是看日志。Nessus 的日志放在:

/opt/nessus/var/nessus/logs/nessusd.messages

用tail -f实时看这个日志,通常能直接看到报错原因。根据我的经验,最常见的原因是端口冲突——如果 8834 端口已经被别的进程占用,Nessus 就会启动失败。

提示:Nessus 的默认监听端口是 8834,不是 80 或 443。如果这个端口被占用,可以在配置文件里改,但强烈建议你直接释放这个端口,因为后续所有操作都已经默认绑定这个端口。


4. 浏览器初始化配置与激活

4.1 首次访问的 HTTPS 证书警告

服务启动后,浏览器访问https://<你的IP>:8834。第一次访问时浏览器会提示证书不安全,这是因为 Nessus 默认使用一个自签名证书。直接选择“继续访问”或“高级 → 继续前往”即可,这个提示不是异常,每一台新装的 Nessus 都会这样。当然,后期你可以替换成自己机构的证书,配置/opt/nessus/var/nessus/nessusd.conf里的相关参数即可。

4.2 创建管理员账号与激活码填写

页面会引导你创建一个管理员账号,这个账号用来登录 Nessus Web 控制台,不是 Linux 系统账号。用户名建议不要用admin,换一个略有辨识度的名字,比如nadmin或者自定义的名称,减少被扫描器爆破的风险。密码需要至少 12 位,包含大小写字母、数字和符号,Nessus 在密码策略上卡得比较严,直接按强密码规范设置即可。

账号建完后,系统会让你输入激活码。激活码分为几类:

  • Nessus Professional(商业版):需要付费订阅,有试用期,功能全开。
  • Nessus Essentials(免费版):注册后 Tenable 会发一封邮件,里面包含免费激活码,限制扫描 16 个 IP 地址,对于个人学习和初步评估完全够用。
  • Nessus Expert:更高级的版本,偏向攻击面管理和云环境评估。

收到激活码邮件后,把邮件里的代码粘贴进去,点击上传。如果这一步报“网络错误”或“无法验证激活码”,多半是网络问题,可以用ping测一下plugins.nessus.org这个域名,能 ping 通再去激活会顺利很多。

4.3 激活后的初始化等待

激活成功后,Nessus 会进入一个“插件初始化”阶段。这个阶段它会下载全量的漏洞检测插件,时间视网络情况而定,快的十分钟,慢的半小时以上。页面会显示一个进度条,这时候不要关闭浏览器或重启服务,否则可能导致插件拉取不完整。

如果你看到进度条长时间不流动,先检查网络是否稳定,其次可以看服务日志:

tail -f /opt/nessus/var/nessus/logs/nessusd.messages

日志里会有插件下载的进度信息。

注意:免费版虽然限制 IP 数量,但插件库和检测规则和商业版一样更新,这一点不用担心。


5. 插件更新机制

5.1 自动更新与手动更新的选择

Nessus 的检测能力完全依赖插件库。默认情况下,服务会每隔一段时间自动同步插件。如果你做扫描的频率高,或者需要用到最新的漏洞规则,建议保持自动更新开启。

手动更新方式也保留一个:

/opt/nessus/sbin/nessuscli update --all

这条命令会强制从 Tenable 服务器拉取最新的插件和扫描策略,更新完成后不需要重启服务。我会在每次做重要扫描前跑一次这个命令,确保检测规则是最新的。从实际体验看,Nessus 的新漏洞插件推送非常快,某个漏洞披露当天就能在 Nessus 里扫出来。

5.2 内网离线环境下的插件更新方案

如果你的 Kali 是内网测试机,不连通外网,那么插件更新会成为一个明显的瓶颈。这时候可以在一台能访问外网的机器上下载好插件包,再拷贝进来更新。Nessus 提供了离线更新文件all-2.0.tar.gz,下载后在 Kali 上执行:

/opt/nessus/sbin/nessuscli update /path/to/all-2.0.tar.gz

需要说明的是,这种做法在严格的断网环境里很常见,但操作前要确认 Nessus 版本和插件包版本的兼容性,版本之间差异太大会导致插件加载异常,反而影响扫描结果。


6. 常见问题与排查技巧

6.1 服务启动失败

症状是systemctl start nessusd之后马上退出,状态显示failed。按顺序排查:

ss -tlnp | grep 8834 tail -n 50 /opt/nessus/var/nessus/logs/nessusd.messages

第一种情况是端口被占用。第二种情况是目录权限问题,/opt/nessus下的文件属于root:nessus,如果你手动改过目录权限导致 Nessus 无法写日志或临时文件,也会启动失败。修复办法:chown -R root:nessus /opt/nessus。

6.2 激活码无效或者无法连接 Tenable

这个情况很常见。先检查系统时间:

date

如果系统时间和实际时间偏差超过几分钟,TLS 握手会失败,Nessus 会报“证书验证失败”或“激活码无法验证”。校准时间:

ntpdate pool.ntp.org

或者用timedatectl开启时间同步。

6.3 局域网内无法访问 Web 控制台

你在 Kali 本机上访问https://localhost:8834没问题,但是局域网内其他机器无法访问。这时检查 Nessus 的监听地址。默认配置下,Nessus 监听所有网卡的 8834 端口,理论上局域网可以直接访问。如果你用的是云主机或虚拟机,还需要在防火墙/安全组里放行 8834 端口。

Kali 本机的防火墙默认不一定开着,但如果你自己装了ufw,记得执行:

ufw allow 8834/tcp

6.4 扫描时报错与评分理解

第一次执行扫描时,很多新手会疑惑为什么某些主机显示为“无法扫描”或超时。这个跟 Nessus 的默认扫描策略有关:目标主机如果开启了防火墙,或者禁用了 ICMP,Nessus 会迁就这些情况调整 TCP 三次握手的探测方式。建议在扫描配置里勾选“Ping 探测”作为主机发现方式,同时结合端口扫描,避免漏报在线主机。

报告里的风险评分(CVSS 分数)也不用看得太重,Nessus 自己会有一个“严重性”评级,配合详细描述里的修复建议使用更实际。

6.5 Kali 升级后 Nessus 失效

Kali 是滚动发布,系统库文件经常升级。有时候升级完系统,Nessus 启动会报缺少某个.so文件,这是因为 Nessus 的部分依赖库是静态链接的旧版本,系统更新后动态链接库路径变了。解决办法很简单:直接重新安装一次原来版本的 deb 包(dpkg -i),或者升级到新版 Nessus,让它在安装时重新识别系统依赖。


7. 实用配置与心得总结

7.1 修改默认端口与证书

默认 8834 端口如果和你的业务冲突,可以用编辑器修改/opt/nessus/var/nessus/nessusd.conf:

Port=8834 ListenAddress=0.0.0.0

改完后重启服务。记得端口放行那里同步修改。

7.2 命令行扫描与API调用

除了 Web 界面,Nessus 支持命令行扫描。这个功能在你需要自动化时会非常有用:

/opt/nessus/sbin/nessuscli scan --help

通过脚本调用 Nessus API,可以定时跑扫描并把结果导出为 HTML 或 PDF。具体实现要基于实际业务封装,这里不展开,但方向是对的。

7.3 性能考量

Nessus 的扫描速度和多线程配置有关。默认情况下,它对单台主机的最大并发连接数并不算高。如果你在内网扫上千台资产,建议先在“策略”里调整并发参数,并尽量按网段分批次扫描,避免目标网络被打挂。


关于实际使用,最后分享两个小经验

我在实际配置 Nessus 时,最大的体会是:安装本身十分钟就能完成,但后续的激活网络问题和插件初始化才是真正的瓶颈。国内网络环境访问 Tenable 服务器经常不稳,建议在安装前就把代理或 DNS 调整好,不要等到激活那一步才开始排查。另外,Nessus 的插件库是它的灵魂,哪怕免费版只允许扫 16 个 IP,插件更新也一定要保持最新,不然旧插件对新增漏洞的检测能力会明显衰减。还有一个细节:扫描报告导出为 PDF 后,中文字体可能显示异常,这是字体库缺失导致的,需要单独在 Kali 里装中文字体。这个坑,踩过一次就记住了。

RELATED READING

延伸阅读

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