在Linux系统中,禁止Telnet服务是提升系统安全性的重要措施,因为Telnet采用明文传输协议,用户名、密码及所有通信数据均未加密,极易被网络嗅探工具截获,导致敏感信息泄露,相比之下,SSH(Secure Shell)协议通过加密传输和身份验证机制,已成为远程管理的安全标准,本文将详细介绍Linux系统中禁止Telnet的多种方法,涵盖服务卸载、防火墙配置、进程管理及系统设置优化,确保从不同层面彻底禁用Telnet服务。
卸载Telnet服务软件包
Telnet服务的运行依赖于特定的软件包,彻底卸载这些包是禁止Telnet的基础操作,不同Linux发行版的包管理器不同,需采用对应命令:
基于RHEL/CentOS的系统(使用yum/dnf)
Telnet服务通常由telnet-server
包提供,客户端工具由telnet
包提供,若仅需禁止服务,可保留客户端用于测试;若需彻底禁用,建议同时卸载客户端:
# 卸载Telnet服务端(彻底禁止Telnet服务) sudo yum remove telnet-server -y # 或使用dnf(CentOS 8+/RHEL 8+以上版本) sudo dnf remove telnet-server -y # 可选:卸载Telnet客户端(防止误用) sudo yum remove telnet -y
基于Debian/Ubuntu的系统(使用apt)
# 更新软件包列表 sudo apt update # 卸载Telnet服务端 sudo apt remove telnetd -y # 可选:卸载Telnet客户端 sudo apt remove telnet -y
注意事项:
- 卸载前建议通过
telnetd --version
确认服务端是否已安装; - 若系统依赖Telnet客户端进行网络调试(如测试端口连通性),可仅卸载服务端保留客户端。
通过防火墙规则阻断Telnet端口
即使卸载了Telnet服务,若防火墙未配置,攻击者仍可能尝试扫描23端口(Telnet默认端口),需通过防火墙规则主动拒绝23端口的访问请求。
使用iptables(适用于CentOS 7及以下、Ubuntu早期版本)
# 添加拒绝规则(拒绝所有TCP协议的23端口访问) sudo iptables -A INPUT -p tcp --dport 23 -j DROP # 保存规则(CentOS 7/RHEL 7以下使用) sudo service iptables save # 或Ubuntu中保存 sudo iptables-save > /etc/iptables/rules.v4
使用firewalld(适用于CentOS 7+/RHEL 7+、Fedora)
# 永久拒绝23端口访问 sudo firewall-cmd --permanent --add-port=23/tcp --set-target=DROP # 或使用rich-rule更直观(拒绝IPv4的23端口) sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="23" reject' # 重载防火墙使规则生效 sudo firewall-cmd --reload
使用ufw(适用于Ubuntu/Debian)
# 拒绝23端口访问 sudo ufw deny 23/tcp # 启用ufw(若未启用) sudo ufw enable
关键点:
- 防火墙规则需在服务卸载后配置,形成“服务+网络”双重防护;
- 若需允许特定IP访问(如运维网段),可添加
-s IP地址
参数(iptables示例:iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 23 -j ACCEPT
)。
终止并禁用运行中的Telnet进程
若Telnet服务正在运行,需先终止进程,再通过系统服务管理工具禁用开机自启,避免重启后服务自动激活。
检查Telnet进程
ps aux | grep telnet # 或使用systemctl(若服务已通过systemctl管理) systemctl status telnet.socket
终止进程
# 若进程为inetd/xinetd超级服务管理,需先停止超级服务 sudo systemctl stop inetd # 或xinetd # 若直接运行telnetd进程,通过PID终止 sudo kill -9 <PID> # <PID>为ps命令查到的进程号
禁用开机自启
# 对于systemctl管理的服务(如telnet.socket) sudo systemctl disable telnet.socket # 对于inetd/xinetd,需编辑配置文件(如/etc/inetd.conf或/etc/xinetd.d/telnet) # 注释或删除包含"telnet"的行,然后重启inetd/xinetd sudo systemctl restart inetd
修改系统配置文件加固防护
注释/etc/services
中的Telnet条目
/etc/services
文件定义了服务名与端口的映射关系,注释该条目可防止部分服务通过默认端口启动:
sudo vi /etc/services # 找到以下行,在行首添加#注释 #telnet 23/tcp #telnet 23/udp
禁用inetd/xinetd中的Telnet服务(若使用超级服务)
若系统通过inetd或xinetd管理Telnet,需编辑对应配置文件:
- inetd:编辑
/etc/inetd.conf
,注释telnet
行; - xinetd:编辑
/etc/xinetd.d/telnet
,将disable = no
改为disable = yes
,然后执行sudo systemctl restart xinetd
。
SSH安全配置作为替代方案
禁止Telnet后,需确保SSH服务已正确配置,避免远程管理中断,建议优化SSH安全设置:
# 编辑SSH配置文件 sudo vi /etc/ssh/sshd_config # 优化项: 1. 修改默认端口(如改为2222,减少暴力破解风险) Port 2222 2. 禁用root直接登录(降低权限泄露风险) PermitRootLogin no 3. 强制密钥认证(禁用密码登录,提升安全性) PasswordAuthentication no PubkeyAuthentication yes # 重启SSH服务使配置生效 sudo systemctl restart sshd
方法对比与操作总结
方法 | 适用场景 | 命令/操作示例 | 注意事项 |
---|---|---|---|
卸载软件包 | 彻底移除Telnet服务端 | yum remove telnet-server |
区分服务端与客户端,避免误卸工具 |
防火墙规则 | 网络层阻断23端口访问 | firewall-cmd --permanent --deny 23/tcp |
需结合服务卸载,避免规则失效 |
进程终止与禁用 | 停止运行中服务并禁止开机自启 | systemctl disable telnet.socket |
需确认进程管理方式(systemctl/inetd) |
修改/etc/services |
防止服务通过默认端口启动 | 注释telnet 23/tcp 行 |
部分服务可能忽略此配置,需结合其他方法 |
SSH安全配置 | 替代Telnet的远程管理方案 | 修改/etc/ssh/sshd_config |
禁用root登录前需确保有普通用户权限 |
相关问答FAQs
Q1:如何验证Telnet已被成功禁止?
A:可通过以下方式验证:
- 本地测试:执行
telnet localhost 23
,若显示“Connection refused”或超时,说明端口已被阻断; - 服务检查:运行
systemctl status telnet.socket
,显示“inactive (dead)”表示服务已停止; - 端口扫描:使用
nmap -p 23 localhost
,若端口状态为“filtered”或“closed”,说明防火墙规则生效; - 进程检查:执行
ps aux | grep telnet
,无相关进程输出则确认无运行中服务。
Q2:禁止Telnet后无法通过SSH远程登录,如何排查?
A:可按以下步骤排查:
- 检查SSH服务状态:运行
systemctl status sshd
,确保服务处于“active (running)”状态; - 查看SSH配置:检查
/etc/ssh/sshd_config
中是否有PermitRootLogin no
或PasswordAuthentication no
导致登录失败,若为密钥认证,需确认客户端密钥是否正确; - 防火墙规则:检查SSH端口(默认22或自定义端口)是否被允许,例如
firewall-cmd --list-ports
查看开放端口; - 网络连通性:使用
telnet <服务器IP> 22
测试SSH端口是否可达,或使用ss -tulnp | grep sshd
确认监听状态; - 日志分析:查看
/var/log/secure
或/var/log/auth.log
,定位登录失败的具体原因(如密码错误、密钥不匹配等)。
通过以上方法,可从软件包、防火墙、进程、系统配置等多个维度彻底禁止Linux系统中的Telnet服务,同时通过SSH安全配置确保远程管理的可靠性,有效提升系统安全性。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/25164.html