322.5 OpenSSH

2017-03-06

322.5 OpenSSH

重要度 3
説明 OpenSSHサービスの使用方法と設定上のセキュリティ問題について経験と知識があること。
主要な知識範囲

  • OpenSSHの設定およびコマンドラインツール
  • OpenSSH用鍵の管理及びアクセス制御
  • SSHプロトコルv1とv2に存在するセキュリティ問題の認識

重要なファイル、用語、ユーティリティ

  • /etc/ssh/
  • ~/.ssh/
  • ssh-keygen
  • ssh-agent
  • ssh-vulnkey

ssh-vulnkey

OpenSSHの鍵が、セキュリティ上安全かチェックするコマンド
このコマンドを使用することで、ユーザーが格納している鍵がブラックリストに該当するような脆弱性がある鍵かチェックできます

ssh_config

sshdの設定ファイル

sshd_config 主なパラメータ

AllowGroups 指定したパターンマッチするグループだけログイン許可
AllowUsers 指定したパターンマッチするユーザーだけログイン許可
AuthorizedKeysFile 認証に使用される公開鍵のファイル
ChrootDirectory chroot jail環境のルートディレクトリ
DenyGroups 指定したパターンマッチするグループだけログイン拒否
DenyUsers 指定したパターンマッチするユーザーだけログイン拒否
HostbasedAuthentication 公開鍵ホスト認証成功時の、rhostsあるいは/etc/hosts.equiv認証設定
Hostkey SSHで使用されるサーバー秘密鍵が格納されているファイル
ListenAddres SSH接続が待ち受けるローカルアドレス
PasswordAuthentication パスワード認証許可設定
Port SSH接続が待ち受けるポート
Protocol サーバ側のサポートするSSHのバージョン
PubkeyAuthentication 公開鍵の認証許可設定
RSAAuthentication RSAの認証許可設定


パスワード認証方式を禁止して公開鍵認証方式を許可する設定
PasswordAuthentication no
PubkeyAuthentication yes

公開鍵の接続時の確認

SSHで接続先サーバーに接続する場合の基本動作は以下の通りです

  • すでに公開鍵を所有しているサーバに接続する場合は、接続確認を求められるこなく接続できる
  • 公開鍵を所有していないサーバ(初めて接続する場合)は、ユーザーに対して接続の確認が求められる
  • 初回接続時は接続を許可すると、その接続先サーバの公開鍵は ~/.ssh/known_hosts ファイルに格納され次回以降は接続確認は求められない

しかし、設定ファイル(ssh_config , ~/.ssh/config) で、StrictHostKeyChecking のパラメータを無効にすると、新しい接続でも接続確認は求められなくなります。
このパラメータではその名前の通りに「厳密に公開鍵のチェックする」かの設定をします

StrictHostKeyChecking パラメータ

yes ~/.ssh/known_hosts に公開鍵を自動的に追加しない。このファイルに鍵が格納された後に接続先サーバの鍵が更新されると、そのサーバへの接続は拒否される
ask ユーザーが確認した時だけ、新しい公開鍵が ~/.ssh/known_hosts に追加れます。デフォルトではこの設定です
no 新しい接続先に接続すると、~/.ssh/known_hosts に公開鍵が自動的に追加する

StrictHostKeyCheckingのパラメータが、「yes」,「ask」の場合、鍵が変更されても自動的に更新されないので、鍵の管理を怠ると「Host key verification failed.」などのエラーが表示されます

エラーの例

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX.
Please contact your system administrator.
Add correct host key in /Users/decobisu/.ssh/known_hosts to get rid of this message.
Offending key in /Users/decobisu/.ssh/known_hosts:1
RSA host key for decobisu.hogehoge.net has changed and you have requested strict checking.
Host key verification failed.

ssh_known_hosts

接続先サーバの公開鍵を格納し、SSH接続時にチェックするファイル
ファイルのパスは、/etc/ssh/ssh_known_hosts

ssh-keygen

ssh-keygenの基本的な機能は公開鍵と秘密鍵のペアを生成するコマンドです
たとえば公開鍵が無くなってしまった場合などには秘密鍵から公開鍵を生成することができます。
もちろん、公開鍵から秘密鍵を生成することはできませんので、秘密鍵を無くしてしまった場合には、ペアとなっている公開鍵をすべてサーバーなどから取り除き、新しい公開鍵と秘密鍵のペアを生成しなければなりません。

書式
ssh-keygen [オプション] [-f 鍵ファイル]
※[ ]は省略可能

主なオプション オプション

-1 鍵ファイルをSSH1からSSH2の形式に変換する
-C 鍵のコメントを新規作成する
-b 鍵の長さを指定する(最低値は768bit、初期値は2048bit)
-c 鍵のコメントを指定する
-f ファイルを指定する
-i 鍵ファイルの情報を表示する
-l 公開鍵の情報(種別、指紋、コメントなど)を確認する
-p 秘密鍵のパスフレーズを変更する
-t 鍵タイプを指定する(rsa/dsa)


・秘密鍵ファイル「id_rsa」と公開鍵ファイル「id_rsa.pub」が「~/.ssh」ディレクトリ以下に作成する

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/shinobu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

・鍵に保存された「パスフレーズ」を変更

$ ssh-keygen -p
Enter file in which the key is (/home/shinobu/.ssh/id_rsa):
Enter old passphrase:
Key has comment '/home/shinobu/.ssh/id_rsa'
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.

・fingerprintの確認例

$ ssh-keygen -l -f id_dsa.pub
1023 2e:49:a9:70:fb:14:b0:87:90:58:78:fb:57:4d:ad:0e id_dsa.pub (DSA)

$ ssh-keygen -l -f id_dsa
1023 2e:49:a9:70:fb:14:b0:87:90:58:78:fb:57:4d:ad:0e id_dsa.pub (DSA)

スポンサーリンク