我正在尝试安装 nessus 以进行 Kali Linux 中的漏洞研究。Kali 在 Windows 11 上作为 WSL2 的 Win-Kex 实例运行。我已经下载了 Nessus 并尝试使用以下命令进行安装:
sudo dpkg -i Nessus-10.1.2-debian6_amd64.deb
但我得到了错误...
System has not been booted with systemd as init system (PID 1). Can't operate
完整错误是:
[sudo] password for kali:
(Reading database ... 189342 files and directories currently installed.)
Preparing to unpack Nessus-10.1.2-debian6_amd64.deb ...
Unpacking nessus (10.1.2) over (10.1.2) ...
Setting up nessus (10.1.2) ...
Unpacking Nessus Scanner Core Components...
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
- You can start Nessus Scanner by typing /bin/systemctl start nessusd.service
- Then go to https://CLI-WIN-001:8834/ to configure your scanner
我尝试从提示符启动服务,但出现同样的错误:
$ /bin/systemctl start nessusd.service
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
我尝试使用服务命令启动服务,但出现错误,并且未找到 nessusd 服务。
有人可以帮忙吗?
答案1
我正在尝试安装 nessus 以在 Kali Linux 中进行漏洞研究
首先(在我们讨论安装问题之前),除非您清楚了解并接受这些限制,否则这可能不是一个好主意。如果您查看我的个人资料,就会发现我回答了很多 WSL 问题 - 总体来说我觉得这很棒。但这是一个通常需要注意的方面不是一个不错的选择。
WSL2 中的网络是 NAT 的在后面/Windows 主机内部。不是直接桥接到物理网络。因此,您只能通过第 3 层访问 WSL2 之外的任何网络,这极大地阻碍了漏洞工具的使用。
虚拟机是在这种情况下,这是一个更好的选择。
附注:WSL2 网络领域目前有预览版改进。如果你使用的是 Windows 11 Pro/Education 或更高版本,则可以安装 Microsoft Store 中提供的 WSL Preview,然后按照说明操作这里打开桥接网络。结果可能有所不同。不含电池。等等。
系统尚未使用 systemd 作为初始化系统 (PID 1) 启动。无法操作。
核心问题是 WSL 不使用 Systemd,即使在默认使用 Systemd 的发行版中也是如此。相反,WSL 目前使用自己的 /init 进程作为 PID 1,它执行我在此答案中提到的一些 WSL 特定任务(因此我不会在这里重复它们)。
换句话说,如果不付出额外的努力,Systemd(以及systemctl
)将无法在 WSL 上运行。
从外观上看Nessus 文档,Nessus 确实在 中提供了一个 SysVInit 样式的脚本/etc/init.d/nessusd
。如果 Debian 软件包是这种情况,那么您应该能够通过以下方式启动它:
sudo service nessusd start
如果这不起作用(从评论来看,似乎不起作用),那么您仍然有几个选择:
查找 Nessus 的 Systemd 单元文件并确定其应如何启动。请参阅这个答案有关如何通过简单服务执行此操作的示例。
或者(除非您真的知道自己在做什么,否则我并不推荐这样做)在 WSL 中启用 Systemd,可以手动启用,也可以使用其中一个辅助应用程序(也链接在上面 Ask Ubuntu 答案中)。
答案2
我能够通过 Kali WSL 中的以下命令启动 Nessus:
sudo /opt/nessus/sbin/nessus-service
然后可以通过 URL 访问该服务https://<IP of WSL>:8834
答案3
我猜这是因为 WSL2 并没有真正“启动”Linux,相反,Linux 的行为更像一个 Docker 容器,没有任何类型的初始化系统。
也许使用 VM 会有所帮助。