KEK internal 2000-01
Last update 2003/10/31



Back to index

7. SSH のインストールと設定

Windows用およびMacintosh用には SSHクライアントが, UNIX系用には SSHサーバおよびクライアントがある. ここでは Windows 系および UNIX系のインストールについて説明する. Macintosh用クライアントについては, Webページ[n2]を参照のこと.



7.1 Windows へのインストレーション

フリーのクライアントの場合には, TeraTerm(Pro)に SSH 用のモジュールTTSSHを付加して利用するのが一般的である. この方法を説明する.

SSHの認証に公開鍵暗号方式を利用する場合には, 更にコマンドラインツールをインストールする.

SSH2クライアントを入手してインストールする場合には, 添付のドキュメントを参照してインストールする. なお, SSH2クライアントの場合には SSH2サーバとしか通信できない.



7.1.1 Tera Term と SSH用 DLL のインストレーション

Tera Term Pro本体と, そのSSHモジュールの2つのソフトウエアを入手する.


  1. TeraTerm Pro ver. 2.3 for Windows 95/NT

  2. 入手先: http://hp.vector.co.jp/authors/VA002416/


  3. TTSSH: An SSH Extension to Teraterm

  4. 入手先: http://www.zip.com.au/~roca/download.html


Tera Term Proのアーカイブ(ttermp23.zip)を任意のフォルダに展開し, Setupを実行してTera Term Proのインストールを行なう.

次にTTSSHのアーカイブ(ttssh14.zip)を, Tera Termをインストールしたフォルダ(デフォルトのままであればc:\Program files\ttermpro)に展開する. それぞれのアーカイブはzip形式で圧縮してあるので, winzipやlhasa等を使用して展開する.


展開した後に, Tera Termの起動時にTTSSHの機能が有効になるように, TERATERM_EXTENSIONS変数を‘1’に設定する.


  1. Windows95/98の場合
  2. c:\autoexec.batに

    を追加する.この設定は, 再起動後から有効になる.

  3. WindowsNT4.0の場合
  4. 「コントロールパネル」→「システム」→ 「環境」 の 「ユーザのユーザ環境変数(U)」に

    を追加する. この設定は, “適用(A)” をクリックすると直ちに有効になる.


    図 19 WindowsNT4.0 での環境変数の設定例


7.1.2 公開鍵認証のためのツール

TTSSH で公開鍵認証を使用する場合には, コマンドラインモードのSSH クライアントの中にあるツールを使って鍵を作成する.


  1. ツールのインストール
  2. ftp://ftp.cs.hut.fi/pub/ssh/contrib/ (注 : この URL に接続不可, 2003/10/31) からssh-1.2.14-win32bin.zipを入手し, これを任意のフォルダに展開する. ssh-keygen.exeとgmp.dllが存在するのを確認する.

  3. 鍵の作成
  4. DOS コマンドプロンプトのウィンドウを開き, そこで作業する.


    環境変数の HOME を設定する. 設定した値の場所に鍵が作成される. 例えば \users\myhome とすると

    鍵を作成する. オプションにホスト名(luneとする)を指定する*27.

    Enter file in which to save the key ($HOME/.ssh/identity): と, 鍵を作成する場所を聞いてくるので, そのままで良いので Enter キーを押す.

    Enter passphrase: と入力を要求してくる. これは鍵に付けるパスワードである. スペース文字を使えるので, 自分で覚えやすく, 他人に推測されにくい文章となるような文字列を選んで入力する*28. 例えばthis is my passphrase とする.

    確認のためにもう1度, Enter the same passphrase again: と入力の要求があるので, 同じ文字列を入力する.

    最後に以下の表示で作成できたことが示される.


    作成された, 1組の鍵のうち公開鍵(identity.pub)をリモートホストに送り, エディタなどで $HOME/.ssh/authorized_keys に登録する *29 *30.

7.2 UNIX へのインストレーション

UNIX系マシンへのインストレーションでは, フリーの1.2.xxの系統のバージョンを入手してインストールする場合と, SSH2をインストールする場合の2つの選択がある.

フリーの最新バージョン 1.2.27, および商用版2.0.13で試した結果をのべる.


7.2.1 インストールの方針

インストールする場所, アクセス制限の方法, 有効にする認証方式や暗号化方式などが設定できる. 多くのオプションは標準値のままで良いが, 双方向クラスのホストにインストールする場合には, SSHを悪用されないように, アクセス制限を設定する必要がある.

SSH に関するアクセス制限には, SSHでのアクセスを許すホストの制限, X11 フォワーディングの可否, ポートフォワーディングの可否が設定できる. 制限する方法は, make 時に機能を無効にする方法, TCP wrappers [n3] のアクセス制限を利用する方法, SSH のコンフィギュレーションファイルに記述して行なう方法がある. 制限する方法とそれによる制限内容を 表 5 に示す. ポートフォワーディング機能を利用可能にするのであれば, ホスト単位に制限が行なえる TCP wrappers を利用する方法を選択して, 自ホスト内でのポートフォワーディングを許すよう設定にする.


表 5 アクセス制限方法と可能な制限

TCP wrappers コンフィギュレーションファイル make 時
SSHアクセスの制限 ホスト単位 ホスト単位 (なし)
X11 フォワーディングの可否 ホスト単位 可否のみ 可否のみ
ポートフォワーディング可否 ホスト単位 (なし) 可否のみ



7.2.2 ssh-1.2.27

ソースを入手して, “tar.gz” を展開する. ファイル INSTALLにインストールの方法が記述してあるので, その記述にしたがって操作する. サーバおよびクライアントがインストールできる.

TCP wrappers の library がインストールされている場合には, サーバにおいて TCP wrappers のアクセス制限が利用できる. 利用する場合には,以下のファイルを作成してあることを確認する. 未作成の場合には複写する*31.


configure を以下のように指定する.


続いて “make”, “make install” を行なう.


最後に, TCP wrappers の hosts.allow に SSH の記述を追加する.



7.2.3 商用版 ssh-2.x

商品に添付されているREADMEなどの文書を参照してインストールする. サーバおよびクライアントがインストールできる.

TCP wrappers の library がインストールされている場合には, サーバにおいて TCP wrappers のアクセスコントロールが利用できる. 利用する場合には, 以下のファイルのあることを確認する. 未作成の場合には複写する.


configure を以下のように指定する. ここではデバッグのためのオプションも合わせて指定しておくことにする.


続いて “make”, “make install” を行なう.


SSH2 では SSH1 との互換モードが設定できる. まず, SSH1 をインストールしてから, SSH2 をインストールする.


インストール後に, 以下の設定を行なう.

最後に, TCP wrappers の hosts.allow に SSH の記述を追加する.



7.2.4 インストール後の各種設定

7.2.4.1 環境設定

SSHの環境は, 設定ファイル /etc/ssh*_config (SSH1) あるいは /etc/ssh2/ssh*2_config (SSH2) に設定する. 認証方式, 暗号方式などを設定できる. 通常は初期値で問題ないが, 一応確認すること.

なお, バージョンアップ時には, 古い環境設定ファイルがそのままになっている. 新しい環境設定ファイル*32を確認して, 必要なら入れ替える.


7.2.4.2 アクセス制限

セキュリティを向上させるためには, サーバに対するアクセス制御を行なった方が良い. TCP wrappers library をリンクした場合には, TCP wrappers の設定ファイルにアクセス制御を記述する.

以下に設定例を示す. 3行目がsshdについてのアクセス制限で, 4行目がX11のフォワーディングを行なうための記述である*33. 5行目が自ホストでフォワーディングを許すポートの番号である. Hostnameは自ホスト名である. この例では12345番ポートの使用だけを許している. 詳細は ”man sshd” を参照のこと.

SSH1 では, /etc/sshd_config の中に AllowHosts および DenyHosts を記述することもできる. 書き方は ”man sshd” を参照のこと.


7.2.4.3 ログの出力先

SSH のログには, 接続を要求したクライアントの IP アドレス, 日時, ユーザ認証の方法が記録される. ポートフォワーディングのホスト名と日時も記録される.

SSHによるアクセスの監視を容易にするためには, ログの出力先を固有のファイルにすると良い. この方法を説明する.

  1. SSHの設定ファイルの中に SyslogFacility という, ログの発信元を指定するパラメータがある*34. これを, 例えば local2 に変更する.
  2. Syslog の設定ファイル /etc/syslog.conf を編集して, 前記 local2 の出力先のファイル名を記述する. 例えば /var/log/ssh.log とすると, 以下のようになる.
  3. 以上の準備の終了後, sshd と syslogd のプロセスを再起動させると, 新しいファイルにログが出力されるようになる.



8.まとめ

SSHはインストレーションが簡単であり, 使い方も簡単である. telnet, rlogin, rsh, rcpを利用しているユーザが容易に移行でき, セキュリティを格段に高めることができる. SSHを利用するためには, クライアントとサーバの双方に SSH が導入されている必要があるので, 広く普及することが今後の課題である. セキュリティ対策の重要性がますます認識されている中で今後の普及が期待できる.

一方でSSHを利用しながら, 従来の telnet, ftp, xdm などをそのまま使い続けていたのでは, 依然としてパスワードがネットワークに流れることになる. ユーザとしては, 従来の telnetなどを使用しないようにすること, ホストの管理者としては従来の機能の運用を停止あるいは最小に限定することが必要である.




図 20 SSHと telnet を混在させた利用


何段にもリモートログインを重ねる場合には, SSH を使えるログインと, 使えないために telnet を使わざるをえない部分ができることもある. SSH とtelnet を組み合わせて使用する場合 (図 20) には, telnet の部分では通信が暗号化されないので, SSHの通信部分で暗号化されるデータがtelnet の通信部分で非暗号化データとして通信される.

やむを得ずに組み合わせて使う場合には, 通信経路とその安全度を評価した上で使わないと, SSH を使用する努力が無意味なものとなる. 例えば大学から KEK へのログインを telnet で行ない, KEK内ではSSHでログインするのは, より信頼性の低いネットワークの部分で telnet を使うことになり, その結果 SSH で使うパスワードが盗聴されることにもなりかねないので, 行なうべきでない. このような場合には, 自分の端末 (PCなど) に SSH を入れる努力をすべきである.

KEK内で自分の端末から他のホストに telnet でログインして, そのホストから SSH で他大学や外国にログインするような例は, telnet で通信を行なう部分のネットワークが信頼できるものであれば, 好ましいことではないが, 許容範囲である. X 端末を使っている場合には, この方法をとることになる.

UNIXでは, 通常は Xウインドウシステムを使って作業をするが, Xサーバにリモートホストのクライアントを表示するために xhost でアクセスの許可を行なうことが多い. このホストの全ユーザにXサーバへのアクセスを許す設定を, より安全にするためにxauth を使うように各ユーザがXの設定を変更することが望ましい. 更に, すべてのリモートアクセスにSSHを使うようにすれば, 5.1.2節で説明したように認証のためのデータを暗号化して送るので非常に安全になる.


謝辞

SSH の検討に関して本機構のセキュリティワーキンググループの方々に感謝致します. 特に原稿をチェックして貴重なコメントをくださった馬渡博司助教授, 柴田章博助手, 湯浅富久子助手に感謝致します. SSH の導入に協力をしてくださった中村貞次技官に感謝致します.



脚注

*27
-C オプションをつけないと “gethostname; No error” となってエラーで終了する.

*28
Enter キーだけをおすとパスワードなしになり危険なので, 必ず文字列を入れること.

*29
作成されていない場合には, そのまま複写する. 既にある場合には内容そのままを追加する.

*30
ssh1 コマンドをデバッグモード(-v)で動かして, 公開鍵認証の設定が有効であることを確認しておくとよい. リモートホストを soleil とすると

*31
RedHat 系のLinux には, /usr/lib/libwrap.a および /usr/include/tcpd.h が入っているので, これらを利用する.

*32
Make したディレクトリの apps/ssh/sshd2_config.

*33
“sshdfwd-X11” の記述がないと, X クライアントを起動したときに以下のエラーメッセージが表示される.

*34
SSH2 では, バージョン 2.0.12 からサポートされた.


Back to index