[技術分享]NonStop Server SSH over TELNET實務經驗分享

作者/謝宏松

作者簡歷 作者擁有超過20年IT服務資歷,現職凌群電腦NSK服務總處系統工程師,主要負責HPE NonStop證券、銀行客戶系統維運服務,專長為HPE NonStop系統整合。 前言 HPE NonStop SSH是一個完整的Enterprise Secure Shell解決方案,取代以明碼方式傳輸資料的Telnet,資料傳輸經過加密,提高機密性和安全性。 此篇文章提出的HPE NonStop SSH over Telnet架構,可保留Telnet原本的Static window設定與管理方式,並將對外連線透過SSH進行加密傳輸,轉換過程可分批移轉並保留相關window與term設定,避免系統大幅異動以降低轉換風險。SSH over Telnet連線架構設定及使用環境如下圖所示:
NonStop端環境設定及說明 一、NonStop SSH元件說明
  • SSH2:SSH2是NonStop SSH最主要的程式,提供下列服務:
    • 做為SSH Server process,可設定listen特定連線TCP/IP Port(通常為PORT 22),對使用者和服務進行身份驗證,通過驗證後建立連線。
    • 使用SSHCOM管理SSH configuration database。
    • 使用者可以用SFTP或SSH client軟體與有啟動SSH daemon的系統建立連線。
  • SSH:為一執行在Guardian環境下的Secure Shell client,可與遠端SSH daemon連線。
  • SSHCOM:用來管理SSH環境
  • PAUTH:對系統使用者群的使用者密碼進行身份驗證。
  • STN:是pseudo TTY server,提供全螢幕shell給遠端SSH client使用。
  • TELNET:forwarding選擇的標的物,包含IP、PORT及相關的SERVICE、Static Window環境設定。
二、SSH架構概述
  • SSH2執行成SSH Daemon (Server):SSH2 process接受遠端連線,根據使用者的資料庫對遠端使用者進行身份驗證,也可以使用PAUTH驗證使用者密碼。
  • 在收到請求後,可使用以下的服務:
    • NonStop TACL、OSS Shell或SFTPSERV服務。
    • 使用者可以使用SSHCOM管理user database,允許管理者配置remote users public keys、控制對伺服器的功能及檔案傳輸的存取權限。
三、啟動SSH2環境
  • 啟動STN Pseudo Terminal Server 遠端SSH client要取得一個終端機連線,必須啟動一個STN process當作SSH2的PTY server。在TACL環境下執行下列obeyfile: ALLOW ALL ERRORS ABORT PROCESS $ZZKRN.#SSH-PTYT DELETE PROCESS $ZZKRN.#SSH-PTYT ADD PROCESS $ZZKRN.#SSH-PTYT, & NAME $PTYT, PROGRAM $SYSTEM.ZSSH.STN, DEFAULTVOL $SYSTEM.SSHTEST, & HOMETERM $ZHOME, INFILE $ZHOME, OUTFILE $ZHOME, & AUTORESTART 10, SAVEABEND OFF, STARTMODE APPLICATION, PRIORITY 150, & STOPMODE STANDARD, CPU FIRSTOF (1,0) START PROCESS $ZZKRN.#SSH-PTYT
  • 啟動SSH2 process 在TACL環境下執行下列obeyfile: ALLOW ALL ERRORS ABORT PROCESS $ZZKRN.#SSH-ZSH01 DELETE PROCESS $ZZKRN.#SSH-ZSH01 ADD PROCESS $ZZKRN.#SSH-ZSH01, & NAME $ZSH01, PROGRAM $SYSTEM.ZSSH.SSH2, DEFAULTVOL $SYSTEM.SSHTEST, & HOMETERM $ZHOME, INFILE $ZHOME, OUTFILE $ZHOME, & AUTORESTART 10, SAVEABEND OFF, STARTMODE APPLICATION, PRIORITY 150, & STOPMODE STANDARD, CPU FIRSTOF (1,0), & STARTUPMSG "ALL;SUBNET $ZTCT;PORT 7979;CONFIG $SYSTEM.SSHTEST.SSHTCFG" START PROCESS $ZZKRN.#SSH-ZSH01 說明: –啟動SSH2 process,並指定DEFAULTVOL目錄 –指定要走哪個TCPIP PROCESS:SUBNET $ZTCT –指定要走哪個PORT:PORT 7979 –指定要讀哪個CONFIG FILE:CONFIG $SYSTEM.SSHTEST.SSHTCFG, CONFIG FILE內要指定該SSH2要與哪個STN PROCESS做連結,如下面紅色字串-PTYSERVER $PTYT。CONFIG內容需要預先編輯準備好。 SSH CONFIG FILE (SSHTCFG) 內容如下: CUSTOMER HP AUTOADDSYSTEMUSERS TRUE STRICTHOSTKEYCHECKING FALSE CLIENTMODEOWNERPOLICY GUARDIANNAME PTYSERVER $PTYT SSHCTL SSHBDB SSHCTLAUDIT FALSE BACKUPCPU 0 BANNER HOSTKEY HOSTKEYB #--------------------------------------- # log configuration #--------------------------------------- # SET THE LEVEL LOGLEVEL 50 # Do not log to hometerm and EMS LOGCONSOLE * LOGEMS * # Log to log file LOGFILE $SYSTEM.SSHTEST.SSHTLOG #--------------------------------------- # audit configuration #--------------------------------------- # Turn on basic auditing AUDITFILE $SYSTEM.SSHTEST.AUDITT
  • 設定user 採用SSH的連線方式,SSH會對user進行驗證,所以需在user的database中對每個登入的user設定;user name為連線時ssh的登入使用者名,可以是系統的user,或是自訂的user name。如登入的使用者採用系統的user,則可以不用先建立user;若是自訂的user,則需先建立。以下為加一個user的範例: open $ZSH01 DELETE USER USERTACL ADD USER USERTACL, & ALLOWED-AUTHENTICATIONS (NONE), & ALLOW-SHELL YES, SHELL-PROGRAM TELNET 10.1.10.1 23, ALLOW-CI YES, & CI-PROGRAM TELNET 10.1.10.1 23, ALLOWED-SUBSYSTEMS (SFTP, TACL, OSH), & ALLOW-TCP-FORWARDING YES, OWNER *NONE*,SYSTEM-USER *NONE* 說明:此範例為加一個SSH user - USERTACL,它登入後不再提供二次驗證方式(NONE),該USER有權限使用SFTP、TACL及OSH程式,不對應Guardian系統使用者,通過認證後,會自動導向TELNET 10.1.10.1(port 23)的連線,並依據該TELNET設定配置static window。亦即網路傳輸過程,傳輸資料透過SSH進行加密處理,進入到NonStop系統後,透過SSH2 forwarding功能,與原來的TELNET連線環境做MAPPING;同時可透過SSHCOM查詢該SSH process所管理的session狀態資訊並進行管理。
Client端連線軟體設定(DRSE)
  • 安裝DRSE版本2.06.10以上的版本(支援SSH連線)
  • 新增連線profile。
    • 於Session分頁填入新session名稱(ex:NSX-profile)
    • Properties分頁,填入SSH連線資訊。包含Host Address/Port Number,Secure Socket需勾選,並於SSH Configuration之Service Name填選對應到SSH2內設定連線的USER名稱,因不再對此SSH連線做二次認證,Password/Keyboard Interactive無須勾選。
  • 填選完畢,請SAVE此設定。
  • 連線,確認該PROFILE可以與NonStop端的SSH建立連線,並Forwarding到TELNET環境,如下圖所示。
  • SSHCOM檢查連線 TACL>SSHCOM % STATUS SESSION *, RECURSIVE
    查看AUTH-USR欄位是否有 USERTACL認證成功的SESSION存在,若有,此即為該建立連線的SESSION資訊)
    • 由上述查詢的SID(SESSION ID),藉由STATUS CHANNEL指令可以看到詳細資訊。 % STATUS CHANNEL 12, DETAIL
    • (可以藉由此資訊,連結到SSH forwarding到TELNET的關係)
    SSH over TELNET特性說明
    • 說明:當在原有的TELNET使用環境,評估導入SSH加密的資料傳輸模式時,可以在不變動原始的TELNET設定環境,利用NonStop SSH所提供的forwarding架構,把資料傳輸加密的需求納入使用環境。
    • [SERVER端] SSH over Telnet建置程序 (1)規劃SSH需求的網段,並收集相關資訊。 (2)建置SSH / STN process(建議設定成Generic process,由$ZZKRN管理)。 (3)SSH內建置USER(需選定登入認證方式、CI-PROGRAM及SHELL-PROGRAM需指定forwarding的Telnet連線資訊)
    • 降低SSH加解密時CPU使用率 請調整SSH2下列兩個參數(使用SSHCOM動態調整設定或SSH CONFIG File調整DEFAULT值)。 (1)SLOWDOWNTICKS 1 (2)SLOWDOWNIOS 2
    • [Client端]DRSE client設定: SSH連線資訊設定:包含Host Address/Port Number,勾選Secure Socket,並於SSH Configuration之Service Name填選對應到SSH2內設定連線的USER名稱;若不再對此SSH連線做二次認證,Password/Keyboard Interactive無須勾選。若有要做二次認證,可以依據Server端環境,配合勾選適當的選項。
    • 管理部分: (1)由SSHCOM查看SSH SESSION或CHANNEL資訊。 (2)由SCF LISTOPENS PROCESS $查看由SSH forwarding到TELNET的Session連線資訊。
    參考資料 HPE NonStop SSH Reference Manual。