在 Linux 中,Telnet 本身是不加密、不安全的,通常建议直接用 SSH 替代 Telnet。但如果确实需要使用 Telnet,可以通过以下几种方式限制 Telnet 访问,提升安全性。
/etc/hosts.allow 和 /etc/hosts.deny适用于 telnet 由 xinetd / inetd 管理的情况。
禁止所有 IP:
# /etc/hosts.deny
telnetd: ALL
允许指定 IP:
# /etc/hosts.allow
telnetd: 192.168.1.100 10.0.0.0/24
✅ 规则优先级:
hosts.allow > hosts.deny
# 只允许 192.168.1.0/24 访问 23 端口
iptables -A INPUT -p tcp --dport 23 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 23 -j DROP
保存规则(视发行版):
service iptables save
# 或
iptables-save > /etc/sysconfig/iptables
firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="192.168.1.0/24"
port protocol="tcp" port="23" accept'
firewall-cmd --permanent --remove-service=telnet
firewall-cmd --reload
编辑配置文件:
# xinetd 方式
/etc/xinetd.d/telnet
添加或修改:
disable = no
only_from = 192.168.1.0/24
no_access = root
或限制用户:
only_from = 192.168.1.0/24
access_times = 09:00-18:00
在 /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
xinetd 示例:
service telnet
{
disable = no
access_times = 08:00-20:00
}
systemctl disable telnet.socket
systemctl stop telnet.socket
或 xinetd:
chkconfig telnet off
✅ 不要用 Telnet
✅ 使用 SSH + 密钥登录
✅ 修改 SSH 端口
✅ 禁止 root 登录
如果你能告诉我:
我可以给你更精确的配置示例。