1. 安装与启用Telnet服务(若未安装)
Debian系统中,Telnet服务通常通过inetd或xinetd超级服务管理。首先安装所需组件:
sudo apt update
sudo apt install inetd telnetd # 安装inetd(超级服务)和telnetd(Telnet服务器)
若使用xinetd(更现代的超级服务),需额外安装:
sudo apt install xinetd
安装完成后,编辑/etc/inetd.conf(inetd管理)或/etc/xinetd.d/telnet(xinetd管理),确保Telnet配置未被注释:
telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd行,取消注释(无#开头);disable = no(启用服务),并添加only_from = 192.168.1.0/24(限制访问网段,可选)。sudo systemctl restart inetd # inetd管理
# 或
sudo systemctl restart xinetd # xinetd管理
2. 使用TCP Wrappers限制访问源
TCP Wrappers通过/etc/hosts.allow和/etc/hosts.deny文件实现基于IP的访问控制,增强Telnet安全性。
/etc/hosts.deny,添加以下内容拒绝所有Telnet连接:ALL: telnetd
/etc/hosts.allow,添加允许访问的IP或网段(如仅允许本地和192.168.1.100):localhost: telnetd
192.168.1.100: telnetd
此配置可有效阻止未经授权的IP访问Telnet服务。
3. 通过防火墙限制访问端口
使用防火墙(如ufw或iptables)进一步限制Telnet端口(默认23)的访问,仅允许可信IP连接。
sudo ufw enable # 启用ufw
sudo ufw deny 23/tcp # 默认拒绝Telnet端口
sudo ufw allow from 192.168.1.100 to any port 23 # 允许特定IP访问
sudo ufw reload # 重新加载规则
sudo iptables -A INPUT -p tcp --dport 23 -s 192.168.1.100 -j ACCEPT # 允许特定IP
sudo iptables -A INPUT -p tcp --dport 23 -j DROP # 拒绝其他所有IP
sudo sh -c "iptables-save > /etc/iptables/rules.v4" # 保存规则(Debian 9+)
防火墙规则可防止未授权的外部连接尝试。
4. 禁用root用户直接登录
Telnet传输的用户名和密码为明文,禁止root直接登录可降低被暴力破解的风险。
/etc/pam.d/login文件,注释掉以下行(防止root通过Telnet登录):# auth requisite pam_securetty.so
/etc/securetty文件限制root登录终端,注释掉tty1至tty6等本地终端(不影响SSH)。5. 强烈建议:使用SSH替代Telnet
Telnet的核心安全问题是明文传输数据(包括用户名、密码),易受中间人攻击(MITM)。SSH(Secure Shell)通过加密通信解决此问题,是Telnet的安全替代方案。
sudo apt install openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh
/etc/ssh/sshd_config):PermitRootLogin no # 禁止root直接登录
PasswordAuthentication no # 禁用密码认证(改用密钥认证)
AllowUsers your_username # 仅允许指定用户登录
KexAlgorithms curve25519-sha256@libssh.org # 使用更安全的密钥交换算法
sudo systemctl restart ssh
SSH的加密特性可彻底解决Telnet的安全隐患,是企业级环境的首选。