简介
在这个实验中,你将学习如何通过在你的 LabEx 虚拟机上安装和配置 OpenSSH 服务器,为 Hydra 设置一个测试环境。这个可控的环境将使你能够在后续练习中安全地练习密码破解技术。
你将配置 SSH 服务器以启用密码认证和 root 用户登录,这对于 Hydra 测试至关重要。该过程包括修改配置文件、重启服务以及验证设置,以便进行后续的安全测试。
在这个实验中,你将学习如何通过在你的 LabEx 虚拟机上安装和配置 OpenSSH 服务器,为 Hydra 设置一个测试环境。这个可控的环境将使你能够在后续练习中安全地练习密码破解技术。
你将配置 SSH 服务器以启用密码认证和 root 用户登录,这对于 Hydra 测试至关重要。该过程包括修改配置文件、重启服务以及验证设置,以便进行后续的安全测试。
在这一步中,你将在你的 LabEx 虚拟机上安装一个 OpenSSH 服务器。首先,让我们了解一下什么是 SSH——它代表 Secure Shell(安全外壳协议),是一种在不安全网络上的两台计算机之间创建安全通道的网络协议。当你需要远程访问系统并确保通信加密时,这一点尤为重要。
我们要安装的 OpenSSH 服务器是 Linux 系统上最常见的 SSH 协议实现。通过进行此设置,我们正在创建一个可控环境,以便在后续实验中安全地测试像 Hydra 这样的密码破解工具。这类似于安全专业人员在安全、隔离的环境中测试系统漏洞的方式。
首先,你需要更新软件包列表。这能确保你的系统了解软件包的最新可用版本:
sudo apt update
sudo
命令会赋予你管理员权限,而 apt update
会刷新系统的可用软件包列表。
现在安装 OpenSSH 服务器软件包。这将下载并设置运行 SSH 服务器所需的所有组件:
sudo apt install -y openssh-server
-y
标志会自动对安装过程中的任何提示回答“yes”,使安装过程更顺畅。
由于我们是在 Docker 容器(一种轻量级、隔离的环境)中操作,因此需要手动启动 SSH 服务。通常情况下,它会自动启动,但我们稍后会处理该配置:
sudo service ssh start
让我们验证 SSH 服务器是否正常运行。此命令用于检查 SSH 服务的当前状态:
sudo service ssh status
你应该会看到包含“active (running)”的输出,这确认了服务正在正常工作。
最后,我们将检查 SSH 服务器是否在默认端口(22)上监听。端口就像是服务用于通信的“门”,而 SSH 传统上使用端口 22:
ss -tulnp | grep sshd
ss
命令用于显示套接字统计信息,我们正在过滤与 SSH 相关的条目。你应该会看到显示 sshd
在 *:22
或 0.0.0.0:22
上监听的输出,这意味着它已准备好在所有网络接口上接受连接。
在这一步中,你将配置 SSH 服务器以启用密码认证,这是后续步骤中使用 Hydra 进行测试所必需的。SSH(Secure Shell,安全外壳协议)是一种允许对系统进行安全远程访问的协议。默认情况下,现代 SSH 配置为了优先保障安全性,会禁用密码认证,转而使用基于密钥的认证方式。然而,由于 Hydra 是一款密码破解工具,为了测试目的,我们需要临时启用密码认证。
首先,备份原始的 SSH 配置文件。在进行任何系统更改之前,这是一个良好的做法,以便在需要时可以恢复原始设置:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
打开 SSH 服务器配置文件进行编辑。我们使用 nano,这是一款适合初学者的简单文本编辑器。该文件包含了控制 SSH 服务器运行方式的所有设置:
sudo nano /etc/ssh/sshd_config
找到并修改以下行(如果它们不存在,则添加)。这些设置启用密码认证并允许 root 用户登录,这是我们测试环境所需要的:
PasswordAuthentication yes
PermitRootLogin yes
保存文件(Ctrl+O,回车)并退出 nano(Ctrl+X)。请记住,在重启 SSH 服务之前,更改不会生效。
重启 SSH 服务以应用更改。这会告知系统重新加载包含我们新设置的配置文件:
sudo service ssh restart
验证新配置是否已生效。此命令会检查当前的 SSH 配置,并过滤出我们特定的设置,以确认它们已正确启用:
sudo sshd -T | grep -E "passwordauthentication|permitrootlogin"
你应该会看到输出确认这两个设置都已启用。如果没有,请仔细检查你是否正确保存了文件并重启了服务。
在这一步中,你将创建使用故意设置为弱密码的测试用户账户。当我们稍后使用 Hydra 演示 SSH 暴力破解攻击时,这些账户将作为攻击目标。创建此类测试账户有助于我们安全地模拟攻击者可能利用弱凭证的真实场景。
让我们创建三个使用常见弱密码的测试用户。这些密码故意设置得很简单,因为我们希望 Hydra 在测试期间能够破解它们。在实际系统中,你应该始终使用强而复杂的密码。
创建三个使用简单密码的测试用户(我们将用这些用户进行测试):
sudo useradd -m -s /bin/bash testuser1
echo "testuser1:password123" | sudo chpasswd
sudo useradd -m -s /bin/bash testuser2
echo "testuser2:qwerty" | sudo chpasswd
sudo useradd -m -s /bin/bash testuser3
echo "testuser3:letmein" | sudo chpasswd
useradd
命令为每个用户创建一个主目录(-m
),并将他们的 shell 设置为 bash(-s /bin/bash
)。chpasswd
命令则为每个用户设置密码。
验证用户是否成功创建:
id testuser1
id testuser2
id testuser3
id
命令会显示用户信息。你应该会看到确认每个用户存在的输出,包括他们的用户 ID(UID)、组 ID(GID)和组成员身份。此验证步骤可确保我们的测试账户在继续操作之前已正确设置。
通过尝试切换到每个用户来检查密码是否设置正确(你需要输入刚刚设置的密码):
su - testuser1
exit
su - testuser2
exit
su - testuser3
exit
su - username
命令允许你切换到另一个用户账户。输入每个密码后,你应该会短暂看到命令提示符发生变化,表明你已以该用户身份登录。exit
命令会让你返回到原始会话。此步骤确认密码按预期工作。
(可选)创建一个包含测试凭证的文本文件以供参考:
echo -e "testuser1:password123\ntestuser2:qwerty\ntestuser3:letmein" > ~/project/test_credentials.txt
这将创建一个文本文件,以用户名:密码的格式列出所有测试凭证。虽然这不是严格必需的,但在测试期间,有这个参考文件会很有帮助。-e
标志允许解释像 \n
这样的反斜杠转义字符以实现换行。
在这一步中,你要确保 SSH 服务正常运行,并配置为自动启动。SSH(Secure Shell,安全外壳协议)是一种网络协议,允许计算机之间进行安全的远程访问。在我们的 Hydra 测试环境中,需要 SSH 持续运行,以便可靠地进行密码破解测试。
首先,检查 SSH 服务当前是否处于活动状态。此命令会显示 SSH 守护进程(sshd)的当前状态:
sudo service ssh status
如果服务未运行,输出中会显示“inactive (dead)”。这意味着 SSH 服务当前已停止,不接受任何连接。
如果服务未运行,我们需要启动它。此命令将初始化 SSH 守护进程:
sudo service ssh start
启动服务后,验证它是否正常运行。现在,状态命令应该会显示不同的输出:
sudo service ssh status
输出中应该会显示“active (running)”,表明 SSH 服务已准备好接受连接。
由于我们是在 Docker 容器(一种轻量级、隔离的环境)中工作,需要确保容器重启时 SSH 能自动启动。这行命令会将启动命令添加到你的 bash 配置文件中:
echo 'sudo service ssh start' >> ~/.bashrc
.bashrc 文件会在你启动新的终端会话时自动运行,因此这能确保容器启动时 SSH 始终会启动。
最后,确认 SSH 是否在正确的网络端口上监听(SSH 的默认端口是 22)。此命令会显示所有活动的网络连接:
sudo netstat -tulnp | grep sshd
你应该会看到输出显示 sshd 在 0.0.0.0:22 上监听,这意味着 SSH 服务器已正确配置为在标准 SSH 端口上接受来自任何网络接口的连接。
在这最后一步,我们将验证你的 SSH 服务器是否配置正确且可访问。这一点至关重要,因为 Hydra(我们将在后续实验中使用的密码破解工具)需要一个正常运行的 SSH 服务来进行测试。我们将进行多项检查,以确保一切按预期工作。
首先,检查 SSH 服务是否确实正在运行。服务有时可能无法启动或意外崩溃,因此这是我们的首次合理性检查:
sudo service ssh status
输出应明确显示“active (running)”。如果没有显示,我们需要在继续操作之前对服务进行故障排除。
现在,我们将使用之前创建的一个测试账户来测试本地 SSH 访问。这模拟了 Hydra 尝试连接的方式:
ssh testuser1@localhost
当提示输入密码时,输入“password123”(我们之前设置的密码)。成功登录后,输入 exit
返回到主会话。这确认了基本的密码认证功能正常。
我们将专门测试密码认证(因为 Hydra 主要是对密码进行暴力破解)。我们将强制 SSH 使用密码认证,并故意提供一个错误的密码:
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no testuser1@localhost
当提示输入密码时,输入任何错误的密码。服务器应拒绝连接,这是我们期望看到的行为。
接下来,我们将验证 SSH 服务器是否在正确的网络接口和端口上监听。这确保了远程连接(如来自 Hydra 的连接)可以访问该服务:
sudo netstat -tulnp | grep sshd
你应该看到 sshd 在 0.0.0.0:22 上监听,这意味着它在标准 SSH 端口(22)上接受来自任何网络接口的连接。
最后,我们将查看认证日志,以查看记录的测试尝试。日志对于故障排除和了解幕后发生的情况非常有价值:
sudo tail -n 10 /var/log/auth.log
查找显示你成功登录(步骤 2)和失败尝试(步骤 3)的条目。这些日志在后续分析 Hydra 的攻击尝试时也将非常重要。
在本次实验中,你学习了如何通过在 LabEx 虚拟机上安装和配置 OpenSSH 服务器,为 Hydra 搭建一个测试环境。这个过程包括更新软件包、安装 SSH 服务器、验证其运行状态,同时为测试目的配置认证设置。
你还练习了创建测试用户账户,以模拟现实场景,并为密码安全测试准备好环境。本次实验为你提供了配置 SSH 服务器和搭建安全工具实验可控环境的重要实践经验。