温馨提示×

Debian如何限制Telnet用户

小樊
37
2026-07-29 15:28:49
栏目: 智能运维

在 Debian 系统中,Telnet 本身并不适合做精细的用户限制,因为它缺乏 SSH 那样的访问控制机制。不过仍可以通过 系统级手段 来限制哪些用户可以使用 Telnet。下面按推荐程度由高到低说明。


⚠️ 强烈建议

生产环境请使用 SSH,而不是 Telnet。
Telnet 明文传输,账号密码可被嗅探。


一、限制哪些用户可以使用 Telnet(最常用)

方法 1:使用 /etc/passwd + shell 限制(推荐)

Telnet 登录时依赖用户的 login shell

1️⃣ 禁止某用户 Telnet

将用户的 shell 改为 /bin/false/usr/sbin/nologin

sudo chsh -s /usr/sbin/nologin 用户名

或:

sudo usermod -s /usr/sbin/nologin 用户名

✅ 效果:

  • 不能使用 Telnet 登录
  • FTP / SSH 也会受影响(这是预期行为)

方法 2:只允许特定用户 Telnet(白名单)

1️⃣ 编辑 /etc/shells

确保合法 shell 都在其中:

cat /etc/shells

例如:

/bin/bash
/bin/sh
/usr/bin/zsh

2️⃣ 将不允许 Telnet 的用户 shell 改为 nologin

sudo usermod -s /usr/sbin/nologin 禁止用户

✅ 只有 shell 在 /etc/shells 中的用户才能登录


二、使用 PAM 限制 Telnet 用户(更精细)

方法 3:通过 /etc/security/access.conf

1️⃣ 确保 telnet 使用 PAM

Debian 默认 /etc/pam.d/login 包含:

account required pam_access.so

2️⃣ 编辑访问控制

sudo nano /etc/security/access.conf

示例:

- : ALL EXCEPT root,admin : ALL

或只允许某用户从本地登录:

- : ALL : ALL
+ : alice : 127.0.0.1

3️⃣ 重启 inetd / xinetd

sudo systemctl restart inetd

✅ 可限制:

  • 用户
  • 来源 IP
  • 登录时间(结合 pam_time)

三、限制 Telnet 来源 IP(网络层)

方法 4:TCP Wrappers(传统方式)

编辑:

sudo nano /etc/hosts.allow
sudo nano /etc/hosts.deny

示例:

# /etc/hosts.deny
telnetd: ALL

# /etc/hosts.allow
telnetd: 192.168.1.0/24

⚠️ 注意:

  • 新版 Debian 可能已弱化 TCP Wrappers 支持
  • 更推荐用防火墙

四、使用防火墙限制 Telnet(最安全)

方法 5:iptables / nftables

只允许特定 IP:

sudo iptables -A INPUT -p tcp --dport 23 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 23 -j DROP

✅ 即使账号正确,也无法连接


五、完全禁用 Telnet(强烈推荐)

sudo systemctl stop inetd
sudo systemctl disable inetd

或卸载:

sudo apt remove telnetd

✅ 总结对比

方法 控制粒度 推荐度
改 shell 用户级 ⭐⭐⭐⭐
PAM access 用户 + IP ⭐⭐⭐⭐
TCP Wrappers IP ⭐⭐
防火墙 IP ⭐⭐⭐⭐⭐
改用 SSH 安全 ⭐⭐⭐⭐⭐

如果你愿意,我可以:

  • 给你 只允许用户 A、B 使用 Telnet 的完整配置
  • 或帮你 把 Telnet 平滑迁移到 SSH
  • 或针对 Debian 版本(10/11/12) 给出精确方案

0