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)
酷番叔酷番叔
上一篇 2025年9月18日 04:55
下一篇 2025年9月18日 05:14

相关推荐

  • Linux开机时如何正确进入GRUB引导界面?

    Linux开机进入GRUB引导加载程序通常是为了修复系统、修改启动参数或重装系统,GRUB作为Linux系统最常用的引导管理器,提供了灵活的系统启动控制方式,以下是进入GRUB的详细方法及注意事项,开机时通过快捷键进入GRUB菜单不同Linux发行版和硬件品牌在开机时触发GRUB菜单的快捷键可能不同,通常需要在……

    2025年10月7日
    12700
  • Linux操作MySQL文件如何避免数据损坏?

    为什么需要打开MySQL文件?MySQL在Linux中存储多种文件:数据文件:表结构(.frm)、InnoDB数据(.ibd)日志文件:错误日志(error.log)、二进制日志(binlog.0000*)、慢查询日志配置文件:my.cnf 或 my.ini直接查看这些文件可用于诊断问题(如日志分析)或数据恢复……

    2025年7月1日
    18300
  • Linux查看日志的常用方法及详细操作步骤有哪些?

    Linux作为服务器和开发环境的核心操作系统,日志是排查故障、监控系统状态、追踪用户行为的关键数据,掌握日志查看方法对运维人员和开发者至关重要,本文将详细介绍Linux查看日志的常用命令、工具及实际应用场景,Linux日志主要存储在/var/log目录下,不同服务和系统组件会产生对应的日志文件,/var/log……

    2025年10月1日
    13400
  • 如何查看Linux CPU负载均衡?

    核心命令与工具top / htop(实时监控)运行 top 后按 1 键,显示所有CPU核心的负载: top – 14:30:25 up 10 days, 1:23, 2 users, load average: 0.15, 0.20, 0.18Tasks: 256 total, 1 running, 255……

    2025年7月19日
    14900
  • 删除所有.log文件安全吗?

    在Linux系统中,批量删除文件名通常指批量删除符合特定规则的文件,以下是多种安全高效的方法,结合具体场景详细说明,操作前务必注意:删除操作不可逆,建议先备份数据或在测试环境验证命令,基础方法:rm命令 + 通配符适用于文件名有明确规律的场景(如相同前缀/后缀/扩展名),# 删除以"temp_&quo……

    2025年7月15日
    16700

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信