Solaris のシステム管理 (IP サービス)

トランスポート層サービスの監視と変更

トランスポート層プロトコル TCP、SCTP、および UDP は、Oracle Solaris の標準パッケージの一部です。 通常、これらのプロトコルは、ユーザーの介入なしで正常に動作します。ただし、サイトの条件によっては、トランスポート層プロトコルの上で動作するサービスをログまたは変更しなければならない場合があります。次に、サービス管理機能 (SMF) を使ってこれらのサービスのプロファイルを変更する必要があります。SMF については、『Solaris のシステム管理 (基本編)』の第 18 章「サービスの管理 (概要)」を参照してください。

inetd デーモンは、システムが起動されると、標準的なインターネットサービスを起動します。これらのサービスは、TCP や SCTP、UDP をそのトランスポート層プロトコルとして使用するアプリケーションなどです。SMF コマンドを使えば、既存のインターネットサービスの組み合わせを変更したり、新しいサービスを追加したりできます。inetd についての詳細は、inetd インターネットサービスデーモン」を参照してください。

トランスポート層プロトコルが関係する操作には、次の操作があります。

inetd デーモンの詳細は、inetd(1M) のマニュアルページを参照してください。

Procedureすべての着信 TCP 接続の IP アドレスを記録する方法

  1. ローカルシステムで「ネットワーク管理者」役割になるか、スーパーユーザーになります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. inetd で管理されるすべてのサービスに対して TCP トレースを使用可能にします。


    # inetadm -M tcp_trace=TRUE
    

ProcedureSCTP プロトコルを使用するサービスを追加する方法

SCTP トランスポートプロトコルは、TCP に類似した方法でアプリケーション層プロトコルにサービスを提供します。ただし、SCTP では 2 つのシステム間での通信が可能です。これらのシステムは、片方または両方がマルチホームであってもかまいません。SCTP 接続は「アソシエーション」と呼ばれます。アソシエーションでは、アプリケーションがデータを分割し、1 つまたは複数のメッセージストリームとして伝送します (マルチストリーム化)。SCTP 接続は、複数の IP アドレスを持つエンドポイントに到達できます。これは、テレフォニーアプリケーションにとって特に重要です。IP Filter や IPsec を使用する場合、SCTP のマルチホーム機能はセキュリティーの点で考慮を要します。考慮点については、sctp(7P) のマニュアルページを参照してください。

デフォルトで SCTP は Oracle Solaris に組み込まれています。したがって、構成を別に行う必要はありません。ただし、SCTP を使用するためには、一定のアプリケーション層サービスを明示的に構成しなければならない場合があります。このようなアプリケーションの例としては、echodiscard があります。次の手順は、ワンツーワンスタイルの SCTP ソケットを使用する echo サービスの追加方法を示しています。


注 –

さらに、次の手順を使えば、TCP や UDP のトランスポート層プロトコル用のサービスを追加できます。


次の作業では、inetd デーモンによって管理される SCTP inet サービスを SMF リポジトリに追加します。さらに、作業の後半では、サービス管理機能 (SMF) コマンドを使ってこのサービスを追加します。

始める前に

次の手順を実行する前に、サービスのマニフェストファイルを作成してください。この手順では、例として、echo サービス用のマニフェスト echo.sctp.xml を使用します。

  1. システムファイルに対する書き込みアクセス権を持つユーザーアカウントでローカルシステムにログインします。

  2. /etc/services ファイルを編集し、新しいサービスの定義を追加します。

    サービスを定義する構文は次のとおりです。


    service-name |port/protocol | aliases
    
  3. 新しいサービスを追加します。

    サービスマニフェストが格納されているディレクトリに移り、次のように入力します。


    # cd dir-name
    # svccfg import service-manifest-name
    

    svccfg の詳しい構文については、svccfg(1M) のマニュアルページを参照してください。

    現在 service.dir ディレクトリにあるマニフェスト echo.sctp.xml を使用して、SCTP の新しい echo サービスを追加するとします。その場合、次のように入力します。


    # cd service.dir
    # svccfg import echo.sctp.xml
    
  4. サービスマニフェストが追加されているか確認します。


    # svcs FMRI
    

    FMRI 引数には、サービスマニフェストの Fault Managed Resource Identifier (FMRI) を使用します。たとえば、SCTP の echo サービスの場合は、次のコマンドを使用します。


    # svcs svc:/network/echo:sctp_stream
    

    次のような出力が表示されます。


    	STATE          STIME    FMRI
    disabled       16:17:00 svc:/network/echo:sctp_stream

    svcs コマンドの詳細は、svcs(1) のマニュアルページを参照してください。

    出力は、新しいサービスマニフェストが使用不可になっていることを示しています。

  5. サービスの属性をリストして、変更を加える必要があるかどうかを決めます。


    # inetadm -l FMRI
    

    inetadm コマンドの詳細は、inetadm(1m) のマニュアルページを参照してください。

    たとえば、SCTP echo サービスの場合は、次のように入力します。


    # inetadm -l svc:/network/echo:sctp_stream
    SCOPE    NAME=VALUE
    	         name="echo"
    	         endpoint_type="stream"
    	         proto="sctp"
    	         isrpc=FALSE
    	         wait=FALSE
    	         exec="/usr/lib/inet/in.echod -s"
             .
             .
             default  tcp_trace=FALSE
           	default  tcp_wrappers=FALSE
  6. 新しいサービスを使用可能にします。


    # inetadm -e FMRI
    
  7. サービスが使用可能になっていることを確認します。

    たとえば、新しい echo サービスの場合、次のように入力します。


    # inetadm | grep sctp_stream
    .
    .
    	enabled   online         svc:/network/echo:sctp_stream

例 5–9 SCTP トランスポートプロトコルを使用するサービスの追加

次の例では、使用するコマンドと、echo サービスで SCTP トランスポート層プロトコルを使用するために必要なファイルエントリを示します。


$ cat /etc/services
.
.
echo            7/tcp
echo            7/udp
echo            7/sctp

# cd service.dir

	# svccfg import echo.sctp.xml

# svcs network/echo*
	STATE          STIME    FMRI
	disabled       15:46:44 svc:/network/echo:dgram
	disabled       15:46:44 svc:/network/echo:stream
	disabled       16:17:00 svc:/network/echo:sctp_stream

# inetadm -l svc:/network/echo:sctp_stream
	SCOPE    NAME=VALUE
	         name="echo"
	         endpoint_type="stream"
	         proto="sctp"
	         isrpc=FALSE
	         wait=FALSE
	         exec="/usr/lib/inet/in.echod -s"
	         user="root"
	default  bind_addr=""
	default  bind_fail_max=-1
	default  bind_fail_interval=-1
	default  max_con_rate=-1
	default  max_copies=-1
	default  con_rate_offline=-1
	default  failrate_cnt=40
	default  failrate_interval=60
	default  inherit_env=TRUE
	default  tcp_trace=FALSE
	default  tcp_wrappers=FALSE

# inetadm -e svc:/network/echo:sctp_stream

# inetadm | grep echo
	disabled  disabled       svc:/network/echo:stream
	disabled  disabled       svc:/network/echo:dgram
	enabled   online         svc:/network/echo:sctp_stream

ProcedureTCP ラッパーを使って TCP サービスのアクセスを制御する方法

TCP ラッパー」は tcpd プログラムによって実装されます。TCP ラッパーは、送られてくるサービス要求とサービスデーモンの間で動作することによって、ftpd などのサービスデーモンにセキュリティー対策を追加します。TCP ラッパーは、正常および異常な接続の試みを記録します。さらに、TCP ラッパーはアクセス制御の機能を備えています。したがって、要求の発行元がどこかによって接続を許可することも拒否することもできます。TCP ラッパーを使えば、SSH、Telnet、FTP などのデーモンを保護できます。さらに、sendmail アプリケーションでも TCP ラッパーを使用できます。詳細は、『Solaris のシステム管理 (ネットワークサービス)』「sendmail の version 8.12 からの TCP ラッパーのサポート」を参照してください。

  1. ローカルシステムで、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。

  2. TCP ラッパーを使用可能にします。


    # inetadm -M tcp_wrappers=TRUE
    
  3. TCP ラッパーのアクセス制御ポリシーを構成します (hosts_access(3) のマニュアルページを参照)。

    このマニュアルページは、Oracle Solaris CD-ROM と一緒にパッケージ化されている SFW CD-ROM の /usr/sfw/man ディレクトリにあります。