温馨提示×

怎么限制linux telnet访问

小樊
46
2026-09-30 17:22:44
栏目: 智能运维

在 Linux 上“限制 Telnet 访问”通常可以从是否启用 Telnet、网络层限制、系统层限制、用户层限制几个方面来做。需要注意:Telnet 是明文协议,生产环境强烈建议用 SSH 替代。

下面按常见场景说明。


一、最彻底:禁用 Telnet(推荐)

1. 停止并禁用 telnet 服务

如果用的是 xinetd 管理的 telnet:

# 停止 xinetd(如果只跑 telnet)
systemctl stop xinetd
systemctl disable xinetd

或直接禁用 telnet:

# 编辑 /etc/xinetd.d/telnet
service telnet
{
    disable = yes
}

然后重启 xinetd:

systemctl restart xinetd

2. 卸载 telnet server(可选)

yum remove telnet-server      # CentOS/RHEL
apt remove telnetd            # Debian/Ubuntu

二、限制 Telnet 只能特定 IP 访问(网络层)

方法 1:用防火墙(推荐)

iptables 示例(仅允许 192.168.1.100):

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

firewalld 示例:

firewall-cmd --permanent --add-rich-rule='
rule family="ipv4" source address="192.168.1.100" port port="23" protocol="tcp" accept'
firewall-cmd --permanent --add-port=23/tcp --zone=drop
firewall-cmd --reload

方法 2:用 /etc/hosts.allow 和 /etc/hosts.deny

适用于 xinetd / tcp_wrappers

# /etc/hosts.deny
telnet: ALL

# /etc/hosts.allow
telnet: 192.168.1.100

三、限制 Telnet 用户访问(系统层)

1. 禁止 root 直接 telnet

在 /etc/securetty 中删除或注释:

# pts/0
# pts/1

或直接清空(不推荐长期):

echo "" > /etc/securetty

2. 限制某些用户不能使用 telnet

在 /etc/pam.d/remote 或 /etc/pam.d/login 中加入:

auth required pam_listfile.so item=user sense=deny file=/etc/telnet.deny onerr=succeed

/etc/telnet.deny 内容示例:

root
testuser

四、仅监听内网地址(减少暴露)

如果是 xinetd:

# /etc/xinetd.d/telnet
service telnet
{
    disable = no
    bind = 192.168.1.1
}

五、最佳实践建议 ✅

✅ 生产环境不要使用 Telnet
✅ 用 SSH + 密钥登录
✅ 禁止 root 远程登录
✅ 改 SSH 端口 + 防火墙限制

如果你愿意,可以告诉我:

  • 你用的是 CentOS / Ubuntu / 其他
  • Telnet 是 xinetd 还是 systemd
  • 想限制到 IP / 用户 / 端口

我可以给你一份可直接复制执行的配置。

0 踩