PROFILE.TCPIP への予約済みポート番号定義の設定

図 1 には、TCP/IP アドレス・スペース、PROFILE.TCPIP の構成ファイルの例の一部が示されています。この例は SEZAINST(SAMPPROF) からコピーできます。 図 1 には、予約済みポート番号定義をセットアップする方法の例の 一部が含まれています。図 1 に続いてステートメントの説明があります。

; ======================================================================
; Application configuration
; ======================================================================
;
; AUTOLOG: Supplies TCPIP with the procedure names to start and the
; time value to wait at TCP start up for any of those procedures
; to terminate if they are active.
;
; AUTOLOG 5
;  FTPD JOBNAME FTPD1       ; FTP Server
変更の始まり;  LPSERVE                  ; LPD Server
;  OMPROUTE                 ; OMPROUTE Server変更の終わり
;  OSNMPD                   ; SNMP Agent Server
;  PAGENT                   ; Policy Agent Server
;  PORTMAP                  ; Portmap Server (SUN 3.9)
;  PORTMAP JOBNAME PORTMAP1 ; USS Portmap Server (SUN 4.0)
;  RXSERVE                  ; Remote Execution Server
変更の始まり;  SMTP                     ; SMTP Server
; ENDAUTOLOG変更の終わり
;
; ----------------------------------------------------------------------
;
; PORT: Reserves a port for specified job names
;
;   - A port that is not reserved in this list can be used by any user.
;     If you have TCP/IP hosts in your network that reserve ports
;     in the range 1-1023 for privileged applications, you should
;     reserve them here to prevent users from using them.
;     The RESTRICTLOWPORTS option on TCPCONFIG and UDPCONFIG will also
;     prevent unauthorized applications from accessing unreserved
;     ports in the 1-1023 range.
;
;   - A PORT statement with the optional keyword SAF followed by a
;     1-8 character name can be used to reserve a PORT and control
;     access to the PORT with a security product such as RACF.
;     For port access control, the full resource name for the security
;     product authorization check is constructed as follows:
;     EZB.PORTACCESS.sysname.tcpname.safname
;     where:
;       EZB.PORTACCESS is a constant
;       sysname is the MVS system name (substitute your sysname)
;       tcpname is the TCPIP jobname (substitute your jobname)
;       safname is the 1-8 character name following the SAF keyword
;
;     When PORT access control is used, the TCP/IP application
;     requiring access to the reserved PORT must be running under a
;     USERID that is authorized to the resource. The resources
;     are defined in the SERVAUTH class.
;
;     For an example of how the SAF keyword can be used to enhance
;     security, see the definition below for the FTP data PORT 20
;     with the SAF keyword. This definition reserves TCP PORT 20 for
;     any jobname (the *) but requires that the FTP user be permitted
;     by the security product to the resource:
;     EZB.PORTACCESS.sysname.tcpname.FTPDATA in the SERVAUTH class.
;
;   - The BIND keyword is used to force a generic server (one that
;     binds to the IPv4 INADDR_ANY address, or the IPv6 unspecified
;     address, in6addr_any) to bind to the specific IP address that
;     is specified following the BIND keyword. This capability could
;     be used, for example, to allow z/OS UNIX telnet and telnet
;     3270 servers to both bind to TCP port 23.
;     The IP address that follows bind must be in IPv4 (dotted
;     decimal) or IPv6 (colon-hexadecimal) format and may be
;     any valid address for the host including VIPA and dynamic
;     VIPA addresses.
;
;   The special jobname of OMVS indicates that the PORT is reserved
;   for any application with the exception of those that use the Pascal
;   API.
;
;   The special jobname of * indicates that the PORT is reserved
;   for any application, including Pascal API socket applications.
;   Jobname may be specified as a prefix of zero to seven characters
;   ending in *.
;
;   The special jobname of RESERVED indicates that the PORT is
;   blocked. It will not be available to any application.
;
;   GUIDELINE: When IPSECURITY is enabled, UDP ports 500 and 4500
;   should either be reserved for IKED (if it is in use) or should
;   be marked RESERVED.
;
;   TIP:  The PORT statement can also be used to control application
;   access to unreserved ports by configuring PORT entries where the
;   port number is replaced by the keyword UNRSV.
;
PORT
     7 UDP MISCSERV            ; Miscellaneous Server - echo
     7 TCP MISCSERV            ; Miscellaneous Server - echo
     9 UDP MISCSERV            ; Miscellaneous Server - discard
     9 TCP MISCSERV            ; Miscellaneous Server - discard
    19 UDP MISCSERV            ; Miscellaneous Server - chargen
    19 TCP MISCSERV            ; Miscellaneous Server - chargen
    20 TCP *  NOAUTOLOG        ; FTP Server
;   20 TCP *  NOAUTOLOG SAF FTPDATA ; FTP Server
    21 TCP FTPD1               ; FTP Server
    23 TCP TN3270              ; Telnet 3270 Server
;   23 TCP INETD1 BIND 9.67.113.3 ; z/OS UNIX Telnet server
    25 TCP SMTP                ; SMTP Server
   111 TCP PORTMAP             ; Portmap Server (SUN 3.9)
   111 UDP PORTMAP             ; Portmap Server (SUN 3.9)
;  111 TCP PORTMAP1            ; Unix Portmap Server (SUN 4.0)
;  111 UDP PORTMAP1            ; Unix Portmap Server (SUN 4.0)
   123 UDP SNTPD               ; Simple Network Time Protocol Server
   135 UDP LLBD                ; NCS Location Broker
   161 UDP OSNMPD              ; SNMP Agent
   389 TCP LDAPSRV             ; LDAP Server
   443 TCP HTTPS               ; http protocol over TLS/SSL
   443 UDP HTTPS               ; http protocol over TLS/SSL
;  500 UDP IKED                ; CS IKE daemon
   512 TCP RXSERVE             ; Remote Execution Server
   514 TCP RXSERVE             ; Remote Execution Server
;  512 TCP * SAF OREXECD       ; z/OS UNIX Remote Execution Server
;  514 TCP * SAF ORSHELLD      ; z/OS UNIX Remote Shell Server
;  515 TCP LPSERVE             ; LPD Server
;  515 TCP AOPLPD              ; Infoprint LPD Server
   520 UDP OMPROUTE            ; OMPROUTE Server (IPv4 RIP)
   変更の始まり521 UDP OMPROUTE            ; OMPROUTE Server (IPv6 RIP)
   750 TCP MVSKERB             ; Kerberos変更の終わり
   750 UDP MVSKERB             ; Kerberos
   751 TCP ADM@SRV             ; Kerberos Admin Server
   751 UDP ADM@SRV             ; Kerberos Admin Server
; 1700 TCP PAGENT NOAUTOLOG    ; Policy Agent pagentQosListener port
; 1701 TCP PAGENT NOAUTOLOG    ; Policy Agent pagentQosCollector port
  3000 TCP CICSTCP             ; CICS Socket
  3389 TCP MSYSLDAP            ; LDAP Server for Msys
; 4159 TCP NSSD                ; CS NSS daemon
; 4500 UDP IKED                ; CS IKE daemon
;16310 TCP PAGENT NOAUTOLOG    ; Policy Agent server listener port
;
; ----------------------------------------------------------------------
;
; PORTRANGE: Reserves a range of ports for specified jobnames.
;
;   In a common INET (CINET) environment, the port range indicated by
;   the INADDRANYPORT and INADDRANYCOUNT in your BPXPRMxx parmlib member
;   should be reserved for OMVS.
;
;   The special jobname of OMVS indicates that the PORTRANGE is reserved
;   for ANY z/OS UNIX socket application.
;
;   The special jobname of * indicates that the PORTRANGE is reserved
;   for any socket application, including Pascal API socket
;   applications.
;   Jobname may be specified as a prefix of zero to seven characters
;   ending in *.
;
;   The special jobname of RESERVED indicates that the PORTRANGE is
;   blocked. It will not be available to any application.
;
;   The SAF keyword is used to restrict access to the PORTRANGE to
;   authorized users. See the use of SAF on the PORT statement above.
;
;
;   PORTRANGE 2000 1000 TCP RESERVED
;   PORTRANGE 3000  500 TCP APPL1*
;   PORTRANGE 4000 1000 TCP OMVS
;   PORTRANGE 4000 1000 UDP OMVS
;   PORTRANGE 5000 6000 TCP * SAF RANGE1
;
; ----------------------------------------------------------------------
;
; SACONFIG: Configures the SNMP TCP/IP subagent
;   The SACONFIG statement specified in this sample prevents the
;   activation of the TCP/IP subagent.  If you want the
;   TCP/IP subagent started during stack initialization, either
;   remove the sample statement, or respecify the statement as
;   follows, supplying a COMMUNITY and AGENT parameter value:
;
;     SACONFIG ENABLED COMMUNITY communityname AGENT portnum
;
;   If you remove the sample statement, the TCP/IP subagent will be
;   started with a COMMUNITY value of 'public', and an
;   AGENT port value of 161.
;
SACONFIG DISABLED
;
図 1. 予約済みポート番号定義の例

以下のリストは、図 1に示されているステートメントについて説明しています。各ステートメントについて詳しくは、「z/OS Communications Server: IP 構成解説書」を参照してください。IPv6 サポートに固有の情報については、「z/OS Communications Server: IPv6 ネットワークとアプリケーション開発ガイド」を参照してください。

AUTOLOG
AUTOLOG は、TCP/IP アドレス・スペースの開始時に開始すべきプロシージャー名を リストするために使用します。これは、TCP/IP の初期化の時にハングしたプロシージャーを検出するためのタイムアウト値を提供するためにも使用されます。タイムアウト値は、始動時にプロシージャーがまだアクティブで、 TCP/IP がプロシージャーを再び AUTOLOG しようと試みているときに、TCP/IP が プロシージャーがダウンしていることを許可する時間です。 ハングしたプロシージャーは、MVS™ にとってはアクティブですが、PORT ステートメントを使用してそのプロシージャー用に予約されたソケットを listen していません。AUTOLOG がハングしたタスクを検出すると、TCP/IP は 10 秒毎に (タイムアウト値が満了するまで) プロシージャーがダウンしたかどうかをチェックします。その 10 秒の間隔の間にプロシージャー がダウンすると、それは再始動されます。タイムアウト値に指定した時間間隔が 満了になったときに、プロシージャーがまだアクティブの場合、TCP/IP は そのプロシージャーをキャンセルして再始動します。

図 1 の AUTOLOG ステートメントには、5 分のタイムアウト値が指定されています。

最初の AUTOLOG ステートメントで、FTP サーバーは FTPD JOBNAME FTPD1 を示しています。これは、TCPIP アドレス・スペースの開始時に、FTPD プロシージャーが MVS START FTPD コマンドを使用して開始されることを意味します。FTPD は、実際に PORT 21 を listen する子プロセスを fork するので、autolog タスクは、FTPD1 がポート 21 を listen していることを検査します。

同様に、TCPIP アドレス・スペースの開始時に、autolog タスクは残りの 10 個のタスクを開始します。

AUTOLOG リスト内のタスクが PORT 予約リストにないかぎり、autolog タスクは 5 分ごとのハングしたタスクの検査を行いません。
注:
  1. 複数の TCP/IP アドレス・スペースを実行する場合、2 番目のアドレス・スペース AUTOLOG リストが 最初のプロシージャーを取り消さないように注意してください。このような場合、それぞれのアドレス・スペースのサーバーごとに 別のプロシージャー名を必要とする場合があります。複数スタックの詳細は、ポート管理の概要を参照してください。
  2. AUTOLOG ステートメントは、単一スタック環境で一般サーバーを 自動的に開始するためにも使用できますが、複数スタック環境で一般サーバーを 開始するための AUTOLOG ステートメントの使用は、慎重に行う必要があります。 その代わり、一般サーバーを自動的に開始するために、オペレーションを自動化するソフトウェア・パッケージ (IBM® および その他のベンダーが提供) を使用できます。TCP/IP が提供する一般サーバーの リストは、CINET 環境の一般サーバー を参照してください。

MVS START コマンドにパラメーターを使用する必要のある プロシージャーのために、PARMSTRING オプションがあります。

AT-TLS サービスが必要な AUTOLOG プロシージャーの開始を遅延させる必要があり、これを行うには、オプションの DELAYSTART パラメーターを TTLS サブパラメーターとともにそのプロシージャーの AUTOLOG 項目に指定します。このパラメーターとサブパラメーターが指定されていると、ポリシー・エージェントが AT-TLS ポリシーをインストール済みで、AT-TLS サービスが使用可能になった後で、そのプロシージャーが開始されます。

動的 VIPA にバインドする AUTOLOG プロシージャーの開始を遅らせる必要があります。そのためには、DVIPA サブパラメーター指定でオプションの DELAYSTART パラメーターを、そのプロシージャーの AUTOLOG 項目上に指定します。このパラメーターとサブパラメーターが指定されていると、TCP/IP スタックがシスプレックス・グループを結合し、動的 VIPA 構成を処理するまで、プロシージャーは開始されません。

動的 VIPA にバインドし、AT-TLS サービスを必要とするプロシージャーの場合は、DELAYSTART DVIPA TTLS を指定します。複数の DELAYSTART サブパラメーターが指定されている場合は、それらのサブパラメーターに定義されているすべての処理ステップが、プロシージャーの開始前に完了している必要があります。

詳しくは、z/OS Communications Server: IP 構成解説書を参照してください。

PORT
PORT ステートメントを使用して、以下の構成を実行します。
  • ポートを各種ジョブのために予約し、オプションとして、ユーザー ID によりこれらのポートへのアクセスを制限します。

    PORT を使用して、さまざまなジョブのためにポートを予約し、悪意のあるアプリケーションが、特定サーバーを対象とするポート (例えば、FTP に必要なポート 21 など) を使用しないようにします。各ポート・エントリーごとに、ポート番号、プロトコル、およびプロシージャー名を指定します。最初のポート・エントリーは、プロシージャー MISCSERV 用の各種エコー・サーバー用に 予約されたポート 7 UDP を示しています。同様に、TCP のポート 7 も同じサーバー用に予約されています。この例では、各種サーバー用に 6 個のポートが予約されています。

    図 1 の port 20 TCP * にあるように、NOAUTOLOG を指定することができます。この方法で、ポートを OMVS の fork されたタスク用に予約し、各 FTP ユーザーのログイン時に FTP サーバーがタスクをポート 20 に fork できるようにします。

    DELAYACKS および NODELAYACKS オプションは、肯定応答を遅らせ、外部ホストに送信するデータと結合できるようにします。パフォーマンス上の理由により必要な場合を除き、DELAYACKS を使用して肯定応答の送信を遅らせてください。

    SHAREPORT パラメーターまたは SHAREPORTWLM パラメーターは、複数の TCP リスナー間で共用されるポートを予約する場合に使用します。これは UDP には無効です。PORT ステートメント・パラメーターがどのように使用されるかについては、「z/OS Communications Server: IP 構成解説書」を参照してください。TCP リスナーについてポート共用が使用されているかどうかを判別するには、Netstat ALL/-A レポートを使用してください。ポート共用が使用されている場合は、このレポートはどのタイプが使用されているかを示します。

    通常、特定のジョブ名にポートを予約すれば十分です。特定のユーザー ID やユーザー ID のセットに対してポートを予約する必要がある場合は、SAF キーワードを使用し、ポートに関連付けられた SAF リソースの名前を指定します。ポートにバインドするアプリケーションに関連付けられたユーザー ID は、その SAF リソースに許可されている必要があります。

    BIND キーワードは、一般サーバー (INADDR_ANY または in6addr_any にバインドするサーバー) が、BIND キーワードの後に指定された特定の IP アドレスに強制的にバインドするようにします。この機能は、例えば、z/OS® UNIX Telnet および TN3270E Telnet サーバーを両方とも、別の IP アドレス上の TCP ポート 23 にバインドさせるために使用できます。BIND の 後に続く IP アドレスは、VIPA および動的 VIPA アドレスを含む、ホストにとって有効な任意のアドレスにできます。提供されるアドレスは、IPv4 アドレス (ドット 10 進形式) または IPv6 アドレス (コロン 16 進形式) のいずれかです。マップされた IPv4 の IPv6 アドレスはサポートされません。この機能を使用して同じポートにバインドする複数のサーバーの場合、各サーバーの IP アドレスは固有でなければなりません。

    RESERVED は、どのユーザーもそのポートを使用できないことを示します。

  • 予約されていないポートへのアプリケーション・アクセスを制御します。

    PORT ステートメントを使用して、予約されていないポートへのアプリケーション・アクセスを規制することもできます。これを行うには、1 つ以上の PORT ステートメントを構成し、このステートメント中でポート番号をキーワード UNRSV で置換します。 UNRSV キーワードは、予約されていないすべてのポート (PORT または PORTRANGE ステートメントによって予約されていないすべてのポート番号) を参照します。TCPCONFIG または UDPCONFIG プロファイル・ステートメントに RESTRICTLOWPORTS パラメーターを構成すると、対応するプロトコルの PORT UNRSV ステートメントは 1023 を超える、予約されていないポートへのアクセスのみを規制します。RESTRICTLOWPORTS パラメーターを構成しないと、PORT UNRSV ステートメントは、1 から 65535 の範囲の、予約されていないすべてのポートへのアクセスを規制します。PORT UNRSV ステートメントによって規制されるアクセスのタイプは、(明示的に、またはデフォルトで、) WHENBIND または WHENLISTEN キーワードで指定されます。

    プロトコルに対して 1 つ以上の PORT UNRSV ステートメントを構成すると、次の条件のどのアプリケーションへのアクセスも無条件で拒否されます。すなわち、予約されていないポートに明示的にバインドしているアプリケーションで、構成されているどの PORT UNRSV ステートメントのプロトコルおよびジョブ名とも一致しないすべてのアプリケーションです。予約されていないポートに明示的にバインドしており、PORT UNRSV ステートメントのプロトコルおよびジョブ名と一致しないアプリケーションは、SAF または DENY キーワードによって制限されていない限り、予約されていないポートへのアクセスを許可されます。SAF キーワードが指定されている場合は、そのポートにアクセスしようとするアプリケーションと関連付けられたユーザー ID は、指定された SAF リソースへのアクセスを許可されている必要があります。DENY キーワードが指定されている場合は、アクセスは無条件に拒否されます。

    UDP ソケットの場合は、予約されていないポートが明示的バインドに指定されたときに、アクセス許可がチェックされます。WHENBIND キーワードが、UDP ポートに許可される唯一のアクセス・オプションです。

    TCP ソケットの場合、アクセスは、予約されていないポートを明示的バインドに指定時 (WHENBIND)、またはアプリケーション用に予約されていなかったユーザー指定ポートで listen を発行時 (WHENLISTEN) に規制することができます。

    予約されていないポートへの制御アクセスについて詳しくは、ポート・アクセス制御を参照してください。PORT ステートメントおよびそのパラメーターについての詳細は、「z/OS Communications Server: IP 構成解説書」を参照してください。

PORTRANGE
PORTRANGE ステートメントは、指定したジョブ名用に、ポートの範囲を予約します。
SACONFIG
SACONFIG ステートメントは、SNMP TCP/IP サブエージェントの情報を構成するために使用します。 このステートメントの AGENT キーワードは、TCP/IP サブエージェントが SNMP エージェントに接続する際に使用されるポート番号の指定に使用されます。 このステートメントを省略すると、TCPIP はデフォルト値として SACONFIG ENABLED COMMUNITY public AGENT 161 を使用します。SACONFIG プロファイル・ステートメントについて詳しくは、「z/OS Communications Server: IP 構成解説書」を参照してください。