设置 Telnet 服务
本步骤中,我们将配置 LabEx 虚拟机上的 Telnet 服务。Telnet 是一种网络协议,它提供了一个命令行界面来访问远程服务器。虽然 Telnet 通常被认为在生产环境中是不安全的,因为它以明文传输数据,但在受控的实验环境中演示密码破解技术是合适的。
首先,我们需要创建一个具有空密码的测试用户帐户:
sudo useradd -m testuser
sudo passwd -d testuser
passwd -d
命令删除用户的密码,从而有效地创建了一个空密码。
我们需要编辑 Telnet 配置文件,该文件位于 /etc/inetd.conf
。使用 nano
编辑器打开该文件:
sudo nano /etc/inetd.conf
在 nano
编辑器中,找到以 telnet
开头的行。它应该类似于这样:
telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/telnetd
通过在该行开头添加 #
来注释掉该行:
#telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/telnetd
现在,在已注释掉的行的下方添加以下行。新行配置 Telnet 使用 -i
选项,该选项禁用身份验证。
telnet stream tcp nowait telnetd /usr/sbin/in.telnetd -i
现在,你的 /etc/inetd.conf
文件的相关部分应该如下所示:
#telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/telnetd
telnet stream tcp nowait telnetd /usr/sbin/in.telnetd -i
按 Ctrl+X
退出 nano
。系统提示保存时,按 Y
,然后按 Enter
保存更改到 /etc/inetd.conf
。
此外,我们需要验证 PAM 是否配置为允许 Telnet 的空密码。检查 PAM 配置:
cat /etc/pam.d/common-auth | grep pam_unix.so
你应该看到类似于这样的行:
auth [success=1 default=ignore] pam_unix.so nullok
如果该行不包含 nullok
,则需要添加它。编辑文件:
sudo nano /etc/pam.d/common-auth
找到包含 pam_unix.so
的行,并在末尾添加 nullok
(如果它不存在)。保存并退出文件,如果你进行了任何更改。
最后,我们需要重启 inetd
服务,使更改生效。由于我们处于 Docker 容器环境中,我们将使用 /etc/init.d
脚本重启服务:
sudo /etc/init.d/openbsd-inetd restart
你应该看到指示服务正在重启的输出:
* Restarting internet superserver inetd
现在,Telnet 服务已设置并配置为允许在该实验中进行无密码登录。