使用stunnel来保护telnet连接

发布者:上海IT外包来源:http://www.lanmon.net点击数:1329

Telnet是一种客户端 - 服务器协议,通过TCP的端口23连接到远程服务器。 Telnet不加密数据,因此它被认为是不安全的,因为数据是以明文形式发送的,因此密码很容易被嗅探。但是,仍有较旧的系统需要使用它。这是使用stunnel的地方。
Stunnel旨在为使用不安全连接协议的程序添加SSL加密。本文将使用telnet作为示例来说明如何使用它。
服务器安装
使用sudo安装stunnel和telnet服务器和客户端:
Sudo dnf -y安装stunnel telnet-server telnet
添加防火墙规则并在出现提示时输入密码:
Firewall-cmd --add-service=telnet --perm
Firewall-cmd --reload
接下来,生成RSA私钥和SSL证书:
Openssl genrsa 2048>
Stunnel.key
Openssl req -new -key stunnel.key -x509 -days 90 -out stunnel.crt
系统将一次提示您输入以下信息。在要求公共名称时,您必须输入正确的主机名或IP地址,但您可以按Enter键跳过其他所有内容。
您将被要求输入将要提供的信息
已纳入您的证书申请。
您要输入的是所谓的专有名称或DN。
有很多字段,但你可以留空
对于某些字段,将有一个默认值,如果输入“。”,该字段将留空。
-----
国家名称(2个字母代码)[XX]:
州或省名(全名)[]:
地点名称(例如,城市)[默认城市]:
组织名称(例如,公司)[Default Company Ltd]:
组织单位名称(例如,部分)[]:
通用名称(例如,您的名称或服务器的主机名)[]:
电子邮件地址 []
将RSA密钥和SSL证书合并到单个.pem文件中,并将其复制到SSL证书目录:
Cat stunnel.crt stunnel.key>
Stunnel.pem
Sudo cp stunnel.pem/etc/pki/tls/certs /
现在可以定义用于加密连接的服务和端口。选择尚未使用的端口。此示例使用450端口进行隧道传输telnet。编辑或创建/etc/stunnel/telnet.conf:
Cert=/etc/pki/tls/certs/stunnel.pem
sslVersion=TLSv1
Chroot=/var/run/stunnel
Setuid=没人
Setgid=没人
Pid=/stunnel.pid
Socket=l: TCP_NODELAY=1
Socket=r: TCP_NODELAY=1
[远程登录]
接受=450
连接=23
accept选项是服务器将侦听传入的telnet请求的接口。 connect选项是telnet服务器的内部侦听接口。
接下来,创建systemd单元文件的副本以覆盖原始版本:
Sudo cp /usr/lib/systemd/system/stunnel.service/etc/systemd/system编辑/etc/systemd/system/stunnel.service以添加两行。这些行在启动时为服务创建chroot jail。
[单元]
描述=网络守护进程的TLS隧道
在=syslog.target network.target之后
[服务]
ExecStart=的/usr /斌/安全通道
类型=分叉
PrivateTmp=真
ExecStartPre= - /usr/bin/mkdir/var/run/stunnel
ExecStartPre=/usr/bin/chown -R nobody: nobody/var/run/stunnel
[安装]
WantedBy=multi-user.target
接下来,将SELinux配置为在刚刚指定的新端口上侦听telnet:
Sudo semanage port -a -t telnetd_port_t -p tcp 450
最后,添加新的防火墙规则:
Firewall-cmd --add-port=450/tcp --perm
Firewall-cmd --reload
现在您可以启用并启动telnet和stunnel。
Systemctl启用telnet.socket [email protected]  - 现在
请注意,systemctl命令是有序的。 systemd和stunnel包默认提供其他模板单元文件。此模板允许您将stunnel的多个配置文件放入/etc/stunnel,并使用文件名启动服务。例如,如果您有foobar.conf文件,则可以使用systemctl start [email protected]来启动stunnel实例,而无需自己编写任何单元文件。
如果需要,可以将此stunnel模板服务设置为在启动时启动:
Systemctl启用[email protected]
客户端安装
本文的这一部分假定您以客户端系统上的普通用户(具有sudo权限)身份登录。安装stunnel和telnet客户端:Dnf -y安装stunnel telnet
将stunnel.pem从远程服务器复制到客户端上的/etc/pki/tls/certs目录。在此示例中,远程telnet服务器的IP地址为192.168.1.143。
Sudo scp [email protected]: /etc/pki/tls/certs/stunnel.pem
的/etc/PKI/TLS /证书/
创建/etc/stunnel/telnet.conf:
Cert=/etc/pki/tls/certs/stunnel.pem
客户端=YES
[远程登录]
接受=450
Connect=192.168.1.143: 450
accept选项是用于telnet会话的端口。 connect选项是远程服务器的IP地址及其正在侦听的端口。
接下来,启用并启动stunnel:
Systemctl启用[email protected]  - 现在
测试你的连接。由于存在已建立的连接,因此您将telnet到localhost而不是远程telnet服务器的主机名或IP地址。
[user @ client~] $ telnet localhost 450
尝试: 1 .
Telnet:连接到地址: 1:连接被拒绝
试试127.0.0.1 ..
连接到localhost。
逃脱角色是'^]'。
x86_64(0)上的内核5.0.9-301.fc30.x86_64
服务器登录: myuser
密码: XXXXXXX
上次登录:太阳5月5日14日: 28: 22来自localhost
[myuser @ server~] $
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部