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。