温馨提示×

CentOS中Telnet安全设置方法

小樊
48
2026-01-07 19:54:49
栏目: 智能运维

总体安全建议

  • Telnet 以明文传输数据(含用户名与口令),在公网或不可信网络中应避免使用。优先方案是使用 SSH 替代,仅在内网受控环境下、确有兼容性需求时再启用 Telnet,并配合防火墙、访问控制与日志审计等措施降低风险。

一 禁用或卸载 Telnet(优先方案)

  • 停止并禁用服务(两种常见管理方式,按系统实际为准):
    • 直接管理 telnet 服务单元:
      • 停止:sudo systemctl stop telnet
      • 禁用:sudo systemctl disable telnet
    • 若由 xinetd 托管(常见于 CentOS 7 之前的场景):
      • 编辑:sudo vi /etc/xinetd.d/telnet,将 disable = no 改为 disable = yes
      • 重启:sudo systemctl restart xinetd
  • 防火墙层面阻断:
    • firewalld:sudo firewall-cmd --permanent --remove-service=telnet && sudo firewall-cmd --reload
    • 或仅放行内网网段: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
  • 可选:卸载软件包(减少攻击面)
    • 检查:rpm -q telnet-server
    • 卸载:sudo yum remove telnet-server
  • 验证:ss -tnlp | grep :23 应无输出。

二 必须使用 Telnet 时的加固要点

  • 访问控制(xinetd 配置):
    • 绑定监听地址:bind = 内网IP
    • 仅允许指定网段:only_from = 192.168.1.0/24
    • 禁止特定主机:no_access = 203.0.113.10
    • 限制时段:access_times = 08:00-12:00 20:00-23:59
  • 端口与源地址限制:
    • 修改默认端口(/etc/services):将 telnet 23/tcp 改为非常用端口(如 2323/tcp),并重启 xinetd;客户端需使用新端口连接。
    • 仅在内网接口监听,避免暴露在公网。
  • 身份与认证安全:
    • 禁止 root 直连 Telnet(默认策略),仅允许普通用户登录后 su/sudo。
    • 如需进一步限制,可调整 PAM:编辑 /etc/pam.d/login,将 auth required pam_securetty.so 注释(不建议用于生产,优先保持 root 禁止策略)。
  • 加密传输(弥补明文缺陷):
    • 使用 stunnel 为 Telnet 建立 TLS 隧道:
      • 安装:sudo yum install stunnel
      • 生成证书:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/stunnel/stunnel.pem -out /etc/stunnel/stunnel.pem
      • 配置 /etc/stunnel/stunnel.conf:
        • [telnet] accept = 2323 connect = 127.0.0.1:23 cert = /etc/stunnel/stunnel.pem key = /etc/stunnel/stunnel.pem
      • 启动:sudo systemctl start stunnel && sudo systemctl enable stunnel
      • 防火墙放行 2323/tcp,客户端连接 stunnel 的 2323 端口,由 stunnel 转发至本机 23 端口。
  • 日志与监控:
    • 实时查看认证日志:sudo tail -f /var/log/secure
    • 定期审计异常连接尝试。

三 防火墙与系统加固配合

  • 最小化暴露面:
    • 仅在内网开放 Telnet(或 stunnel)端口,公网一律阻断。
    • 使用 firewalld 的 rich-rule 或 ipset 管理白名单,便于批量维护。
  • 强制加密与替代:
    • 对外仅开放 SSH(22/tcp),并禁用 Telnet 服务与端口。
    • 确保 sshd 已安装并运行:sudo systemctl start sshd && sudo systemctl enable sshd
  • 完整性防护:
    • 保持系统与软件包更新:sudo yum update
    • 启用并维持 SELinux 为 enforcing 模式,结合系统加固基线降低风险。

四 快速检查清单

  • 服务状态:systemctl is-active telnet;若由 xinetd 托管,检查 xinetd 与 /etc/xinetd.d/telnet 配置。
  • 端口监听:ss -tnlp | grep -E ‘:(23|2323)’
  • 防火墙规则:firewall-cmd --list-all(确认仅内网放行或已移除 telnet 服务)
  • 日志审计:tail -n 50 /var/log/secure | grep telnet
  • 登录策略:确认 root 无法通过 Telnet 登录,普通用户登录后按需 su/sudo。

0