CentOS中Telnet安全设置及替代方案
若需使用Telnet,首先安装telnet-server
包(CentOS默认未安装):
sudo yum install telnet-server
安装后,通过systemctl
启动并设置开机自启:
sudo systemctl start telnet.socket
sudo systemctl enable telnet.socket
注:Telnet本身不安全,仅在测试或内部网络等低安全需求场景下使用。
默认情况下,防火墙(firewalld/iptables)会阻止Telnet端口(23/tcp)的流量,需手动放行:
sudo firewall-cmd --permanent --add-port=23/tcp # 永久添加23端口规则
sudo firewall-cmd --reload # 重新加载防火墙配置
sudo iptables -A INPUT -p tcp --dport 23 -j ACCEPT # 允许23端口tcp流量
sudo service iptables save # 保存iptables规则(CentOS 7及以上需用systemctl)
提示:防火墙仅能限制网络层访问,无法解决Telnet明文传输的核心安全问题。
Telnet传输的用户名和密码为明文,禁止root登录可降低被暴力破解的风险:
编辑/etc/securetty
文件(控制终端登录权限),注释或删除包含pts/0
、pts/1
等的行(这些是Telnet使用的虚拟终端):
sudo vi /etc/securetty
# 示例:注释root对应的行
# pts/0
# pts/1
修改后,root用户无法通过Telnet登录,需使用普通用户登录后再切换至root(su -
)。
CentOS中Telnet通常由xinetd
(超级服务守护进程)管理,需编辑其配置文件/etc/xinetd.d/telnet
:
sudo vi /etc/xinetd.d/telnet
确保以下关键配置(启用服务并记录登录用户):
service telnet
{
disable = no # 设为no表示启用服务
socket_type = stream
protocol = tcp
wait = no
user = root # 以root身份运行(需结合securetty限制)
server = /usr/sbin/in.telnetd
log_on_failure += USERID # 记录失败登录的用户名(便于审计)
}
修改后重启xinetd
服务使配置生效:
sudo systemctl restart xinetd
注:
log_on_failure
可帮助追踪非法登录尝试,提升安全审计能力。
若SELinux处于enforcing
模式(默认),可通过调整策略限制Telnet服务的权限:
sestatus
sudo setenforce 0
/etc/selinux/config
,将SELINUX=enforcing
改为SELINUX=permissive
(允许但不强制执行策略)或SELINUX=disabled
(完全禁用)。setsebool
命令禁止Telnet服务:sudo setsebool -P telnetd_disable 1 # 永久禁用Telnet
SELinux通过强制访问控制(MAC)进一步提升系统安全性,建议保持
enforcing
模式并结合策略调整。
及时修复Telnet服务的安全漏洞,降低被攻击的风险:
sudo yum update telnet-server xinetd # 更新Telnet相关软件包
sudo yum update # 更新系统所有软件包
定期更新是防范已知漏洞的重要手段,尤其是针对Telnet这类老旧协议。
Telnet的核心安全缺陷是明文传输(用户名、密码、命令均以明文形式传输),易受中间人攻击(MITM)、数据窃听等威胁。SSH(Secure Shell)通过加密通道保障数据安全,是Telnet的最佳替代方案:
sudo yum install openssh-server
sudo systemctl start sshd
sudo systemctl enable sshd
/etc/ssh/sshd_config
,设置以下参数:PermitRootLogin no # 禁止root远程登录
PubkeyAuthentication yes # 启用公钥认证(更安全)
PasswordAuthentication no # 可选:禁用密码认证(仅公钥认证)
MaxAuthTries 3 # 限制登录尝试次数(防止暴力破解)
Ciphers aes128-ctr,aes192-ctr,aes256-ctr # 使用强加密算法
sudo systemctl restart sshd
SSH通过加密通信彻底解决了Telnet的安全问题,是生产环境中远程管理的标准方案。
Telnet因明文传输特性不适合生产环境,若必须使用,需通过防火墙限制访问、禁止root登录、优化xinetd配置等方式降低风险;优先选择SSH替代Telnet,从根本上解决安全问题。