Telnet的安全风险概述
Telnet是早期的网络协议,其明文传输特性(包括用户名、密码及所有通信内容)极易被网络嗅探工具(如Wireshark)截获,存在中间人攻击、数据篡改等高风险。在生产环境中,强烈建议使用SSH(Secure Shell)替代Telnet——SSH通过加密通道保障数据安全,支持公钥认证、端口转发等高级功能,是远程管理的行业标准方案。
若必须使用Telnet的安全设置步骤
CentOS默认不安装Telnet服务(因安全考虑),需通过以下命令安装服务端及依赖:
sudo yum install telnet telnet-server -y
安装完成后,启动Telnet服务并设置开机自启:
sudo systemctl start telnet.socket
sudo systemctl enable telnet.socket
通过systemctl status telnet.socket确认服务运行状态(显示“active (running)”即为成功)。
默认情况下,CentOS防火墙(firewalld)会阻止Telnet端口(TCP 23)的入站流量。需通过以下命令允许特定IP或网络段访问:
# 允许所有IP访问Telnet端口(不推荐,仅测试环境使用)
sudo firewall-cmd --permanent --add-port=23/tcp
# 仅允许192.168.1.0/24网段访问(推荐生产环境使用)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="23" protocol="tcp" accept'
sudo firewall-cmd --reload
若使用iptables,可添加规则:
sudo iptables -A INPUT -p tcp --dport 23 -s 192.168.1.0/24 -j ACCEPT # 允许指定网段
sudo iptables -A INPUT -p tcp --dport 23 -j DROP # 拒绝其他所有IP
sudo service iptables save
通过firewall-cmd --list-all或iptables -L验证规则是否生效。
root用户拥有系统最高权限,若通过Telnet登录被破解,将导致服务器完全失控。需编辑/etc/securetty文件,注释或删除root用户对应的行(如pts/0、tty1等),阻止root通过Telnet登录:
sudo vi /etc/securetty
找到包含“root”的行,添加#注释(如#pts/0),保存退出。此后,root用户无法通过Telnet远程登录,需使用普通用户登录后再切换至root(su -)。
通过Telnet配置文件限制仅特定IP或网络段能连接到服务器,减少暴露风险。编辑/etc/xinetd.d/telnet文件,添加以下指令:
sudo vi /etc/xinetd.d/telnet
在service telnet块中添加:
only_from = 192.168.1.100 192.168.1.101 # 允许的具体IP
no_access = 192.168.1.200-192.168.1.255 # 禁止的IP段
保存后重启xinetd服务使配置生效:
sudo systemctl restart xinetd
此配置可有效防止未经授权的IP地址访问Telnet服务。
T3lnet@2025),避免使用简单密码(如123456、admin)。chage命令设置密码有效期(如每90天更换一次):sudo chage -M 90 username # 强制用户每90天更换密码
sudo chage -W 14 username # 提前14天提醒用户更换密码
faillock工具限制用户连续登录失败的次数(如最多尝试3次),防止暴力破解:sudo faillock --user username --reset # 重置用户失败计数(测试用)
注:Telnet本身的密码认证机制较弱,上述设置可一定程度上降低风险,但仍无法替代SSH的加密认证。启用Telnet的详细日志记录,便于及时发现异常登录行为。编辑/etc/xinetd.d/telnet文件,确保log_on_failure指令包含USERID(记录失败登录的用户名):
sudo vi /etc/xinetd.d/telnet
修改为:
log_on_failure += USERID
保存后重启xinetd服务。日志默认存储在/var/log/messages中,可通过以下命令查看Telnet登录记录:
sudo grep "telnet" /var/log/messages
定期检查日志,若发现大量失败登录尝试(如同一IP短时间内多次失败),需立即封锁该IP地址(通过防火墙规则)。
保持CentOS系统及Telnet服务的最新状态,及时修复已知安全漏洞。通过以下命令更新系统:
sudo yum update -y
更新完成后,重启Telnet服务使补丁生效:
sudo systemctl restart telnet.socket
注:Telnet协议本身存在固有安全缺陷,即使更新也无法完全消除风险,仍需尽快迁移到SSH。
强烈建议:尽快迁移到SSH
尽管上述设置可提升Telnet的安全性,但无法改变其“明文传输”的本质。SSH通过加密通道保障数据安全,支持公钥认证(无需记忆密码)、端口转发、文件传输等功能,是远程管理的最佳选择。迁移步骤如下:
sudo yum install openssh-server -ysudo systemctl start sshdsudo systemctl enable sshdsudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reloadssh username@server_ip通过以上步骤,可彻底解决Telnet的安全问题,保障服务器远程管理的安全性。