SSH(Secure SHell)とは

SSH(Secure SHell)とは、安全ではないネットワーク上のリモートサーバに対するログインやコマンド実行、ファイル転送などの通信を安全に行うためのプロトコルである。

» 2018年12月25日 05時00分 公開

 SSH(Secure SHell)とは、安全ではないネットワーク上のリモートサーバに対するログインやコマンド実行、ファイル転送などの通信を安全に行うためのプロトコルである。Tatu Ylonen氏によって開発された。

 Telnetやrsh(remote shell)、rloginといったプロトコルでもリモートサーバに対するログインやコマンド実行、ファイル転送などは可能だが、これらのプロトコルでは暗号化やサーバの認証が行われないため、盗聴や中間者攻撃を受ける可能性がある。一方でSSHは、公開鍵暗号方式を用いて暗号化を行う。このため、SSHを利用する方がセキュリティ面において安全である。また、SSHではオプションに応じて圧縮を掛けることも可能だ。

 SSHプロトコルを用いるCUIのコマンドには、sshやscp(secure copy)などがある。前者はログインおよびコマンド実行、後者はファイル転送のコマンドだ。

 クラウド環境のサーバを運用している場合も、管理するためにはそのサーバへアクセスすることが必要になる。安全ではないインターネットを経由して平文の通信を流すことは好ましくないため、SSHを用いることが多い。

 SSHには設定ファイルがある。一般的に、以下のように設定することが好ましいとされている。

  • 公開鍵暗号方式によるログインのみ許可(パスワードログインは禁止)
  • 管理者としてログインできない
  • 22番ポートではない他のポートを用いる
  • SSH1ではなく、SSH2プロトコルを使用(現状、開発の本流がSSH2であるため、こちらを用いるのがよいとされている)

 また、SSHにはポートフォワーディング機能がある。

 この機能を用いることで、外部からアクセス可能なSSHサーバを利用し、外部に対して非公開であるサーバと通信を行える。外部にあるSSHサーバからイントラネット環境にアクセス可能であることが前提条件となるが、リモートのイントラネットなど外部に対して非公開な環境に接続したい状況において有用である。

 ここまで見てきた通り、SSHには通信を安全に行うための仕組みが多く備わっているが、中間者攻撃を受ける可能性もある。2006年に策定されたRFC 4251では以下の3つの中間者攻撃が考えられると記述されている。

  1. sshによる通信前に攻撃者が中間サーバを立て、利用者が通信を開始しようとするとすかさず自らの公開鍵を利用者に送りつけ、利用者に通信先の正当なリモートサーバだと勘違いさせる。その後、攻撃者の中間サーバはリモートサーバに対して通信元の正当な利用者だと勘違いさせるため、リモートサーバと通信を開始する
  2. ソーシャルエンジニアリングなどの技術を用いて、利用者に偽の鍵を利用させることで利用者とのコネクションを張り、後は1.と同様にリモートサーバともコネクションを張る
  3. 利用者とリモートサーバとの通信内容をキャプチャーし、脆弱(ぜいじゃく)なMAC(Message Authenticate Codeの略。メッセージが正しいことを証明するための短い情報)の値を生成するための入力を見つけ出し、通信内容の改ざんが可能となる(この手法はMACが安全であれば、まず成立しない)

 この他にも、SSH1での攻撃手法やSSH2からSSH1にダウングレードさせる攻撃手法などがある。

■更新履歴

【2004/1/1】初版公開。

【2018/12/25】最新情報に合わせて内容を書き直しました(セキュリティ・キャンプ実施協議会 著)。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。