JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris 11.1 の管理: セキュリティーサービス     Oracle Solaris 11.1 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

パート I セキュリティーの概要

1.  セキュリティーサービス (概要)

パート II システム、ファイル、およびデバイスのセキュリティー

2.  マシンセキュリティーの管理 (概要)

3.  システムアクセスの制御 (タスク)

4.  ウイルススキャンサービス (タスク)

5.  デバイスアクセスの制御 (タスク)

6.  BART を使用したファイル整合性の検証 (タスク)

7.  ファイルアクセスの制御 (タスク)

パート III 役割、権利プロファイル、特権

8.  役割と特権の使用 (概要)

9.  役割に基づくアクセス制御の使用 (タスク)

10.  Oracle Solaris のセキュリティー属性 (参照)

パート IV 暗号化サービス

11.  暗号化フレームワーク (概要)

12.  暗号化フレームワーク (タスク)

13.  鍵管理フレームワーク

パート V 認証サービスと安全な通信

14.  プラグイン可能認証モジュールの使用

15.  Secure Shell の使用

Secure Shell (概要)

Secure Shell 認証

企業における Secure Shell

Secure Shell と OpenSSH プロジェクト

Secure Shell と FIPS-140

Secure Shell の構成 (タスク)

Secure Shell の構成 (タスクマップ)

ホストに基づく認証を Secure Shell に設定する方法

Secure Shell のポート転送を構成する方法

Secure Shell デフォルトのユーザーおよびホスト例外を作成する方法

sftp ファイルのための切り離されたディレクトリを作成する方法

Secure Shell の使用 (タスク)

Secure Shell の使用 (タスクマップ)

Secure Shell で使用する公開鍵と非公開鍵のペアを生成する方法

Secure Shell の公開鍵のパスフレーズを変更する方法

Secure Shell を使用してリモートホストにログインする方法

Secure Shell でのパスワードのプロンプトを減らす方法

Secure Shell を使用して ZFS をリモートで管理する方法

Secure Shell のポート転送を使用する方法

Secure Shell を使用してファイルをコピーする方法

ファイアウォール外部のホストへのデフォルトの Secure Shell 接続を設定する方法

16.  Secure Shell (参照)

17.  簡易認証セキュリティー層の使用

18.  ネットワークサービスの認証 (タスク)

パート VI Kerberos サービス

19.  Kerberos サービスについて

20.  Kerberos サービスの計画

21.  Kerberos サービスの構成 (タスク)

22.  Kerberos エラーメッセージとトラブルシューティング

23.  Kerberos 主体とポリシーの管理 (タスク)

24.  Kerberos アプリケーションの使用 (タスク)

25.  Kerberos サービス (参照)

パート VII Oracle Solaris での監査

26.  監査 (概要)

27.  監査の計画

28.  監査の管理 (タスク)

29.  監査 (参照)

用語集

索引

Secure Shell の使用 (タスク)

Secure Shell によって、ローカルシェルとリモートシェルの間の安全なアクセスが可能になります。詳細は、ssh_config(4) および ssh(1) のマニュアルページを参照してください。

Secure Shell の使用 (タスクマップ)

次のタスクマップでは、ユーザーが Secure Shell を使用する際の手順を示します。

タスク
説明
参照先
公開鍵と非公開鍵のペアを作成します。
公開鍵認証を必要とするサイトの Secure Shell にアクセスできるようにします。
パスフレーズを変更します。
非公開鍵を認証するフレーズを変更します。
Secure Shell を使用してログインします。
リモートログイン時に、暗号化された Secure Shell 通信を行うことができるようにします。
パスワードのプロンプトを表示せずに Secure Shell にログインします。
パスワードを Secure Shell に提供するエージェントを使用してログインできるようにします。
root として Secure Shell にログインします。
ZFS の send および receive コマンドのための root としてのログインを有効にします。
Secure Shell のポート転送を使用します。
TCP 経由の Secure Shell 接続で使用するローカルポートまたはリモートポートを指定します。
Secure Shell を使用してファイルをコピーします。
ホスト間で安全にファイルをコピーします。
ファイアウォールの内側のホストからファイアウォールの外側のホストに安全に接続します。
HTTP または SOCKS5 と互換性のある Secure Shell のコマンドを使用して、ファイアウォールで分断されているホスト間を接続します。

Secure Shell で使用する公開鍵と非公開鍵のペアを生成する方法

使用するサイトがホストに基づく認証またはユーザーの公開鍵認証を実装しているときは、ユーザーは公開鍵と非公開鍵のペアを生成する必要があります。追加のオプションについては、ssh-keygen(1) のマニュアルページを参照してください。

始める前に

ホストに基づく認証が構成されているかどうかをシステム管理者に確認します。

  1. 鍵の生成プログラムを起動します。
    myLocalHost% ssh-keygen -t rsa
    Generating public/private rsa key pair.
    …

    -t はアルゴリズムの種類で、rsadsarsa1 のいずれかです。

  2. 鍵が格納されるファイルのパスを指定します。

    デフォルトでは、RSA v2 の鍵を表すファイル名 id_rsa がカッコ内に表示されます。このファイルを選択するときは、Return キーを押します。代わりのファイル名を入力することもできます。

    Enter file in which to save the key (/home/jdoe/.ssh/id_rsa):<Press Return>

    文字列 .pub を非公開鍵のファイル名に追加すると、自動的に公開鍵のファイル名になります。

  3. 鍵に使用するパスフレーズを入力します。

    このパスフレーズは、非公開鍵を暗号化するときに使用されます。空文字列入力は極力避けてください。入力したパスフレーズは表示されません。

    Enter passphrase (empty for no passphrase): <Type passphrase>
  4. 確認のためにパスフレーズを再入力します。
    Enter same passphrase again: <Type passphrase>
    Your identification has been saved in /home/jdoe/.ssh/id_rsa.
    Your public key has been saved in /home/jdoe/.ssh/id_rsa.pub.
    The key fingerprint is:
    0e:fb:3d:57:71:73:bf:58:b8:eb:f3:a3:aa:df:e0:d1 jdoe@myLocalHost
  5. 結果を確認します。

    鍵ファイルへのパスが正しいことを確認します。

    % ls ~/.ssh
    id_rsa
    id_rsa.pub

    この時点で公開鍵と非公開鍵のペアが作成されました。

  6. 適切なオプションを選択します。
    • 管理者がホストに基づく認証を構成しているときは、ローカルホストの公開鍵をリモートホストにコピーする必要がある場合があります。

      リモートホストにログインできるようになっています。詳細については、「Secure Shell を使用してリモートホストにログインする方法」を参照してください。

      1. 次のコマンドを入力します (ただし、バックスラッシュなしで 1 行に入力)。
        % cat /etc/ssh/ssh_host_dsa_key.pub | ssh RemoteHost \
        'cat >> ~./ssh/known_hosts && echo "Host key copied"'
      2. プロンプトが表示されたら、ログインパスワードを入力します。
        Enter password: <Type password>
        Host key copied
        %
    • 使用するサイトで公開鍵によるユーザー認証が使用されているときは、リモートホストの authorized_keys ファイルに反映します。
      1. 公開鍵をリモートホストにコピーします。

        次のコマンドを入力します (ただし、バックスラッシュなしで 1 行に入力)。

        myLocalHost% cat $HOME/.ssh/id_rsa.pub | ssh myRemoteHost \
        'cat >> .ssh/authorized_keys && echo "Key copied"'
      2. プロンプトが表示されたら、ログインパスワードを入力します。

        ファイルがコピーされると「Key copied」というメッセージが表示されます。

        Enter password: Type login password
        Key copied
        myLocalHost%
  7. (省略可能) パスフレーズのプロンプトを減らします。

    手順については、「Secure Shell でのパスワードのプロンプトを減らす方法」を参照してください。詳細は、ssh-agent(1) および ssh-add(1) のマニュアルページを参照してください。

Secure Shell の公開鍵のパスフレーズを変更する方法

次の手順で非公開鍵が変更されることはありません。この手順は、非公開鍵 (パスフレーズ) の認証メカニズムを変更するものです。詳細は、ssh-keygen(1) のマニュアルページを参照してください。

Secure Shell を使用してリモートホストにログインする方法

  1. Secure Shell セッションを開始します。

    ssh コマンドを入力して、リモートホストとログインの名前を指定します。

    myLocalHost% ssh myRemoteHost -l username

    リモートホストの信頼性を尋ねるプロンプトが表示されます。

    The authenticity of host 'myRemoteHost' can't be established.
    RSA key fingerprint in md5 is: 04:9f:bd:fc:3d:3e:d2:e7:49:fd:6e:18:4f:9c:26
    Are you sure you want to continue connecting(yes/no)? 

    このプロンプトは、リモートホストに初めて接続する場合には正常なプロンプトです。

  2. プロンプトが表示されたら、リモートホスト鍵の信頼性を確認します。
    • リモートホストの信頼性を確認できない場合は、no と入力してシステム管理者に連絡します。
      Are you sure you want to continue connecting(yes/no)? no

      システム管理者は、大域の /etc/ssh/ssh_known_hosts ファイルを更新する責任があります。更新された ssh_known_hosts ファイルでは、このようなプロンプトは表示されません。

    • リモートホストの信頼性を確認したら、プロンプトに答えて次の手順に進みます。
      Are you sure you want to continue connecting(yes/no)? yes
  3. Secure Shell に対して自分を認証します。
    1. プロンプトが表示されたら、自分のパスフレーズを入力します。
      Enter passphrase for key '/home/jdoe/.ssh/id_rsa': <Type passphrase>
    2. プロンプトが表示されたら、アカウントのパスワードを入力します。
      jdoe@myRemoteHost's password: <Type password>
      Last login: Wed Sep  7 09:07:49 2011 from myLocalHost
      Oracle Corporation      SunOS 5.11       September 2011
      myRemoteHost%
  4. リモートホストでトランザクションを実行します。

    ユーザーが送信するコマンドはすべて暗号化されます。ユーザーが受信する応答はすべて暗号化されます。

  5. Secure Shell の接続を切断します。

    終了したら、exit を入力するか、通常の方法でシェルを終了します。

    myRemoteHost% exit
    myRemoteHost% logout
    Connection to myRemoteHost closed
    myLocalHost%

例 15-2 Secure Shell でのリモート GUI の表示

この例では、jdoe は両方のシステム上の初期ユーザーであるため、Software Installation 権利プロファイルが割り当てられています。jdoe は、リモートシステム上でパッケージマネージャー GUI を使用したいと考えています。X11Forwarding キーワードのデフォルト値は引き続き yes であり、xauth パッケージはリモートシステム上にインストールされています。

% ssh -l jdoe -X myRemoteHost
jdoe@myRemoteHost's password: <Type password>
Last login: Wed Sep  7 09:07:49 2011 from myLocalHost
Oracle Corporation      SunOS 5.11       September 2011
myRemoteHost% packagemanager &

Secure Shell でのパスワードのプロンプトを減らす方法

Secure Shell の使用に際してパスフレーズやパスワードを入力しない場合は、エージェントデーモンを使用できます。セッションを開始するときにデーモンを起動します。次に、エージェントデーモンを使用して非公開鍵を格納するために、ssh-add コマンドを使用します。ホストごとにアカウントが異なる場合は、セッションに必要な非公開鍵を追加します。

エージェントデーモンの起動は、次の手順で説明するように、必要に応じて手動で行うことができます。

  1. エージェントデーモンを起動します。
    myLocalHost% eval `ssh-agent`
    Agent pid 9892
  2. エージェントデーモンが起動していることを確認します。
    myLocalHost% pgrep ssh-agent
    9892
  3. 使用する非公開鍵をエージェントデーモンに追加します。

    ssh-add コマンドを入力します。

    myLocalHost% ssh-add
    Enter passphrase for /home/jdoe/.ssh/id_rsa: <Type passphrase>
    Identity added: /home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa)
    myLocalHost%
  4. Secure Shell セッションを開始します。
    myLocalHost% ssh myRemoteHost -l jdoe

    パスフレーズを要求するプロンプトは表示されません。

例 15-3 ssh-add オプションを使用する

この例では、jdoe が 2 つの鍵をエージェントデーモンに追加します。-l オプションは、デーモンに格納されているすべての鍵を一覧表示するために使用します。セッションの最後に、-D オプションを使用して、エージェントデーモンからすべての鍵を削除します。

myLocalHost% ssh-agent
myLocalHost% ssh-add
Enter passphrase for /home/jdoe/.ssh/id_rsa: <Type passphrase>
Identity added: /home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa)
myLocalHost% ssh-add /home/jdoe/.ssh/id_dsa
Enter passphrase for /home/jdoe/.ssh/id_dsa: <Type passphrase>
Identity added:
/home/jdoe/.ssh/id_dsa(/home/jdoe/.ssh/id_dsa)

myLocalHost% ssh-add -l
md5 1024 0e:fb:3d:53:71:77:bf:57:b8:eb:f7:a7:aa:df:e0:d1
/home/jdoe/.ssh/id_rsa(RSA)
md5 1024 c1:d3:21:5e:40:60:c5:73:d8:87:09:3a:fa:5f:32:53
/home/jdoe/.ssh/id_dsa(DSA)

User conducts Oracle Solaris Secure Shell transactions
myLocalHost% ssh-add -D
Identity removed:
/home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa.pub)
/home/jdoe/.ssh/id_dsa(DSA)

Secure Shell を使用して ZFS をリモートで管理する方法

デフォルトでは、root 役割は Secure Shell を使用してリモートログインできません。従来、root は、重要なタスク (ZFS プールデータのリモートシステム上のストレージへの送信など) に Secure Shell を使用してきました。この手順では、root 役割は、リモートの ZFS 管理者として行動できるユーザーを作成します。

始める前に

root 役割になる必要があります。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。

  1. 両方のシステム上にユーザーを作成します。

    たとえば、zfsroot ユーザーを作成し、パスワードを提供します。

    source # useradd -c "Remote ZFS Administrator" -u 1201 -d /home/zfsroot zfsroot
    source # passwd zfsroot
    Enter password:
    Retype password:
    #
    dest # useradd -c "Remote ZFS Administrator" -u 1201 -d /home/zfsroot zfsroot
    dest # passwd zfsroot
    ...

    zfsroot ユーザーは、両方のシステム上で同様に定義されている必要があります。

  2. Secure Shell 認証のためのユーザーの鍵のペアを作成します。

    この鍵のペアは、ソースシステム上で作成されます。次に、公開鍵が、宛先システム上の zfsroot ユーザーにコピーされます。

    1. 鍵のペアを生成し、それをファイル id_migrate 内に格納します。
      # ssh-keygen -t rsa -P "" -f ~/id_migrate
      Generating public/private rsa key pair.
      Your identification has been saved in /root/id_migrate.
      Your public key has been saved in /root/id_migrate.pub.
      The key fingerprint is:
      3c:7f:40:ef:ec:63:95:b9:23:a2:72:d5:ea:d1:61:f0 root@source
    2. 鍵のペアの公開の部分を宛先システムに送信します。
      # scp ~/id_migrate.pub zfsroot@dest:
      The authenticity of host 'dest (10.134.76.126)' can't be established.
      RSA key fingerprint is 44:37:ab:4e:b7:2f:2f:b8:5f:98:9d:e9:ed:6d:46:80.
      Are you sure you want to continue connecting (yes/no)? yes
      Warning: Permanently added 'dest,10.134.76.126' (RSA) to the list of known hosts.
      Password:
      id_migrate.pub 100% |*****************************| 399 00:00
  3. 両方のシステム上で、zfsroot に ZFS File Management 権利プロファイルを割り当てます。
    source # usermod -P +'ZFS File System Management' -S files zfsroot
    dest # usermod -P +'ZFS File System Management' -S files zfsroot
  4. この権利プロファイルが宛先システムに割り当てられていることを確認します。
    dest # profiles zfsroot
    zfsroot:
    ZFS File System Management
    Basic Solaris User
    All
  5. 宛先システム上で、鍵のペアの公開の部分を非公開の /home/zfsroot/.ssh ディレクトリに移動します。
    root@dest # su - zfsroot
    Oracle Corporation      SunOS 5.11      11.1    May 2012
    zfsroot@dest $ mkdir -m 700 .ssh
    zfsroot@dest $ cat id_migrate.pub >> .ssh/authorized_keys
  6. 構成が正しく機能することを確認します。
    root@source# ssh -l zfsroot -i ~/id_migrate dest \
    pfexec /usr/sbin/zfs snapshot zones@test
    root@source# ssh -l zfsroot -i ~/id_migrate dest \
    pfexec /usr/sbin/zfs destroy zones@test
  7. (省略可能) スナップショットを作成し、そのデータを複製できることを確認します。
    root@source# zfs snapshot -r rpool/zones@migrate-all
    root@source#  zfs send -rc rpool/zones@migrate-all | \
    ssh -l zfsroot -i ~/id_migrate dest pfexec /usr/sbin/zfs recv -F zones
  8. (省略可能) zfsroot アカウントを ZFS の管理に使用する機能を削除します。
    root@dest# usermod -P -'ZFS File System Management' zfsroot
    root@dest#  su - zfsroot
    zfsroot@dest#  cp .ssh/authorized_keys .ssh/authorized_keys.bak
    zfsroot@dest#  grep -v root@source .ssh/authorized_keys.bak> .ssh/authorized_keys

Secure Shell のポート転送を使用する方法

リモートホストに転送されるローカルポートを指定することができます。指定すると、ソケットはローカル側で、そのポートを待機します。このポートからリモートホストへの接続は、セキュアなチャネルを介して行われます。たとえば、ポート 143 を指定すれば、IMAP4 で電子メールをリモートで取得できます。また、リモート側のポートを指定することもできます。

始める前に

ポート転送を使用するために、管理者は、リモートの Secure Shell サーバーでのポート転送を有効にする必要があります。詳細については、「Secure Shell のポート転送を構成する方法」を参照してください。

例 15-4 ローカルポート転送を使用してメールを受信する

次の例は、ローカルポート転送を使用して、リモートサーバーからのメールを安全に受信する方法を示しています。

myLocalHost% ssh -L 9143:myRemoteHost:143 myRemoteHost 

このコマンドは、myLocalHost のポート9143 からポート 143 に接続を転送します。ポート 143 は、myRemoteHost の IMAP v2 のサーバーポートです。ユーザーがメールアプリケーションを起動するときは、localhost:9143 にあるように、ユーザーは IMAP サーバーのローカルポート番号を指定します。

localhostmyLocalHost と混同しないでください。myLocalHost は仮のホスト名です。localhost はローカルシステムを表すキーワードです。

例 15-5 リモートポート転送を使用してファイアウォールの外部と通信する

この例では、エンタープライズ環境のユーザーが、外部ネットワーク上のホストから企業のファイアウォール内部のホストに接続を転送する方法を示しています。

myLocalHost% ssh -R 9022:myLocalHost:22 myOutsideHost

このコマンドは、myOutsideHost 上のポート 9022 からローカルホスト上のポート 22 (sshd サーバー) に接続を転送します。

myOutsideHost% ssh -p 9022 localhost
myLocalHost%

Secure Shell を使用してファイルをコピーする方法

次の手順では、scp コマンドを使用して、暗号化されたファイルをホスト間でコピーする方法を示します。暗号化されたファイルは、ローカルホストとリモートホストとの間、または 2 つのリモートホスト間でコピーできます。scp コマンドは、認証を求めるプロンプトを表示します。詳細は、scp(1) のマニュアルページを参照してください。

セキュアなファイル転送プログラム sftp も使用できます。詳細は、sftp(1) のマニュアルページを参照してください。例については、例 15-6 を参照してください。


注 - 監査サービスでは、ft 監査クラスを通じて sftp トランザクションを監査できます。scp については、監査サービスで ssh セッションのアクセスおよび終了を監査できます。


  1. セキュアなコピープログラムを起動します。

    ソースファイル、リモートコピー先のユーザー名、およびコピー先ディレクトリを指定します。

    myLocalHost% scp myfile.1 jdoe@myRemoteHost:~
  2. プロンプトが表示されたら、パスフレーズを入力します。
    Enter passphrase for key '/home/jdoe/.ssh/id_rsa': <Type passphrase>
    myfile.1       25% |*******                      |    640 KB  0:20 ETA 
    myfile.1 

    パスフレーズを入力すると、進行状況インジケータが表示されます。上記の出力の 2 行目が進行状況インジケータです。進行状況インジケータには、次の項目が表示されます。

    • ファイル名

    • そのファイル全体に対する、転送が完了した量の割合 (%)

    • そのファイル全体に対する、転送が完了した量の割合を示すアスタリスク(*)

    • 転送が完了したデータの量

    • ファイル全体が転送されるまでの推定時間 (ETA)。推定残り時間

例 15-6 sftp コマンドを使用するときにポートを指定する

この例では、ユーザーは sftp コマンドで特定のポートを使用しようとしています。ユーザーは -o オプションを使用してポートを指定します。

% sftp -o port=2222 guest@RemoteFileServer

ファイアウォール外部のホストへのデフォルトの Secure Shell 接続を設定する方法

Secure Shell を使用して、ファイアウォール内部のホストからファイアウォール外部のホストに接続することができます。接続するには、構成ファイル内またはコマンド行オプションに ssh のプロキシコマンドを指定します。コマンド行オプションについては、例 15-7 を参照してください。

通常は、構成ファイルを使用して、ssh の対話操作をカスタマイズします。

ファイルは、2 種類のプロキシコマンドでカスタマイズできます。一方が HTTP 接続用、もう一方が SOCKS5 接続用です。詳細は、ssh_config(4) のマニュアルページを参照してください。

  1. 構成ファイルにプロキシコマンドとホストを指定します。

    次の構文を使用して、必要なプロキシコマンドとホストの数に応じて行を追加します。

    [Host outside-host]
    ProxyCommand proxy-command [-h proxy-server] \
    [-p proxy-port] outside-host|%h outside-port|%p
    Host outside-host

    コマンド行でリモートホスト名を指定した場合、プロキシコマンド指定をインスタンスに限定します。outside-host でワイルドカードを使用した場合、一連のホストに対してプロキシコマンド指定が適用されます。

    proxy-command

    プロキシコマンドを指定します。

    次のいずれかを指定できます。

    • HTTP 接続の場合は、/usr/lib/ssh/ssh-http-proxy-connect

    • SOCKS5 接続の場合は、/usr/lib/ssh/ssh-socks5-proxy-connect

    -h proxy-server-p proxy-port

    これらのオプションは、プロキシサーバーとプロキシポートをそれぞれ指定します。これらのオプションは、HTTPPROXYHTTPPROXYPORTSOCKS5_PORTSOCKS5_SERVERhttp_proxy などの、プロキシサーバーとプロキシポートを指定するどのような環境変数もオーバーライドします。http_proxy 変数は URL を指定します。これらのオプションを指定しない場合、適切な環境変数を設定する必要があります。詳細は、ssh-socks5-proxy-connect(1) および ssh-http-proxy-connect(1) のマニュアルページを参照してください。

    outside-host

    接続先のホストを指定します。%h 代入引数を使うとコマンド行からホストを指定できます。

    outside-port

    接続先のポートを指定します。%p 代入引数を使うとコマンド行からポートを指定できます。Host outside-host オプションを使わずに %h%p を指定した場合、ssh コマンドが呼び出されるたびに、引数に指定されたホストにプロキシコマンドが適用されます。

  2. 外部のホストを指定して、Secure Shell を実行します。

    たとえば、次のように入力します。

    myLocalHost% ssh myOutsideHost

    このコマンドは、個人用構成ファイル内で myOutsideHost のプロキシコマンド指定を検索します。指定が検出されない場合、このコマンドは、システム全体の構成ファイル /etc/ssh/ssh_config から検索します。プロキシコマンドが ssh コマンドに置き換わります。

例 15-7 Secure Shell コマンド行からのファイアウォール外部のホストへの接続

「ファイアウォール外部のホストへのデフォルトの Secure Shell 接続を設定する方法」では、構成ファイル内でプロキシコマンドを指定する方法について説明しています。この例では、プロキシコマンドを ssh コマンド行で指定します。

% ssh -o'Proxycommand=/usr/lib/ssh/ssh-http-proxy-connect \
-h myProxyServer -p 8080 myOutsideHost 22' myOutsideHost

ssh コマンドの -o オプションには、プロキシコマンドを指定するコマンド行を入力できます。この例のコマンドは次のことを行います。