Kali Linux Bash 和 Python 自动化

Kali LinuxKali LinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在这个实验中,你将学习如何在 LabEx 虚拟机(VM)环境中,使用 Bash 和 Python 脚本自动化 Kali Linux 中的任务。重点是简化重复性的安全审计任务,例如使用 Nmap 进行网络扫描和日志解析。你将创建脚本、设置权限、使用 Cron 任务安排自动化任务,并测试它们的执行。本实验专为初学者设计,提供了详细的、循序渐进的指导,帮助你在 Kali Linux 容器中构建基本的自动化技能。当你打开终端时,你将自动连接到 Kali Linux 容器的 shell,准备开始练习。

设置环境和安装工具

在第一步中,你将在 Kali Linux 容器内设置你的工作环境,并安装实验所需的工具。这是基础步骤,确保你拥有自动化任务(如网络扫描和日志解析)所需的所有软件。

当你在 LabEx 虚拟机(VM)中打开终端时,你将自动连接到 Kali Linux 容器的 shell。无需手动启动容器或进入 shell;环境已经为你配置好了。

让我们从更新软件包列表并安装基本工具开始,例如用于网络扫描的 nmap 和用于脚本编写的 python3。这些工具对于接下来的任务至关重要。在终端中运行以下命令来更新系统并安装所需的软件包。在每个命令后按 Enter 键:

apt update
apt install -y nmap python3

这些命令将刷新软件包列表,并安装 nmappython3(如果它们尚未安装)。安装可能需要几分钟,请等待其完成。你将看到输出,指示下载和安装的进度。

安装完成后,通过检查其版本来验证 nmap 是否已安装。运行此命令:

nmap --version

预期的输出将类似于这样(版本号可能有所不同):

Nmap version 7.91 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.6 openssl-1.1.1n libpcre-8.39 libpcap-1.10.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available NSE scripts: 609

这确认了 nmap 已安装并可以使用。接下来,通过运行以下命令检查 python3 是否已安装:

python3 --version

预期的输出将类似于这样(版本号可能有所不同):

Python 3.9.2

这验证了 python3 可用于脚本编写任务。通过安装这些工具,你已经为后续步骤中的自动化任务准备好了 Kali Linux 容器环境。此步骤确保所有后续操作都可以执行,而不会出现与缺少软件相关的问题。

创建用于 Nmap 扫描的 Bash 脚本

现在你的环境已经设置好必要的工具,让我们创建一个 Bash 脚本来自动化 Nmap 扫描。Bash 脚本是自动化 Linux 中重复性任务的强大方法,在这一步中,你将学习如何编写一个简单的脚本来在 localhost 上运行 Nmap 扫描。

Bash 脚本是一个纯文本文件,其中包含 shell 执行的一系列命令。这允许你通过一次执行运行多个命令来节省时间。由于你已经在 Kali Linux 容器的 shell 中(打开终端时自动连接),你可以直接开始工作。

让我们在 /root 目录下创建一个名为 nmap_scan.sh 的脚本。请仔细按照以下说明创建并保存脚本。运行以下命令以打开 nano 文本编辑器并创建一个新文件:

nano /root/nmap_scan.sh

这将打开 nano 编辑器。现在,在编辑器中键入或粘贴以下内容:

#!/bin/bash
echo "Starting Nmap scan on localhost..."
nmap localhost
echo "Scan completed."

让我们理解这个脚本。#!/bin/bash 这一行表示这是一个 Bash 脚本。echo 命令将消息打印到终端,以通知你扫描的开始和结束。nmap localhost 命令在你的本地机器上运行一个基本扫描,这是一个安全的学习目标。

要在 nano 中保存文件,请按 Ctrl+O,然后按 Enter 确认文件名 /root/nmap_scan.sh。保存后,按 Ctrl+X 退出编辑器。你将返回到终端提示符。

现在,通过列出 /root 目录的内容来验证文件是否已成功创建。运行此命令:

ls -l /root

你应该看到类似于这样的输出:

-rw-r--r-- 1 root root  85 Oct 12 10:15 nmap_scan.sh

这确认了文件 nmap_scan.sh 存在于 /root 目录中。在下一步中,你将使此脚本可执行并进行测试。到目前为止,你已经成功创建了你的第一个用于网络扫描的自动化脚本。

创建用于日志解析的 Python 脚本

在创建了用于 Nmap 扫描的 Bash 脚本之后,现在让我们编写一个 Python 脚本来自动化日志解析。日志解析是安全分析中的常见任务,你从中提取日志文件中的特定信息。由于 Python 的简单性和强大的文本处理能力,它非常适合这项任务。

在这一步中,你将在 /root 目录中创建一个名为 log_parser.py 的 Python 脚本来解析一个示例日志文件。由于你已经在 Kali Linux 容器的 shell 中(打开终端时自动连接),你可以直接进行任务。

首先,让我们创建一个示例日志文件来解析。运行以下命令,在 /root 目录中创建一个名为 sample.log 的文件,其中包含一些虚拟日志条目:

echo -e "2023-10-12 10:00:00 INFO System started\n2023-10-12 10:01:00 ERROR Connection failed\n2023-10-12 10:02:00 INFO User logged in" > /root/sample.log

通过列出 /root 目录的内容来验证文件是否已创建:

ls -l /root

你应该看到类似于这样的输出:

-rw-r--r-- 1 root root 112 Oct 12 10:20 sample.log

现在,让我们创建 Python 脚本。打开 nano 编辑器,通过运行以下命令创建一个名为 log_parser.py 的新文件:

nano /root/log_parser.py

nano 编辑器中,键入或粘贴以下内容:

#!/usr/bin/env python3
print("Starting log parsing...")
with open('/root/sample.log', 'r') as file:
    for line in file:
        if 'ERROR' in line:
            print(line.strip())
print("Log parsing completed.")

此脚本以 #!/usr/bin/env python3 开头,以指定它应该使用 Python 3 运行。它打开 /root/sample.log 文件,逐行读取它,并且仅打印包含单词 ERROR 的行。print 语句提供关于解析过程的开始和完成的反馈。

要保存文件,请按 Ctrl+O,然后按 Enter 确认文件名 /root/log_parser.py。保存后,按 Ctrl+X 退出编辑器。

再次通过列出 /root 目录的内容来验证文件的创建:

ls -l /root

你应该看到类似于这样的输出:

-rw-r--r-- 1 root root 112 Oct 12 10:20 sample.log
-rw-r--r-- 1 root root 150 Oct 12 10:22 log_parser.py

这确认了这两个文件都在正确的位置。在下一步中,你将使此脚本以及上一步中的 Bash 脚本可执行。到目前为止,你已经成功创建了一个用于日志解析的 Python 脚本。

设置脚本的权限

/root 目录中创建了 Bash 脚本 nmap_scan.sh 和 Python 脚本 log_parser.py 之后,下一步是使它们可执行。在 Linux 中,脚本需要执行权限才能直接从终端运行。此步骤将指导你为这两个脚本设置正确的权限。

Linux 中的文件权限控制谁可以读取、写入或执行文件。默认情况下,新创建的文件没有执行权限,因此你必须使用 chmod 命令显式地授予它们。由于你已经在 Kali Linux 容器的 shell 中(打开终端时自动连接),你可以直接进行操作。

首先,通过运行以下命令检查 /root 目录中文件的当前权限:

ls -l /root

你应该看到类似于这样的输出:

-rw-r--r-- 1 root root  85 Oct 12 10:15 nmap_scan.sh
-rw-r--r-- 1 root root 150 Oct 12 10:22 log_parser.py

请注意,权限字符串中没有 x(例如,-rw-r--r--),这意味着这些文件尚未可执行。让我们通过为这两个脚本添加执行权限来改变这一点。运行以下命令:

chmod +x /root/nmap_scan.sh
chmod +x /root/log_parser.py

这些命令使用 chmod +x 为所有用户添加对指定文件的执行权限。现在,通过再次列出文件来验证更新后的权限:

ls -l /root

你应该看到类似于这样的输出:

-rwxr-xr-x 1 root root  85 Oct 12 10:15 nmap_scan.sh
-rwxr-xr-x 1 root root 150 Oct 12 10:22 log_parser.py

注意权限中的 x(例如,-rwxr-xr-x),这表示这些文件现在是可执行的。这一步至关重要,因为如果没有执行权限,你将无法直接运行这些脚本。在下一步中,你将测试这些脚本以确保它们按预期工作。

测试脚本执行

现在你已经在 /root 目录中创建了 nmap_scan.shlog_parser.py 并且设置了执行权限,是时候测试它们以确保它们按预期工作了。在自动化脚本之前手动测试它们是一个很好的实践,可以捕获任何错误或问题。由于你已经在 Kali Linux 容器的 shell 中(打开终端时自动连接),你可以直接进行操作。

让我们从测试用于 Nmap 扫描的 Bash 脚本开始。运行以下命令来执行脚本:

/root/nmap_scan.sh

你应该看到类似于这样的输出(确切的 Nmap 结果可能因环境而异):

Starting Nmap scan on localhost...
Starting Nmap 7.91 ( https://nmap.org ) at 2023-10-12 10:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 1000 closed ports
PORT   STATE SERVICE
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
Scan completed.

此输出确认 nmap_scan.sh 脚本成功运行并在 localhost 上执行了基本扫描。接下来,让我们测试用于日志解析的 Python 脚本。运行以下命令:

/root/log_parser.py

你应该看到类似于这样的输出:

Starting log parsing...
2023-10-12 10:01:00 ERROR Connection failed
Log parsing completed.

此输出确认 log_parser.py 脚本成功运行并解析了 /root/sample.log 文件以显示包含 ERROR 的行。通过手动运行这些脚本,你已经验证了它们按预期运行。在最后一步中,你将学习如何使用 Cron 作业来自动化它们的执行。

使用 Cron 作业调度脚本

在最后一步中,你将学习如何使用 Cron 作业自动执行你的脚本 nmap_scan.shlog_parser.py。Cron 是 Linux 中基于时间的作业调度程序,它允许你以指定的间隔运行脚本或命令。这是自动化安全审计中重复性任务的关键技能。由于你已经在 Kali Linux 容器的 shell 中(打开终端时自动连接),你可以直接进行操作。

要调度任务,你需要编辑 crontab 文件,该文件保存了当前用户的已调度作业列表。通过运行以下命令打开 crontab 编辑器:

crontab -e

这将在文本编辑器中打开 crontab 文件,很可能是 nano。如果提示选择编辑器,请通过输入相应的数字并按 Enter 键来选择 nano。滚动到文件的底部,并添加以下行来调度你的脚本每 5 分钟运行一次:

*/5 * * * * /root/nmap_scan.sh >> /root/nmap_scan.log 2>&1
*/5 * * * * /root/log_parser.py >> /root/log_parser.log 2>&1

让我们分解一下这个配置。*/5 * * * * 意味着作业将每 5 分钟运行一次。这五个字段分别代表分钟、小时、月中的日期、月份和星期几。路径 /root/nmap_scan.sh/root/log_parser.py 指定要运行的脚本,>> 将它们的输出重定向到日志文件 /root/nmap_scan.log/root/log_parser.log 以供以后查看。2>&1 确保错误消息也被捕获在日志文件中。

要在 nano 中保存更改,请按 Ctrl+O,然后按 Enter 确认。保存后,按 Ctrl+X 退出编辑器。你将返回到终端提示符,并且你可能会看到类似以下的消息:

crontab: installing new crontab

这确认了 Cron 作业已被调度。要验证作业是否已添加,请通过运行以下命令列出当前的 crontab 条目:

crontab -l

你应该看到类似于这样的输出:

*/5 * * * * /root/nmap_scan.sh >> /root/nmap_scan.log 2>&1
*/5 * * * * /root/log_parser.py >> /root/log_parser.log 2>&1

这确认了你的脚本被调度为每 5 分钟运行一次。请注意,由于容器环境,Cron 守护程序可能不会在此实验会话期间持续运行,但配置过程保持不变。你现在已经完成了脚本的自动化设置。

总结

在这个实验中,你学习了使用 Bash 和 Python 脚本在 Kali Linux 中进行自动化的基本知识。你首先设置了你的环境并安装了必要的工具,如 Nmap 和 Python。然后,你创建了一个 Bash 脚本来自动化 Nmap 扫描,以及一个用于日志解析的 Python 脚本。你为这些脚本设置了执行权限,测试了它们的功能,最后使用 Cron 作业将它们调度为自动运行。这些技能为在受控的 Kali Linux 容器环境中自动化网络安全和系统管理中的重复性任务奠定了坚实的基础。