加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

使用stunnel保护telnet连接

发布时间:2019-06-07 05:56:55 所属栏目:Windows 来源:Curt Warfield
导读:副标题#e# Telnet 是一种客户端-服务端协议,通过 TCP 的 23 端口连接到远程服务器。Telnet 并不加密数据,因此它被认为是不安全的,因为数据是以明文形式发送的,所以密码很容易被嗅探。但是,仍有老旧系统需要使用它。这就是用到 stunnel 的地方。 stunne
副标题[/!--empirenews.page--]

 使用stunnel保护telnet连接

Telnet 是一种客户端-服务端协议,通过 TCP 的 23 端口连接到远程服务器。Telnet 并不加密数据,因此它被认为是不安全的,因为数据是以明文形式发送的,所以密码很容易被嗅探。但是,仍有老旧系统需要使用它。这就是用到 stunnel 的地方。

stunnel 旨在为使用不安全连接协议的程序增加 SSL 加密。本文将以 telnet 为例介绍如何使用它。

服务端安装

使用 sudo 安装 stunnel 以及 telnet 的服务端和客户端:

  1. sudo dnf -y install stunnel telnet-server telnet

添加防火墙规则,在提示时输入你的密码:

  1. firewall-cmd --add-service=telnet --perm
  2. firewall-cmd --reload

接下来,生成 RSA 私钥和 SSL 证书:

  1. openssl genrsa 2048 > stunnel.key
  2. openssl req -new -key stunnel.key -x509 -days 90 -out stunnel.crt

系统将一次提示你输入以下信息。当询问 Common Name 时,你必须输入正确的主机名或 IP 地址,但是你可以按回车键跳过其他所有内容。

  1. You are about to be asked to enter information that will be
  2. incorporated into your certificate request.
  3. What you are about to enter is what is called a Distinguished Name or a DN.
  4. There are quite a few fields but you can leave some blank
  5. For some fields there will be a default value,
  6. If you enter '.', the field will be left blank.
  7. -----
  8. Country Name (2 letter code) [XX]:
  9. State or Province Name (full name) []:
  10. Locality Name (eg, city) [Default City]:
  11. Organization Name (eg, company) [Default Company Ltd]:
  12. Organizational Unit Name (eg, section) []:
  13. Common Name (eg, your name or your server's hostname) []:
  14. Email Address []

将 RSA 密钥和 SSL 证书合并到单个 .pem 文件中,并将其复制到 SSL 证书目录:

  1. cat stunnel.crt stunnel.key > stunnel.pem
  2. sudo cp stunnel.pem /etc/pki/tls/certs/

现在可以定义服务和用于加密连接的端口了。选择尚未使用的端口。此例使用 450 端口进行隧道传输 telnet。编辑或创建 /etc/stunnel/telnet.conf

  1. cert = /etc/pki/tls/certs/stunnel.pem
  2. sslVersion = TLSv1
  3. chroot = /var/run/stunnel
  4. setuid = nobody
  5. setgid = nobody
  6. pid = /stunnel.pid
  7. socket = l:TCP_NODELAY=1
  8. socket = r:TCP_NODELAY=1
  9. [telnet]
  10. accept = 450
  11. connect = 23

accept 选项是服务器将监听传入 telnet 请求的接口。connect 选项是 telnet 服务器的内部监听接口。

接下来,创建一个 systemd 单元文件的副本来覆盖原来的版本:

  1. sudo cp /usr/lib/systemd/system/stunnel.service /etc/systemd/system

编辑 /etc/systemd/system/stunnel.service 来添加两行。这些行在启动时为服务创建 chroot 监狱。

  1. [Unit]
  2. Description=TLS tunnel for network daemons
  3. After=syslog.target network.target
  4.  
  5. [Service]
  6. ExecStart=/usr/bin/stunnel
  7. Type=forking
  8. PrivateTmp=true
  9. ExecStartPre=-/usr/bin/mkdir /var/run/stunnel
  10. ExecStartPre=/usr/bin/chown -R nobody:nobody /var/run/stunnel
  11.  
  12. [Install]
  13. WantedBy=multi-user.target

接下来,配置 SELinux 以在你刚刚指定的新端口上监听 telnet:

  1. sudo semanage port -a -t telnetd_port_t -p tcp 450

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!