在 Linux 上“限制 Telnet 访问”通常可以从是否启用 Telnet、网络层限制、系统层限制、用户层限制几个方面来做。需要注意:Telnet 是明文协议,生产环境强烈建议用 SSH 替代。
下面按常见场景说明。
如果用的是 xinetd 管理的 telnet:
# 停止 xinetd(如果只跑 telnet)
systemctl stop xinetd
systemctl disable xinetd
或直接禁用 telnet:
# 编辑 /etc/xinetd.d/telnet
service telnet
{
disable = yes
}
然后重启 xinetd:
systemctl restart xinetd
yum remove telnet-server # CentOS/RHEL
apt remove telnetd # Debian/Ubuntu
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
适用于 xinetd / tcp_wrappers
# /etc/hosts.deny
telnet: ALL
# /etc/hosts.allow
telnet: 192.168.1.100
在 /etc/securetty 中删除或注释:
# pts/0
# pts/1
或直接清空(不推荐长期):
echo "" > /etc/securetty
在 /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 端口 + 防火墙限制
如果你愿意,可以告诉我:
我可以给你一份可直接复制执行的配置。