TN3270E Telnet サーバー (Telnet) には、トランスポート・レイヤー・セキュリティー (TLS) またはセキュア・ソケット・レイヤー (SSL) プロトコルを使用して、Telnet 接続を保護する機能があります。Telnet は、TLSv1.1、 TLSv1.0、SSLv3、および SSLv2 プロトコルをサポートします。これらのプロトコルはまとめて TLS プロトコルと呼ばれます。RACF® に言及している 部分は、必要なサポートを含む任意の SAF 準拠セキュリティー製品に当てはまります。Telnet は、TCP/IP で Application Transparent Transport Layer Security (AT-TLS) を使用するようにセットアップすることができます。または、AT-TLS で使用可能な機能の一部を Telnet プロファイルで構成することができます。AT-TLS セキュリティー構成を使用するポートは、TTLSPORT ポートと呼ばれ、Telnet プロファイル・セキュリティー構成を使用するポートは、SECUREPORT ポートと呼ばれます。セキュア・ポートは、TTLSPORT ポートか SECUREPORT ポートのどちらかです。基本ポートは、TLS プロトコルを使用しないポートです。 接続はセキュアと基本のどちらかです。Telnet と VTAM® の間の流れは変更されません。
期限切れの Internet Engineering Task Force (IETF)「TLS-based Telnet security」ドラフトが Telnet でサポートされています。このドラフトでは、Telnet ネゴシエーションは、セキュア・ハンドシェークを開始する前に、クライアントで TLS プロトコルが必要またはサポートされているかどうかを判別することができます。セキュア・ポートに対して Telnet が取るデフォルトのアクションは、TLS ハンドシェークを最初に試みることです。クライアントが、指定されたハンドシェーク・タイムアウト時間内にハンドシェークを開始しない場合、期限切れの「TLS-based Telnet Security」ドラフトで定義されているとおりに、TLS のネゴシエーションが試みられます。クライアントがセキュア接続が必要であると応答すると、ハンドシェークが開始されます。クライアントが TLS ネゴシエーション要求をリジェクトすると、接続はクローズされます。 このように、インストール・システムは、クライアントが使用しているプロトコルを知らないまま、両方のタイプのセキュア・クライアントをサポートすることができます。デフォルトのアクションを変更するには、CONNTYPE ステートメントを指定します。このステートメントについては、このトピックの後半で説明します。CONNTYPE ステートメントを使用すると、同一ポートでセキュア接続と基本接続をサポートすることもできます。
Telnet サーバー認証およびクライアント認証の説明は、TLS/SSL セキュリティーにあります。Telnet サーバーは、レベル 1、レベル 2、およびレベル 3 のクライアント認証をサポートします。クライアント認証は CLIENTAUTH パラメーターによって行われます。レベル 2 およびレベル 3 のクライアント認証は、RACF サービスを使用してクライアント証明書を関連ユーザー ID に変換します。そのユーザー ID をクライアント ID として使用できます。
TTLSPORT が使用する AT-TLS は、Telnet プロファイル構成でサポートされない複数のシステム SSL 機能をサポートします。例えば、以下の機能は、AT-TLS によってサポートされますが、Telnet プロファイル構成ではサポートされません。
SECUREPORT ポートを使用する場合、Telnet プロファイル・セキュリティー構成は、システム SSL 機能の以下のサブセットをサポートします。
TTLSPORT ポートと SECUREPORT ポートは、同じ Telnet サーバー内に共存できます。
AT-TLS は、Telnet プロファイル構成と比較すると、1 つの制約があります。 AT-TLS ポリシーは、クライアントのホスト名に基づくセキュリティー・パラメーターと接続とのマッピングをサポートしません。 これを行うには、Telnet プロファイル構成を使用します。つまり、PARMSGROUP ステートメントでセキュリティー・パラメーター・ステートメントをコーディングし、PARMSMAP ステートメントを使用して、グループをホスト名またはホスト名グループにマップします。 現在この構成がある場合は、引き続き Telnet プロファイル構成を使用する必要があります。
TELNETPARMS ブロック内の TTLSPORT ステートメントまたは SECUREPORT ステートメントは、AT-TLS または Telnet プロファイル・ステートメントを使用してセキュア接続を構成するセキュア・ポートとしてポートを定義するのに必要です。
CONNTYPE ステートメントはセキュア・ポート上のオプション・ステートメントであり、接続がセキュアであるかどうかにかかわらず、および接続が使用可能であるかどうかにかかわらず、接続が TLS ハンドシェークを開始する方法に対する制御を強化します。 有効な CONNTYPE ステートメント・オプションは次のとおりです。
接続を開始するために TLS ハンドシェークを使用することを指示します。クライアントが、ハンドシェーク・タイムアウト時間によって指定された時間内にハンドシェークを開始しない場合、(期限切れの IETF「TLS-based Telnet Security」ドラフトで定義されているとおりに) ネゴシエーションされた TLS ハンドシェークが試みられます。クライアントが TLS を拒否する場合、接続がクローズされます。
クライアントが、期限切れの IETF「TLS-based Telnet Security」ドラフトをサポートすることを指示します。クライアントとの Telnet ネゴシエーションにより、クライアントがセキュア接続に入ることを望んでいるかどうかが判別されます。クライアントが同意する場合、TLS ハンドシェークが 開始され、以降のすべての通信にセキュア・プロトコルが使用されます。クライアントが TLS を拒否する場合、接続がクローズされます。このオプションの使用を検討する必要があるのは、ポートに接続中の Telnet セキュア・クライアントがすべて、期限切れの「TLS-based Telnet Security」ドラフトによって定義されたプロトコルを使用していることがわかっている場合のみです。このオプションが指定されていると、Telnet DO_StartTLS IAC への肯定応答を受信するまで、TLS ハンドシェークは試行されません。 これによって、TLS ハンドシェークが即時に開始されたにもかかわらず (CONNTYPE SECURE オプションによって開始された場合)、クライアントが、期限切れの「TLS-based Telnet Security」ドラフトによって使用されるプロトコルを 期待している場合に発生するタイムアウト遅延を回避することができます。ネットワーク内のクライアントが期限切れの「TLS-based Telnet security」ドラフトをサポートしていない場合は、NEGTSECURE オプションではなく、SECURE オプションを使用してください。
基本接続が確立されることを指示します。
接続がセキュア接続または基本接続のいずれでもよいことを指示します。Telnet は、最初に標準 TLS ハンドシェークを試みます。ハンドシェークがタイムアウトになると、ネゴシエーションされた TLS 接続 (CONNTYPE NEGTSECURE オプションの説明を参照) が試みられます。
接続を許可せず、接続をクローズすることを指示します。TELNETPARMS ブロックにこのオプションを指定した場合、PARMSMAP ステートメントは許可できるすべての接続をカバーする必要があり、関連する PARMSGROUP ステートメントは CONNTYPE ステートメントで接続タイプを指定する必要があります。
CONNTYPE ステートメントが無指定の場合は、デフォルトにより、セキュア・ポートは CONNTYPE SECURE、基本ポートは CONNTYPE BASIC になります。
CONNTYPE ステートメントを使用して、単一ポートで接続タイプを変更することができます。ポートが基本接続およびセキュア接続の両方をサポートできるようにするには、以下のいずれかのステートメントが当てはまることを前提とします。
最初のケースでは、CONNTYPE ANY を指定します。ポートがセキュア・ポートとして定義されているにもかかわらず、クライアントが基本接続を望む場合、接続ネゴシエーションが開始するまでに多少の遅延が生じます。この理由は、CONNTYPE ANY をコーディングすると、Telnet は最初に TLS ハンドシェークを試みて、クライアントが TLS サポートを要求していないことを確認するためです。基本接続のネゴシエーションが開始するのは、ハンドシェークがタイムアウトになり、ネゴシエーション・セキュリティーがリジェクトされた後になります。
2 番目のケースでは、TELNETPARMS ブロックにデフォルト接続セキュリティー・タイプを指定する必要があります (CONNTYPE ステートメントを参照)。異なる接続セキュリティー要件を持つ接続の場合:
TELNETPARMS ブロック内の TTLSPORT ステートメントは、ポートが AT-TLS を使用してシステム SSL を管理することを示します。すべての TTLSPORT ポートは、ポートごとに TELNETPARMS ブロックを指定して定義する必要があります。
CONNTYPE ステートメントを除いて、すべてのセキュリティー構成は AT-TLS ポリシーで行われます。AT-TLS セットアップについて詳しくは、Application Transparent Transport Layer Security のデータ保護を参照してください。 ポリシー・エージェントのセットアップおよび AT-TLS ポリシー・ステートメントについては、「z/OS Communications Server: IP 構成解説書」を参照してください。AT-TLS ポリシーに対して実行するタスクのリスト例には、次のものがあります。
//STDENV DD PATH='/etc/pagent/pagent.env',PATHOPTS=(ORDONLY)
PAGENT_CONFIG_FILE=//'SYS1.TCPPARMS(PAGENT)'
TcpImage TCP1 /etc/pagent/TCP1.policy FLUSH
TcpImage TCP2 /etc/pagent/TCP2.policy FLUSH
TTLSConfig /etc/pagent/pagttls1.ttls
TTLSRule tn_serv1
{
LocalPortRange 23
Direction Inbound
Jobname TCP1
TTLSGroupActionRef tn_grp_act
TTLSEnvironmentActionRef tn_env_act
}
TTLSGroupAction tn_grp_act
{
TTLSEnabled On
Trace 7
GroupUserInstance 1
}
TTLSEnvironmentAction tn_env_act
{
HandshakeRole Server
TTLSKeyringParms
{
Keyring TNsafkeyring
}
TTLSEnvironmentAdvancedParms
{
ApplicationControlled On
}
EnvironmentUserInstance 1
}
現在 Telnet プロファイルの SECUREPORT ステートメントを使用している場合、以下の表で、Telnet プロファイル・ステートメントを同等な AT-TLS ポリシー・ステートメントに変換する方法が説明されています。
Telnet ステートメント | 同等な AT-TLS ステートメント | AT-TLS ポリシー・ステートメント |
---|---|---|
CLIENTAUTH NONE | HandshakeRole Server | TTLSConnectionAction または TTLSEnvironmentAction |
CLIENTAUTH SSLCERT | HandshakeRole ServerWithClientAuth および ClientAuthType Required | TTLSConnectionAction または TTLSEnvironmentAction / TTLSEnvironmentAction 内の TTLSEnvironmentAdvancedParms |
CLIENTAUTH SAFCERT | HandshakeRole ServerWithClientAuth および ClientAuthType SAFCHECK | TTLSConnectionAction または TTLSEnvironmentAction / TTLSEnvironmentAction 内の TTLSEnvironmentAdvancedParms |
CRLLDAPSERVER | GSK_LDAP_Server および GSK_LDAP_Server_Port | TTLSEnvironmentAction 内の TTLSGskLdapParms |
ENCRYPTION | TTLSCipherParms | TTLSConnectionAction または TTLSEnvironmentAction |
KEYRING | Keyring | TTLSEnvironmentAction 内の TTLSKeyRingParms |
SSLV2 | SSLv2 | TTLSEnvironmentAction 内の TTLSEnvironmentAdvancedParms または TTLSConnectionAction 内の TTLSConnectionAdvancedParms |
SSLTIMEOUT | HandshakeTimeout | TTLSEnvironmentAction 内の TTLSEnvironmentAdvancedParms または TTLSConnectionAction 内の TTLSConnectionAdvancedParms |
Telnet プロファイル構成に基づくシステム SSL 環境の初期化が行われるのは、最初の SECUREPORT ポートがアクティブにされた時点です。その後は、すべての SECUREPORT ポートが停止 (V TCPIP,tnproc,T,STOP,PORT=SECURE) する場合を除いて、初期化は行われません。 ハードウェア暗号化が使用されるかどうかは、Telnet の初期化時点で それが使用可能かどうかによって決まります。Telnet で ICSF を使用するには、ICSF がシステム SSL から使用可能でなければなりません。 暗号支援状況メッセージが SYSOUT に出力されるのは、最初の Telnet セキュア・ポートがアクティブになる時点です。 ハードウェア暗号化について詳しくは、TLS/SSL セキュリティーを参照してください。
セキュア接続を実装するには、Telnet がシステム SSL DLL に対する APF 許可アクセスを持っていなければなりません。デフォルトでは、システム SSL DLL は SYS1.SIEALNKE にあります。システム SSL は、C ランタイム・ライブラリー (SCEERUN) および C/C++ 標準ライブラリーを使用し、これらは、Telnet からもアクセス可能であることが必要です。 これらのライブラリーにアクセスするには、ライブラリーをリンク・リストに追加するか、または Telnet プロシージャーの STEPLIB 内に指定します。リンク・リストを介してアクセスする場合、リンク・リストが許可されて いる (IEASYSxx parmlib メンバーに LNKAUTH=LNKLST が指定されている) か、またはライブラリーが 明示的に APF 許可されている必要があります。STEPLIB を介してアクセスする場合、ライブラリーが APF 許可され、DISP=SHR が指定されていなければなりません。Telnet プロファイルも更新する必要があります。SSL に関連するプロファイル・パラメーターの概要を以下に示します。For a detailed これらのパラメーターの詳細な説明については、「z/OS Communications Server: IP 構成解説書」を参照してください。
SECUREPORT ポートを定義するには、次の 2 つのステートメントが必要です。
TELNETPARMS ブロック内の SECUREPORT ポート指定ステートメントは、ポートが Telnet プロファイル構成を使用してシステム SSL を管理することを指示します。すべての SECUREPORT ポートは、ポートごとに TELNETPARMS ブロックを指定して定義する必要があります。
SSL プロトコルによって定義されているサーバー認証プロセスには、サーバー証明書が必要です。この証明書は鍵リングに保管されています。鍵リングのタイプおよび位置は、KEYRING ステートメントで指定します。Telnet が使用できる鍵リングは 1 つだけです。
鍵リングは TELNETGLOBALS または TELNETPARMS ブロックに定義できます。 TELNETGLOBALS ブロックの使用は、すべての SECUREPORT ポートについて同じ鍵リングが定義されていることを確認できます。したがって、これが優先定義方式です。TELNETPARMS ブロックに指定する場合には、SECUREPORT ポートごとに同じ鍵リング・タイプおよびファイルを指定しなければなりません。最初に読み取られた鍵リング・ファイル名が、正しい鍵リング・ファイル名と見なされます。TELNETGLOBALS 鍵リングが最初に読み取られ、次に TELNETPARMS 鍵リングが逆順で読み取られます。最初のものに一致しない鍵リングはすべてリジェクトされ、そのポートの更新は失敗に終わります。ポートがセキュアであることを確認するには、D TCPIP,tnproc,T,PROFILE コマンドを発行します。 セキュリティー見出しの下の最初の列は、ポート・タイプを示します。 SECUREPORT ポートには S、TTLSPORT ポートには T、基本ポートには B が表示されます。表示の下部付近に、Telnet が使用している鍵リング名が表示されています。
サーバー認証で、Telnet の TLS サポートを使用可能にするには、以下のステップが必要です。
この例では、2 つのファイル server.kdb および server.sth が gskkyman ユーティリティーを使用して作成されています。サーバーの証明書は server.kdb ファイルに入っていて、デフォルト証明書として指定されています。
鍵データベースおよびパスワード・スタッシュ・ファイルは同じディレクトリーになければなりません。
この例では、鍵と証明書を管理するために、RACF が使用されています。サーバー証明書は、SERVERKEYRING という鍵リングに接続され、デフォルト証明書として指定されています。
TELNETGLOBALS、TELNETPARMS、または PARMSGROUP ブロック内の SECUREPORT ポートに対してのみ、オプションのセキュリティー・ステートメントを指定できます。PARMSGROUP ブロックに指定されたステートメントは、PARMSMAP ステートメントによって PARMSGROUP ブロックにマップされたクライアントのみに適用され、TELNETPARMS または TELNETGLOBALS ブロックに指定されたステートメントをオーバーライドします。TELNETPARMS ブロックに指定したステートメントは、PARMSGROUP ステートメントによってオーバーライドされない場合、 そのポートに関するすべての接続に適用されます。TELNETGLOBALS ブロックに指定したステートメントは、TELNETPARMS または PARMSGROUP ステートメントによってオーバーライドされない場合、任意のポートに関するすべての接続に適用されます。
CONNTYPE ステートメントについては、セットアップ・セクションの説明を参照してください。
ENCRYPTION ステートメントを使用すると、暗号化アルゴリズムをこのステートメントに含まれているものだけに制限できます。 このステートメントが指定されない場合は、Telnet は、指定可能なすべての暗号化アルゴリズムを使用します。指定可能な暗号を解く鍵、および ENCRYPTION ステートメントが使用されていない場合に Telnet によって使用されるデフォルト順序については、「z/OS Communications Server: IP 構成解説書」を参照してください。ENCRYPTION ステートメントを使用する理由のいくつかを、以下に示します。
SSLV2 ステートメントは、SSLv2 プロトコルを使用可能に設定します。デフォルト値は NOSSLV2 で、これは SSLv2 プロトコルの使用を禁止します。SSLv2 プロトコルが必要になる可能性があるのは、クライアントが SSLv3、TLSv1.0、または TLSv1.1 をサポートしていない場合です。
SSLV3 ステートメントは、SSLv3 プロトコルを使用可能に設定します。デフォルト値は NOSSLV3 で、これは SSLv3 プロトコルの使用を禁止します。SSLv3 プロトコルが必要になる可能性があるのは、クライアントが TLSv1.0 または TLSv1.1 をサポートしていない場合です。
CLIENTAUTH ステートメントは、クライアントがサーバーにクライアント証明書を送信する必要があることを指示します。このステートメントを指定しない場合、SSL ハンドシェーク時にクライアント証明書は要求されないで、証明書に基づくクライアント認証は実行されません。実行される検査のレベルは、指定したオプションによって決まります。
有効な CLIENTAUTH のオプションは以下のとおりです。
認証を渡すには、クライアント証明書に署名した認証局 (CA) が、サーバーによってトラステッドと 見なされる必要があります (すなわち、クライアント証明書を発行した CA に 関する証明書が、サーバーの鍵リング内でトラステッドとしてリストされている必要があります)。
SSLCERT によって提供されるレベル 1 の検査が行われた後、RACF (または証明書登録をサポートする他の SAF 準拠のセキュリティー製品) に証明書が登録済みであることを検査するレベル 2 の検査が実行されます。 加えて、RACF SERVAUTH クラスがアクティブで、RACF リソースがポートに 定義されている場合、レベル 3 クライアント認証が有効で、接続を許可されるのは、クライアント証明書に関連付けられたユーザー ID が RACF リソースに READ アクセスできる場合に限られます。
クライアント証明書は要求されません。
CRLLDAPSERVER ステートメントは、TELNETGLOBALS ブロックで指定され、証明書取り消しリスト (CRL) LDAP サーバーの名前または IP アドレスおよびポートを定義します。CRL LDAP サーバーは、クライアント証明書が受信された (CLIENTAUTH が指定された) 場合にのみ使用されます。CLIENTAUTH と CRLLDAPSERVER ステートメントを指定した場合、クライアント認証時に証明書取り消しリストが検査されます。証明書取り消しリストでクライアントの証明書が検出された場合、接続はクローズされます。Telnet には最大 5 つの CRL LDAP サーバーを定義することができます。
SECUREPORT ポートがアクティブである間、鍵リング (名前、タイプ、または内容) あるいは CRL LDAP サーバー (名前または位置) の変更を、VARY TCPIP,tnproc,OBEYFILE コマンドを使用して行うことはできません。 鍵リングまたは CRL LDAP サーバーを変更するには、最初にすべての SECUREPORT ポートを停止します (V TCPIP,tnproc,T,STOP,PORT=S)。 その後、VARY TCPIP,tnproc,OBEYFILE コマンドを実行して、SECUREPORT ポートを新規の鍵リングまたは CRL LDAP サーバーで再始動します。 CRL LDAP サーバーが停止するか、または接続が失われた場合、システム SSL が以後の再接続を認識できない可能性があります。この状態は、CRL LDAP サーバーの変更と同様に処理する必要があります。
この例では、以下の特性を持つ 3 つのポートを定義します。
TCP/IP 構成ステートメント:
⋮
TCPCONFIG TTLS
⋮
Telnet プロファイル・ステートメント:
TELNETPARMS ; basic port does not support secure connections
Port 23
ENDTELNETPARMS
TELNETPARMS ; port that allows only secure connections
SECUREPORT 992 ; no client authentication requested
KEYRING hfs /usr/keyring/tcp1.kdb ; keyring used by all SECUREPORTs
ENDTELNETPARMS ; any supported encryption algorithm
TELNETPARMS ; port that allows secure and BASIC connections.
TTLSPORT 1023 ; note: BEGINVTAM block has PARMSGROUP that may override CONNTYPE
CONNTYPE SECURE ; SECURE is default
ENDTELNETPARMS
BEGINVTAM
Port 1023
... ; Mapping statements
IPGROUP LocalIP
255.255.255.0:10.1.1.0
255.255.255.0:10.1.2.0
ENDIPGROUP
PARMSGROUP BasicPG ; override default ConnType
CONNTYPE BASIC ; support basic connections mapped to this group
ENDPARMSGROUP
PARMSGROUP AdminPG
CONNTYPE ANY ; connections mapped to this group allow any type of connection
ENDPARMSGROUP
PARMSMAP AdminPG 10.1.3.3 ; this ip address can use secure or basic connections
PARMSMAP BasicPG localIP ; hosts defined in IPGROUP localIP,
; will use basic connections as defined in PARMSGROUP BasicPG
ENDVTAM
BEGINVTAM
Port 992 23
... ;Mapping statements
;no PARMSGROUP defined for these ports
;TELNETPARMS definitions used for all connections
ENDVTAM
AT-TLS ポリシー・ステートメント:
TTLSRule tn_serv
{
LocalPortRange 1023
Direction Inbound
Jobname TCP1
TTLSGroupActionRef tn_grp_act
TTLSEnvironmentActionRef tn_env_act
}
TTLSGroupAction tn_grp_act
{
TTLSEnabled On
Trace 7
GroupUserInstance 1
}
TTLSEnvironmentAction tn_env_act
{
HandshakeRole ServerWithClientAuth
TTLSKeyringParms
{
Keyring TNsafkeyring
}
TTLSEnvironmentAdvancedParms
{
ClientAuthType Required
ApplicationControlled On
}
EnvironmentUserInstance 1
}