Linux系统如何禁止Telnet远程登录服务?

在Linux系统中,禁止Telnet服务是提升系统安全性的重要措施,因为Telnet采用明文传输协议,用户名、密码及所有通信数据均未加密,极易被网络嗅探工具截获,导致敏感信息泄露,相比之下,SSH(Secure Shell)协议通过加密传输和身份验证机制,已成为远程管理的安全标准,本文将详细介绍Linux系统中禁止Telnet的多种方法,涵盖服务卸载、防火墙配置、进程管理及系统设置优化,确保从不同层面彻底禁用Telnet服务。

linux如何禁止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

关键点

linux如何禁止telnet

  • 防火墙规则需在服务卸载后配置,形成“服务+网络”双重防护;
  • 若需允许特定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:可通过以下方式验证:

linux如何禁止telnet

  1. 本地测试:执行telnet localhost 23,若显示“Connection refused”或超时,说明端口已被阻断;
  2. 服务检查:运行systemctl status telnet.socket,显示“inactive (dead)”表示服务已停止;
  3. 端口扫描:使用nmap -p 23 localhost,若端口状态为“filtered”或“closed”,说明防火墙规则生效;
  4. 进程检查:执行ps aux | grep telnet,无相关进程输出则确认无运行中服务。

Q2:禁止Telnet后无法通过SSH远程登录,如何排查?
A:可按以下步骤排查:

  1. 检查SSH服务状态:运行systemctl status sshd,确保服务处于“active (running)”状态;
  2. 查看SSH配置:检查/etc/ssh/sshd_config中是否有PermitRootLogin noPasswordAuthentication no导致登录失败,若为密钥认证,需确认客户端密钥是否正确;
  3. 防火墙规则:检查SSH端口(默认22或自定义端口)是否被允许,例如firewall-cmd --list-ports查看开放端口;
  4. 网络连通性:使用telnet <服务器IP> 22测试SSH端口是否可达,或使用ss -tulnp | grep sshd确认监听状态;
  5. 日志分析:查看/var/log/secure/var/log/auth.log,定位登录失败的具体原因(如密码错误、密钥不匹配等)。

通过以上方法,可从软件包、防火墙、进程、系统配置等多个维度彻底禁止Linux系统中的Telnet服务,同时通过SSH安全配置确保远程管理的可靠性,有效提升系统安全性。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/25164.html

(0)
酷番叔酷番叔
上一篇 1小时前
下一篇 1小时前

相关推荐

  • Linux如何查看U盘?命令行还是图形界面?

    命令行方式(推荐)识别U盘设备插入U盘后,打开终端(Ctrl+Alt+T),执行:lsblk输出示例:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 238.5G 0 disk├─sda1 8:1 0 512M 0 part /boot└─sda2 8:2 0……

    2025年7月9日
    3500
  • Linux下如何快速分析Web日志?

    定位日志文件路径不同Web服务器的日志默认存储位置不同:Apache访问日志:/var/log/apache2/access.log(Debian/Ubuntu)或 /var/log/httpd/access_log(CentOS/RHEL)错误日志:/var/log/apache2/error.log 或……

    2025年6月19日
    4900
  • linux如何定时重启

    Linux 中可通过 crontab 定时重启,如编辑 /etc/crontab 添加类似“0 3 * * * root /sbin/shutdown -r now”实现每天凌晨

    2025年8月10日
    2300
  • 如何快速安装TigerVNC详细步骤

    在Linux服务器管理中,图形界面连接能显著提升操作效率,尤其适合桌面环境管理、可视化软件调试等场景,以下是三种主流图形连接方法的详细操作指南,所有步骤均基于Linux发行版(如Ubuntu/CentOS)验证,注重安全性与易用性,准备工作服务器端配置安装桌面环境(以GNOME为例): # Ubuntu/Deb……

    2025年7月17日
    2900
  • Linux如何实现多设备兼容与支持?

    Linux作为开源操作系统的核心优势之一在于其对多样化硬件设备的强大支持能力,这种能力并非偶然,而是源于内核设计的模块化、抽象化与层次化架构,通过统一设备模型、总线抽象、驱动框架等核心机制,Linux能够高效管理从嵌入式传感器、移动设备外设到服务器级硬件的各类设备,实现硬件与软件的解耦和动态适配,统一设备模型与……

    2025年8月26日
    1700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信