322.5 OpenSSH
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)
ディスカッション
コメント一覧
まだ、コメントがありません