1


Solaris 10 オペレーティングシステムのサポートの概要

Solaris Security Toolkit 4.2 ソフトウェアリリースの主な目的の 1 つは、Solaris 10 オペレーティングシステム (OS) をサポートすることです。Solaris Security Toolkit 4.2 ソフトウェアは、サービス管理機能 (SMF)、TCP ラッパー、IP フィルタなど、Solaris 10 OS の新しいセキュリティー機能に対応しています。新機能の詳細については、『Solaris Security Toolkit 4.2 ご使用にあたって』を参照してください。

Solaris Security Toolkit 4.2 ソフトウェアを使用して、以前のバージョンと同様の方法でシステムのセキュリティーを強化および監査できます。また、Solaris Security Toolkit 4.2 は以前のバージョンと同じように、JumpStart モードとスタンドアロンモードのいずれかで使用できます。


Solaris Security Toolkit ソフトウェアと Perl の併用

Solaris 10 OS には Perl (Practical Extraction and Report Language) が付属しています。Solaris 10 OS で使用するスクリプトを作成する場合、JumpStart モードでもスクリプトに Perl を使用できます。Solaris 10 OS よりも古いバージョンの Solaris OS では JumpStart 中には Perl が使えなかったり、Solaris OS のディストリビューションに Perl が含まれていなかったりする場合があります。Perl を必要とするスクリプトを書く前に、対象環境で Perl が使用できることを確認してください。セキュリティー意識の高いユーザーはシステムから Perl を削除していることが多いため、Perl が削除されている可能性があることも知っておく必要があります。

システムに Perl がインストールされている場合、Solaris Security Toolkit は set-flexible-crypt.aud スクリプト (set-flexible-crypt.audを参照) によって実行される監査中に Perl を使おうとします。システムに Perl がインストールされていない場合、スクリプトはエラーを出力します。


Solaris 10 OS 上の SMF とレガシーサービス

リストに入れて有効または無効にすることができるインターネットサービスデーモン (inetd) によって制御される一部のサービスは、サービス管理機能 (SMF) に変換され、障害管理リソース識別子 (FMRI) を使用しますが、inetd によって制御されるサービスにはサービス管理機能 (SMF) に変換されないものもあります。



注 - SMF 対応サービスのリストは Solaris 10 オペレーティングシステムに対してのみ有効です。



Solaris 10 オペレーティングシステムを使用している場合、JASS_SVCS_DISABLE スクリプトは、JASS_SVCS_DISABLE リスト上のすべてのサービスを (inetd.conf ファイル内にある場合) 無効にします。このため、あるサービスが inetd の下で Solaris 9 オペレーティングシステムに対しては有効であったが、Solaris 10 オペレーティングシステムに対して inetd.conf ファイルを使用しなくなった場合、JASS_SVCS_DISABLE 環境変数を変更してもそのサービスには何の変更も加えられません。

JASS_SVCS_ENABLEJASS_SVCS_DISABLE のいずれかの環境変数にシステム上には存在しない FMRI または inetd サービス名が含まれている場合、Solaris Security Toolkit は警告メッセージを出します。


SMF 対応サ―ビスインタフェースを使用するスクリプト

表 1-1 に、SMF 対応サービスを使用する Solaris Security Toolkit スクリプト、その Fault Management Resource Identifier (FMRI) および Solaris 9 OS に使用される起動/停止スクリプトを示します。


表 1-1 SMF 対応サ―ビスインタフェースを使用する Solaris Security Toolkit スクリプト

スクリプト名

Fault Management Resource Identifier (FMRI)

Solaris 9 OS 用の起動/停止スクリプト

disable-apache2[1]

svc:/network/http:apache2

なし

disable-automount

svc:/system/filesystem/autofs:
default

/etc/rc2.d/S74autofs

disable-dhcpd

svc:/network/dhcp-server:default

/etc/rc3.d/S24dhcp

disable-kdc

svc:/network/security/krb5kdc:default

/etc/rd3.d/S13kdc.master

/etc/rd3.d/S14kdc

disable-ldap-client

svc:/network/ldap/client:default

/etc/rc2.d/S71dap.client

disable-lp

svc:/application/print/server:
default

svc:/application/print/ipp-listener:default

svc:/application/print/rfc1179:
default

/etc/rc2.d/S80lp

disable-named

svc:/network/dns/server:default

/etc/named.boot

disable-nfs-client

svc:/network/nfs/client:default

svc:/network/nfs/status:default

svc:/network/nfs/nlocmgr:default

/etc/rc2.d/S73nfs.client

disable-nfs-server

svc:/network/nfs/server:default

/etc/rc3.d/S15nfs

disable-power-mgmt

svc:/system/power:default

/etc/rc2.d/S85power

disable-rpc

svc:/network/rpc/bind:default

svc:/network/rpc/keyserv:default

/etc/rc2.d/S71rpc

disable-sendmail

svc:/network/smtp/sendmail:
default

/etc/rc2.d/S99sendmail

disable-slp

svc:/network/slp:default

/etc/rc2.d/S72slpd

disable-spc

svc:/application/print/cleanup:
default

/etc/rc2.d/S80spc

disable-ssh-root-login

svc:/network/ssh:default

pkginfo -q -r SUNWsshdr を使用

disable-uucp

svc:/network/uucp:default

/etc/rc2.d/S70uucp

enable-ftpaccess

svc:/network/ftp:default

/etc/inet/inetd.conf

enable-inetd-syslog

svc:/network/inetd:default

/etc/default/inetd

enable-tcpwrappers

svc:/network/inetd:default

/etc/default/inetd

install-ftpusers

svc:/network/ftp:default

pkginfo -q -R SUNWftpr を使用

set-banner-ftpd

svc:/network/ftp:default

pkginfo -q -R SUNWsshdr を使用

set-banner-sshd

svc:/network/ssh:default

pkginfo -q -R SUNWftpr を使用

set-ftpd-unmask

svc:/network/ftp:default

pkginfo -q -r SUNWftpr を使用


 


SMF がレガシーサービスと認識するスクリプト

表 1-2 に、SMF 対応ではないが、SMF がレガシーサービスと認識する Solaris Security Toolkit スクリプトを示します。レガシーサービスは FMRI 形式で表すことができますが、SMF はそれらを有効/無効にすることはできません。


表 1-2 SMF がレガシーサービスと認識する Solaris Security Toolkit スクリプト

スクリプト名

Fault Management Resource Identifier (FMRI)

disable-apache

lrc:/etc/rc3_d/S50apache

disable-appserv

lrc:/etc/rc2_d/S84appserv

disable-autoinst

lrc:/etc/rc2_d/S72autoinstall

disable-directory

lrc:/etc/rc2_d/S72directory

disable-dmi

lrc:/etc/rc3_d/S77dmi

disable-dtlogin

lrc:/etc/rc2_d/S99dtlogin

disable-IIim

lrc:/etc/rc2_d/S95IIim

disable-mipagent

lrc:/etc/rc3_d/S80mipagent

disable-ppp

lrc:/etc/rc2_d/S47pppd

disable-preserve

lrc:/etc/rc2_d/S89PRESERVE

disable-samba

lrc:/etc/rc3_d/S90samba

disable-snmp

lrc:/etc/rc3_d/S76snmpdx

disable-uucp

lrc:/etc/rc2_d/S70uucp

disable-vold

lrc:/etc/rc3_d/S81volmgt

disable-wbem

lrc:/etc/rc2_d/S90wbem

set-banner-dtlogin

lrc:/etc/rc2_d/S99dtlogin


 


Solaris Security Toolkit 4.2 リリース用の新しいスクリプト

次に、Solaris Security Toolkit 4.2 リリース用の新しいスクリプトを示します。

終了スクリプト (.fin) の機能は第 5 章で説明されています。監査スクリプト (.aud) の機能は第 6 章で説明されています。


Solaris 10 OS では使用されないスクリプト

表 1-3 に、Solaris 10 オペレーティングシステムを強化する際には使用されない Solaris Security Toolkit スクリプトの一覧を示します。


表 1-3 Solaris 10 OS では使用されない Solaris Security Toolkit スクリプト

スクリプト名

適用可能なオペレーティングシステム

disable-ab2

Solaris 2.5.1 〜 8

disable-aspp

Solaris 2.5.1 〜 8

disable-picld

Solaris 8 および 9

install-fix-modes

Solaris 2.5.1 〜 9

install-newaliases

Solaris 2.5.1 〜 8

install-openssh

Solaris 2.5.1 〜 8

install-sadmind-options

Solaris 2.5.1 〜 9

install-strong-permissions

Solaris 2.5.1 〜 9

remove-unneeded-accounts

Solaris 2.5.1 〜 9


 


Solaris 10 OS では使用されない環境変数

次の環境変数は、Solaris 10 オペレーティングシステムでは使用されません。


Solaris 10 OS のゾーンの使用法

Solaris Security Toolkit 4.2 ソフトウェアは、Solaris 10 OS を使用するシステムのゾーン、つまり Sun Network One (N1) Grid コンテナの強化に使用できます。Solaris 10 のゾーンにおけるすべての Solaris Security Toolkit プロファイル (強化、監査、および元に戻す) 機能は、大部分において非ゾーンシステムと同じです。この節では、相違点を説明しています。

大域ゾーンおよび非大域ゾーンの強化における順序の重要性

非大域ゾーン (NGZ) がインストールされる前に大域ゾーンが強化されると、Solaris Security Toolkit 4.2 ソフトウェアによって行われた変更の一部が新しいゾーンに適用されますが、その他の多くの変更は適用されません。新しく作成されるゾーンが正しくセキュリティー保護されるように、ゾーンのインストール直後に、強化モードと監査モードの両方で Solaris Security Toolkit 4.2 ソフトウェアを適用する必要があります。非大域ゾーンがインストールされると、大域ゾーンにおける強化と強化解除は NGZ に影響せず、また逆に NGZ における強化と強化解除も大域ゾーンに影響しません。

非大域ゾーン内からの非大域ゾーンの強化



caution icon

注意 - セキュリティー上のリスクがあるため、非大域ゾーンファイルシステムの外部から非大域ゾーンファイルシステムには決してアクセスしないでください。非大域ゾーン内では危険ではないパスが、大域ゾーンでは危険になる場合があります。たとえば、非大域ゾーンの管理者は /etc/shadowファイルを ../../../shadowファイルにリンクできます。非大域ゾーンの内部では、このような操作は無害ですが、/opt/testzone/etc/shadowパスを使用しての大域ゾーンからのファイルに対する編集は、大域ゾーンの /etc/passwdファイルを編集することになります。もう一度繰り返しますが、非大域ゾーンは (このゾーンにログインしていない限り) 決して強化したり、元に戻したり、クリーン化したり、監査したりしないでください。



Solaris Security Toolkit 4.2 のインストール場所が標準的な /opt/SUNWjass ディレクトリである場合、Solaris 10 OS の zlogin(1) コマンドを使用してゾーンにログイン、つまりゾーンに入って Solaris Security Toolkit を実行することで、そのゾーンを強化できます。


コード例 1-1 非大域ゾーンの強化
# zlogin myzone /opt/SUNWjass/bin/jass-execute -d my.driver

 

変数 myzone は非大域ゾーンで、変数 my.driver は使用するドライバの名前です。

非大域ゾーンに関連しない一部のスクリプト

/etc/system を使用してカーネルパラメタを変更するものなど、一部の Solaris Security Toolkit スクリプトは非大域ゾーンに関係しません。これらのスクリプトを非大域ゾーンで実行すると、スクリプトは、これらは [NOTE] としては非大域ゾーンには必要ないという事実を記録します。

独自のスクリプトを書く場合、logNotGlobalZone 関数 (logNotGlobalZoneを参照) を使用して標準的な方法でそのようなメッセージを発行することができます。ユーザーが、Solaris Security Toolkit スクリプトの非大域ゾーン内にいるかどうかをテストするには、Solaris Security Toolkit 4.2 の環境変数 JASS_ZONE_NAME をチェックして、その中に global が含まれているかどうかを確認します。Solaris 10 OS よりも古いバージョンの OS では、この変数は global に設定されています。この変数についての詳細は、JASS_ZONE_NAMEを参照してください。

非大域ゾーンの監査は大域ゾーンの監査からは分離、区別されている

実行中のプロセス、インストール済みソフトウェア、および非大域ゾーンの構成は、大域ゾーンからは独立して監査されます。たとえば、実行中の未認証のプロセスを検出した NGZ の監査は NGZ の監査障害を引き起こしますが、大域ゾーンの監査障害を引き起こすことはありません。同様に、大域ゾーンが監査され、セキュリティー違反が検出された場合、大域ゾーンのセキュリティー違反が生成され、NGZ の違反は生成されません。

大域ゾーンと非大域ゾーンの監査の間でオーバーラップが生じるのは、大域ゾーンの BART レビューの時点のみです。NGZ のファイルシステムは大域ゾーンにマウントされ、Solaris Security Toolkit に含まれる BART マニフェストファイルによりレビューされる場合があります。大域ゾーンから NGZ ファイルシステムをレビューする場合、NGZ に関連するセキュリティー違反が大域ゾーンで報告される場合があります。このような状況を回避するには、大域ゾーン上でマウントされる NGZ ファイルシステムが BART マニフェストファイルから除外されるようにします。

ゾーンに対応する終了および監査スクリプト

操作権限が不十分であるためゾーンでは実行されないツールキットスクリプトに関しては、それらが環境変数 JASS_ZONE_NAME (JASS_ZONE_NAMEを参照) を使用する global ゾーン内にあるかどうかを確認します。その Solaris Security Toolkit スクリプトが global ゾーンでは実行されていない場合、スクリプトは logNotGlobalZone 関数を使用してその情報を記録し、終了します。

表 1-4 に、ゾーンに対応する終了および監査スクリプトを示します。


表 1-4 Solaris Security Toolkit 4.2 のゾーンに対応する終了および監査スクリプト

ベーススクリプト名

ゾーン対応の理由

ゾーンの動作

disable-power-mgmt

ゾーンでは電源機能は使用できません。

ログ記録

enable-bsm

ゾーンは BSM を使用できますが、BSM を有効にすることはできません。NGZ で BSM を使用する機能を有効にする前に、まず大域ゾーンで BSM を使用する機能を有効にする必要があります。

ログ記録

enable-ipfilter

ゾーンは IP フィルタを変更できません。

ログ記録

enable-priv-ngs-ports

ゾーンは NFS サーバーになることはできません。

ログ記録

enable-rfc1948

ゾーンは /dev/ip スタックに影響を与えることはできません。

ログ記録

enable-stack-protection

ゾーンはカーネルパラメタを変更できません。

ログ記録

install-nddconfig

ゾーンは /dev/ip スタックに影響を与えることはできません。

ログ記録

install-security-mode

ゾーンは EEPROM にアクセスすることはできません。

ログ記録


 

一部のゾーン対応スクリプトは、非大域ゾーンで使用する前にアクションが必要

enable-bsm.fin など、ゾーンに対応する一部の Solaris Security Toolkit スクリプトは、非大域ゾーン内でフルに使用する前に、大域ゾーン内でアクションが必要な場合があります。こうしたアクションを取ることなくこのようなスクリプトを実行すると、プロンプトが表示され、これらの機能をフルに使用するために必要なアクションを取るようにという指示が表示されます。言い換えると、一部のアクションではカーネルモジュールが動作する必要があります。このような場合、大域ゾーンからモジュールをロードする必要があります。そうすれば、非大域ゾーンでそれらのモジュールを使用できます。このような作業を行うまでは、アクションは実行されません。


ドライバに基づく rpcbind 無効化または有効化

Solaris 10 オペレーティングシステムには、Fault Manager Daemon (FMD)、ネットワーク情報サービス (NIS)、ネットワークファイルシステム (NFS) など rpcbind に依存するサービス、および共通デスクトップ環境 (CDE) や GNU Network Object Model Environment (GNOME) などのウィンドウマネージャがあります。Solaris Security Toolkit 4.2 ソフトウェアは、次のようにドライバに基づいて rpcbind を無効/有効にします。

システムの構成によっては、rpcbind を手動で起動するよう構成しなければならない場合があります。SMF の使用法の詳細については、Solaris 10 OS の管理マニュアルを参照してください。

Solaris 10 OS の rpcbind は TCP ラッパーを使用し、これら 2 つの使用は密接に関連しています。各ドライバが TCP ラッパーを自動構成する方法の詳細については、TCP ラッパーの使用法を参照してください。


procedure icon  rpcbind を有効にする

1. システムの強化を解除します。

2. pgrep コマンドを使用して rpcbind が実行中であることを確認します。


# pgrep rpcbind
process-id

 

子ゾーンのプロセスを受け取らないように、子ゾーンが付属する大域ゾーンがある Solaris 10 OS を実行しているシステムに対して、次の形式の pgrep コマンドを使用します。


# pgrep -z zone-name rpcbind
process-id

 

process-id を受け取れば、rpcbind が実行中であることがわかります。

3. secure.driverhardening.driver を、それぞれ new-secure.drivernew-hardening.driver にコピーして名前を変更します。

4. new-secure.driver を編集して、hardening.driver への参照を new-hardening.driver に置き換えます。

5. new-hardening.driver から disable-rpc.fin スクリプトをコメントアウトします。

6. new-secure.driver とともに Solaris Security Toolkit を実行することで、カスタマイズされたコピードライバを使用して、強化を再度実行します。

7. システムを再起動します。



caution icon

注意 - rpcbindサービスを有効にしたあと、追加のサービスが自動的に起動し、それに対応するポートが開く場合があります。Solaris Security Toolkit の監査は、これらの追加サービスを障害として警告します。




TCP ラッパーの使用法

Solaris 10 OS では、次の TCP ラッパー構成が次のドライバに使用されます。構成情報は、/etc/hosts.allow および /etc/hosts.deny ファイルにあります。



注 - これらの構成の引数では、大文字と小文字が区別されます。たとえば、コード例 1-2 では、LOCALALL はすべて大文字で入力する必要があり、localhost はすべて小文字で入力する必要があります。



TCP ラッパー構成 (secure.driver の場合)


コード例 1-2 Solaris 10 OS の secure.driver 用の TCP ラッパー構成

secure.driver: tcpwrappers enabled by default with the following:
        hosts.allow
               sshd:     LOCAL
               sendmail: localhost
        hosts.deny
                ALL:       ALL
                # rpcbind: ALL

 

TCP ラッパー構成
(server-secure.driver の場合)


コード例 1-3 Solaris 10 OS の server-secure.driver 用の TCP ラッパー構成

server-secure.driver: tcpwrappers enabled by default with the following:
        hosts.allow
                ALL: localhost
               sshd: ALL
        hosts.deny
                ALL: ALL

 

TCP ラッパー構成
(suncluster3x-secure.driver の場合)


コード例 1-4 Solaris 10 OS の suncluster3x- secure.driver 用の TCP ラッパー構成

suncluster3x-secure.driver: tcpwrappers enabled by default with the following:
        hosts.allow
                <need to allow other cluster members access>
                ALL: localhost
               sshd: ALL
        hosts.deny
                ALL: ALL
        NOTE: need to warn if not configured properly by adding         entries to hosts.allow

 

TCP ラッパー構成
(sunfire_15k_sc-secure.driver の場合)


コード例 1-5 TCP ラッパー構成 Solaris 10 OS の sunfire_15k_sc-secure.driver

sunfire_15k_sc-secure.driver: tcpwrappers enabled by default with the following:
        hosts.allow
                <need to allow other SC sshd access>
                sendmail: localhost
        hosts.deny
                ALL: ALL
        NOTE: need to warn if not configured properly by adding         entries to hosts.allow

 


環境変数の定義

ドライバ固有の環境変数が設定される順序に変更点があります。

Solaris Security Toolkit の旧バージョン

Solaris Security Toolkit の旧バージョンでは、環境変数が設定される順序は次のとおりです。

1. <driver-name>.driver

2. driver.init

a. user.init

b. finish.init

3. <driver-name>.driver (driver.init のあと)

4. フレームワーク変数 (ドライバファイル)

5. 終了スクリプトの変数の定義

Solaris Security Toolkit 4.2

Solaris Security Toolkit 4.2 ソフトウェアでは、環境変数が設定される順序は次のとおりです。

1. jass-execute コール

a. driver-init

b. user-init

c. finish.init

d. *secure*

i. driver.init

ii. user.init

iii. finish.init

iv. *config*

v. *hardening*

手順 d では、一部の変数は手順 i の前または手順 iii のあとで設定できます。



注 - Solaris Security Toolkit 4.2 でドライバ固有の変数が設定される順序が変更されたにも関わらず、user.init を使用して優先指定を行うことができる点は旧バージョンから変更されていません。




1 (表の脚注) Solaris 10 専用