如何使用stunnel保护telnet连接
這篇文章主要為大家展示了“如何使用stunnel保護telnet連接”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何使用stunnel保護telnet連接”這篇文章吧。
Telnet 是一種客戶端-服務端協議,通過 TCP 的 23 端口連接到遠程服務器。Telnet 并不加密數據,因此它被認為是不安全的,因為數據是以明文形式發送的,所以密碼很容易被嗅探。但是,仍有老舊系統需要使用它。這就是用到 stunnel 的地方。
stunnel 旨在為使用不安全連接協議的程序增加 SSL 加密。
服務端安裝
使用 sudo 安裝 stunnel 以及 telnet 的服務端和客戶端:
sudodnf-yinstallstunneltelnet-servertelnet
添加防火墻規則,在提示時輸入你的密碼:
firewall-cmd--add-service=telnet--permfirewall-cmd--reload
接下來,生成 RSA 私鑰和 SSL 證書:
opensslgenrsa2048>stunnel.keyopensslreq-new-keystunnel.key-x509-days90-outstunnel.crt
系統將一次提示你輸入以下信息。當詢問 Common Name 時,你必須輸入正確的主機名或 IP 地址,但是你可以按回車鍵跳過其他所有內容。
Youareabouttobeaskedtoenterinformationthatwillbeincorporatedintoyourcertificaterequest.WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN.TherearequiteafewfieldsbutyoucanleavesomeblankForsomefieldstherewillbeadefaultvalue,Ifyouenter'.',thefieldwillbeleftblank.-----CountryName(2lettercode)[XX]:StateorProvinceName(fullname)[]:LocalityName(eg,city)[DefaultCity]:OrganizationName(eg,company)[DefaultCompanyLtd]:OrganizationalUnitName(eg,section)[]:CommonName(eg,yournameoryourserver'shostname)[]:EmailAddress[]
將 RSA 密鑰和 SSL 證書合并到單個 .pem 文件中,并將其復制到 SSL 證書目錄:
catstunnel.crtstunnel.key>stunnel.pemsudocpstunnel.pem/etc/pki/tls/certs/
現在可以定義服務和用于加密連接的端口了。選擇尚未使用的端口。此例使用 450 端口進行隧道傳輸 telnet。編輯或創建 /etc/stunnel/telnet.conf:
cert=/etc/pki/tls/certs/stunnel.pemsslVersion=TLSv1chroot=/var/run/stunnelsetuid=nobodysetgid=nobodypid=/stunnel.pidsocket=l:TCP_NODELAY=1socket=r:TCP_NODELAY=1[telnet]accept=450connect=23
accept 選項是服務器將監聽傳入 telnet 請求的接口。connect 選項是 telnet 服務器的內部監聽接口。
接下來,創建一個 systemd 單元文件的副本來覆蓋原來的版本:
sudocp/usr/lib/systemd/system/stunnel.service/etc/systemd/system
編輯 /etc/systemd/system/stunnel.service 來添加兩行。這些行在啟動時為服務創建 chroot 監獄。
[Unit]Description=TLStunnelfornetworkdaemonsAfter=syslog.targetnetwork.target[Service]ExecStart=/usr/bin/stunnelType=forkingPrivateTmp=trueExecStartPre=-/usr/bin/mkdir/var/run/stunnelExecStartPre=/usr/bin/chown-Rnobody:nobody/var/run/stunnel[Install]WantedBy=multi-user.target
接下來,配置 SELinux 以在你剛剛指定的新端口上監聽 telnet:
sudosemanageport-a-ttelnetd_port_t-ptcp450
***,添加新的防火墻規則:
firewall-cmd--add-port=450/tcp--permfirewall-cmd--reload
現在你可以啟用并啟動 telnet 和 stunnel。
systemctlenabletelnet.socketstunnel@telnet.service--now
要注意 systemctl 命令是有順序的。systemd 和 stunnel 包默認提供額外的模板單元文件。該模板允許你將 stunnel 的多個配置文件放到 /etc/stunnel 中,并使用文件名啟動該服務。例如,如果你有一個 foobar.conf 文件,那么可以使用 systemctl start stunnel@foobar.service 啟動該 stunnel 實例,而無需自己編寫任何單元文件。
如果需要,可以將此 stunnel 模板服務設置為在啟動時啟動:
systemctlenablestunnel@telnet.service
客戶端安裝
本文的這部分假設你在客戶端系統上以普通用戶(擁有 sudo 權限)身份登錄。安裝 stunnel 和 telnet 客戶端:
dnf-yinstallstunneltelnet
將 stunnel.pem 從遠程服務器復制到客戶端的 /etc/pki/tls/certs 目錄。在此例中,遠程 telnet 服務器的 IP 地址為 192.168.1.143。
sudoscpmyuser@192.168.1.143:/etc/pki/tls/certs/stunnel.pem/etc/pki/tls/certs/
創建 /etc/stunnel/telnet.conf:
cert=/etc/pki/tls/certs/stunnel.pemclient=yes[telnet]accept=450connect=192.168.1.143:450
accept 選項是用于 telnet 會話的端口。connect 選項是你遠程服務器的 IP 地址以及監聽的端口。
接下來,啟用并啟動 stunnel:
systemctlenablestunnel@telnet.service--now
測試你的連接。由于有一條已建立的連接,你會 telnet 到 localhost 而不是遠程 telnet 服務器的主機名或者 IP 地址。
[user@client~]$telnetlocalhost450Trying::1...telnet:connecttoaddress::1:ConnectionrefusedTrying127.0.0.1...Connectedtolocalhost.Escapecharacteris'^]'.Kernel5.0.9-301.fc30.x86_64onanx86_64(0)serverlogin:myuserPassword:XXXXXXXLastlogin:SunMay514:28:22fromlocalhost[myuser@server~]$
總結
以上是生活随笔為你收集整理的如何使用stunnel保护telnet连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将mysql从服务器永远变为只读_将my
- 下一篇: c++中出现未定义标识符错误怎么办