mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-25 23:11:02 +08:00
Merge pull request #13966 from wxy/20190522-Securing-telnet-connections-with-stunnel
PRF&PUB:20190522 Securing telnet connections with stunnel
This commit is contained in:
commit
a549fb202b
@ -1,8 +1,8 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-10945-1.html)
|
||||
[#]: subject: (Securing telnet connections with stunnel)
|
||||
[#]: via: (https://fedoramagazine.org/securing-telnet-connections-with-stunnel/)
|
||||
[#]: author: (Curt Warfield https://fedoramagazine.org/author/rcurtiswarfield/)
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
![][1]
|
||||
|
||||
Telnet 是一种客户端-服务端协议,通过 TCP 的 23 端口连接到远程服务器。Telnet 并不加密数据,被认为是不安全的,因为数据是以明文形式发送的,所以密码很容易被嗅探。但是,仍有老旧系统需要使用它。这就是用到 **stunnel** 的地方。
|
||||
Telnet 是一种客户端-服务端协议,通过 TCP 的 23 端口连接到远程服务器。Telnet 并不加密数据,因此它被认为是不安全的,因为数据是以明文形式发送的,所以密码很容易被嗅探。但是,仍有老旧系统需要使用它。这就是用到 **stunnel** 的地方。
|
||||
|
||||
stunnel 旨在为使用不安全连接协议的程序增加 SSL 加密。本文将以 telnet 为例介绍如何使用它。
|
||||
|
||||
@ -38,7 +38,7 @@ openssl genrsa 2048 > stunnel.key
|
||||
openssl req -new -key stunnel.key -x509 -days 90 -out stunnel.crt
|
||||
```
|
||||
|
||||
系统将一次提示你输入以下信息。当询问 _Common Name_ 时,你必须输入正确的主机名或 IP 地址,但是你可以按**回车**键跳过其他所有内容。
|
||||
系统将一次提示你输入以下信息。当询问 `Common Name` 时,你必须输入正确的主机名或 IP 地址,但是你可以按回车键跳过其他所有内容。
|
||||
|
||||
```
|
||||
You are about to be asked to enter information that will be
|
||||
@ -57,14 +57,14 @@ Common Name (eg, your name or your server's hostname) []:
|
||||
Email Address []
|
||||
```
|
||||
|
||||
将 RSA 密钥和 SSL 证书合并到单个 _.pem_ 文件中,并将其复制到 SSL 证书目录:
|
||||
将 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_ :
|
||||
现在可以定义服务和用于加密连接的端口了。选择尚未使用的端口。此例使用 450 端口进行隧道传输 telnet。编辑或创建 `/etc/stunnel/telnet.conf`:
|
||||
|
||||
```
|
||||
cert = /etc/pki/tls/certs/stunnel.pem
|
||||
@ -80,7 +80,7 @@ accept = 450
|
||||
connect = 23
|
||||
```
|
||||
|
||||
**accept** 选项是服务器将监听传入 **accept** 请求的接口。**connect** 选项是 telnet 服务器的内部监听接口。
|
||||
`accept` 选项是服务器将监听传入 telnet 请求的接口。`connect` 选项是 telnet 服务器的内部监听接口。
|
||||
|
||||
接下来,创建一个 systemd 单元文件的副本来覆盖原来的版本:
|
||||
|
||||
@ -88,7 +88,7 @@ connect = 23
|
||||
sudo cp /usr/lib/systemd/system/stunnel.service /etc/systemd/system
|
||||
```
|
||||
|
||||
编辑 _/etc/systemd/system/stunnel.service_ 来添加两行。这些行在启动时为服务创建 chroot 监狱。
|
||||
编辑 `/etc/systemd/system/stunnel.service` 来添加两行。这些行在启动时为服务创建 chroot 监狱。
|
||||
|
||||
```
|
||||
[Unit]
|
||||
@ -125,7 +125,7 @@ firewall-cmd --reload
|
||||
systemctl enable telnet.socket stunnel@telnet.service --now
|
||||
```
|
||||
|
||||
要注意 _systemctl_ 命令是有序的。systemd 和 stunnel 包默认提供额外的[模板单元文件][3]。该模板允许你将 stunnel 的多个配置文件放到 _/etc/stunnel_ 中,并使用文件名启动该服务。例如,如果你有一个 _foobar.conf_ 文件,那么可以使用 _systemctl start stunnel@foobar.service_ 启动该 stunnel 实例,而无需自己编写任何单元文件。
|
||||
要注意 `systemctl` 命令是有顺序的。systemd 和 stunnel 包默认提供额外的[模板单元文件][3]。该模板允许你将 stunnel 的多个配置文件放到 `/etc/stunnel` 中,并使用文件名启动该服务。例如,如果你有一个 `foobar.conf` 文件,那么可以使用 `systemctl start stunnel@foobar.service` 启动该 stunnel 实例,而无需自己编写任何单元文件。
|
||||
|
||||
如果需要,可以将此 stunnel 模板服务设置为在启动时启动:
|
||||
|
||||
@ -141,14 +141,14 @@ systemctl enable stunnel@telnet.service
|
||||
dnf -y install stunnel telnet
|
||||
```
|
||||
|
||||
将 _stunnel.pem_ 从远程服务器复制到客户端的 _/etc/pki/tls/certs_ 目录。在此例中,远程 telnet 服务器的 IP 地址为 192.168.1.143。
|
||||
将 `stunnel.pem` 从远程服务器复制到客户端的 `/etc/pki/tls/certs` 目录。在此例中,远程 telnet 服务器的 IP 地址为 `192.168.1.143`。
|
||||
|
||||
```
|
||||
sudo scp myuser@192.168.1.143:/etc/pki/tls/certs/stunnel.pem
|
||||
/etc/pki/tls/certs/
|
||||
```
|
||||
|
||||
创建 _/etc/stunnel/telnet.conf_:
|
||||
创建 `/etc/stunnel/telnet.conf`:
|
||||
|
||||
```
|
||||
cert = /etc/pki/tls/certs/stunnel.pem
|
||||
@ -158,7 +158,7 @@ accept=450
|
||||
connect=192.168.1.143:450
|
||||
```
|
||||
|
||||
**accept** 选项是用于 telnet 会话的端口。**connect** 选项是你远程服务器的 IP 地址以及监听的端口。
|
||||
`accept` 选项是用于 telnet 会话的端口。`connect` 选项是你远程服务器的 IP 地址以及监听的端口。
|
||||
|
||||
接下来,启用并启动 stunnel:
|
||||
|
||||
@ -166,7 +166,7 @@ connect=192.168.1.143:450
|
||||
systemctl enable stunnel@telnet.service --now
|
||||
```
|
||||
|
||||
测试你的连接。由于有一条已建立的连接,你会 telnet 到 _localhost_ 而不是远程 telnet 服务器的主机名或者 IP 地址。
|
||||
测试你的连接。由于有一条已建立的连接,你会 `telnet` 到 `localhost` 而不是远程 telnet 服务器的主机名或者 IP 地址。
|
||||
|
||||
```
|
||||
[user@client ~]$ telnet localhost 450
|
||||
@ -190,7 +190,7 @@ via: https://fedoramagazine.org/securing-telnet-connections-with-stunnel/
|
||||
作者:[Curt Warfield][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
Loading…
Reference in New Issue
Block a user