在 Debian 上,不建议使用 Telnet,因为它 明文传输所有数据(包括用户名和密码),安全性极低。但在某些特殊场景(如旧设备维护、内网测试)中如果必须使用,可以通过以下方式 尽可能加固 Telnet 服务。
✅ 优先使用 SSH 替代 Telnet
# 安装 SSH
sudo apt update
sudo apt install openssh-server
# 启动 SSH
sudo systemctl enable ssh
sudo systemctl start ssh
✅ 原则:能不用 Telnet 就不用
sudo apt update
sudo apt install telnetd
Debian 默认使用
inetd/systemd管理 telnetd
/etc/security/access.confsudo apt install libpam-modules
编辑:
sudo vim /etc/security/access.conf
示例(仅允许 user1 登录):
-:ALL EXCEPT user1:ALL
启用 PAM:
sudo vim /etc/pam.d/login
确认包含:
account required pam_access.so
sudo vim /etc/securetty
删除或注释所有 tty 行,或只保留本地终端:
# tty1
# tty2
或者:
sudo mv /etc/securetty /etc/securetty.bak
✅ 这样 root 无法通过 Telnet 登录
只允许特定 IP 访问 23 端口:
sudo apt install ufw
sudo ufw enable
sudo ufw allow from 192.168.1.100 to any port 23
或 iptables:
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 23 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 23 -j DROP
编辑 inetd 配置:
sudo vim /etc/inetd.conf
修改:
2323 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd
重启:
sudo systemctl restart inetd
⚠️ 注意:这只是“隐蔽”,不是真正安全
sudo vim /etc/hosts.allow
in.telnetd: 192.168.1.
sudo vim /etc/hosts.deny
in.telnetd: ALL
sudo apt install libpam-pwquality
编辑:
sudo vim /etc/pam.d/common-password
password requisite pam_pwquality.so retry=3 minlen=12
sudo systemctl disable inetd
sudo systemctl stop inetd
或彻底卸载:
sudo apt purge telnetd
| 项目 | 说明 |
|---|---|
| 加密 | ❌ 无 |
| 认证 | ❌ 明文 |
| 防中间人 | ❌ 不可能 |
| 加固效果 | ⚠️ 非常有限 |
结论:Telnet 无法真正安全
| 场景 | 建议 |
|---|---|
| 远程管理 | ✅ SSH |
| 内网设备 | ✅ SSH / 串口 |
| 审计需求 | ✅ SSH + 日志 |
| 自动化脚本 | ✅ SSH / API |
Debian 上加固 Telnet 的唯一正确方式是:尽快用 SSH 替代它。
如果你愿意,我可以:
只要告诉我你的使用场景即可。