OpenSSHの認証に証明書を使う

2,409 views

Published on

2014年10月27日の「#ssmjp 2014/10」でLTした資料です。詳細はConoHaの技術ブログもご覧ください https://www.conoha.jp/blog/tech/3659.html

Published in: Internet
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,409
On SlideShare
0
From Embeds
0
Number of Embeds
258
Actions
Shares
0
Downloads
23
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

OpenSSHの認証に証明書を使う

  1. 1. OpenSSHの認証に 証明書を使う #ssmjp@conoha - GMO Yours Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 2014年10月27日
  2. 2. 自己紹介 • ひろのぶ(@hironobu_s) • Web系開発&インフラ屋 • 所属:GMOインターネット • 最近ConoHaの中の人になりました • 緑陣営Lv7 Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  3. 3. conoha.jpのブログ書いてます Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  4. 4. 1分ではじめる、クラウドのようなVPS ConoHa VPS • VPSホスティングサービス • 古い言い方だとレンタルサーバ • 仮想サーバを930円から • さまざまなOSに対応 https://www.conoha.jp/unity1025
  5. 5. 1分ではじめる、クラウドのようなVPS ConoHaクーポン • ConoHaのサービスを3,000円分使えま す • VPSでもオブジェクトストレージでも • 新規アカウント登録すると、 さらに1,500円分追加されます • あわせて4,500円 • 一番安いプランで4ヶ月分 https://www.conoha.jp/unity1025
  6. 6. 宣伝乙w Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  7. 7. SSHの認証方式 Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  8. 8. SSHの認証方式 Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. • パスワード認証 • Obsolete • 公開鍵認証 • 最もポピュラー? • LDAP認証 • 一元管理できるが、構築すると大がかり • 弊社内はこれ。
  9. 9. 証明書認証 • バージョン5.4からサポート • CentOSなどの5.3系でも使えます • 独自CA(認証局)を作り、ユーザやホストの公開鍵に 署名して証明書とする • CAの鍵を信用し、CAによって署名された証明書を 持つユーザ/ホストを認証する方式 Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  10. 10. 公開鍵認証との違い 公開鍵認証証明書による認証 Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. ユーザ認証 ユーザの公開鍵をサーバ上の authorized_keysファイルに追加する。 サーバは乱数を生成し、ユーザの公開 鍵で暗号化し送信。ユーザは暗号鍵で 復号し乱数のハッシュ値を計算、それ をサーバに送信。サーバはハッシュ値 を照合する。 あらかじめユーザの公開鍵にCAが署名を する。またサーバはCAの公開鍵を保持す る。ユーザは接続時に署名済みの公開鍵( 証明書)を送信し、サーバはそれを検証す る ホスト認証 ユーザの接続時に、サーバは自身の公 開鍵とフィンガープリントを送信する 。ユーザはそれを確認し、公開鍵を受 け入れるかを決める あらかじめサーバの公開鍵にCAが署名を する。ユーザはCAの公開鍵を保持してお り、接続時にサーバから送信された署名済 みの公開鍵(証明書)を検証する。
  11. 11. Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. つまり おおざっぱに言うとSSL/TLSと同じです。
  12. 12. 何が便利なのか • ホストにはCAの公開鍵を設定しておけば良い • ユーザの追加削除のたびに公開鍵の登録/削除 が不要 • LDAPを構築するより運用もお手軽? (規模による) Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  13. 13. こんなこともできる • ユーザをログイン禁止にしたい(証明書の失効) • 有効期限を設定したい(証明書に有効期限を設定する) • 実際のユーザと、ログイン可能なシステムユーザを 分けて管理したい(Principalsの設定) • ユーザ毎にポートフォワード(port-forwarding)やエー ジェント転送(agent-forwarding)の許可をしたい Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  14. 14. CA(認証局)って何? Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  15. 15. Certificate Authority 電子的な身分証明書を発行し、管理する機関。認証局 、CA局またはCAセンターと呼ぶ場合もある。CAには、“ パブリックCA”と“プライベートCA”があり、前者は本人性 を第三者が発行する証明書により証明するもので、電子 商取引など不特定多数の広い範囲で運用される。 出典: http://www.atmarkit.co.jp/aig/02security/ca.html Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  16. 16. 難しそうに見えますが • 要は鍵のペアです。 • 普通にssh-keygenで作った鍵ペアが、そのまま CAの鍵として使えます。 • コマンドを見てもらった方がわかりやすいです Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  17. 17. やってみよう Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  18. 18. CA(認証局)の鍵ペアを作る Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 手順(1) [hiro@MBP]# ssh-keygen -f ca.key Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in ca.key. Your public key has been saved in ca.key.pub. The key fingerprint is: d8:c3:3e:0b:0e:e3:1d:de:f5:76:18:6a:76:2e:7d:80 hiro@ The key's randomart image is: (中略) [hiro@MBP]# ls -l total 16 -rw------- 1 hiro staff 1675 10 22 11:26 ca.key -rw-r--r-- 1 hiro staff 416 10 22 11:26 ca.key.pub
  19. 19. 手順(2) ユーザの鍵ペアを作る [hiro@MBP]# ssh-keygen -f user.key Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in user.key. Your public key has been saved in user.key.pub. The key fingerprint is: f6:fa:6d:a7:3c:10:f7:56:05:4d:d6:f8:d0:b8:19:e9 hiro@ The key's randomart image is: (中略) [hiro@MBP]# ls -l total 32 -rw------- 1 hiro staff 1675 10 22 11:26 ca.key -rw-r--r-- 1 hiro staff 416 10 22 11:26 ca.key.pub -rw------- 1 hiro staff 1675 10 22 11:35 user.key -rw-r--r-- 1 hiro staff 416 10 22 11:35 user.key.pub Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  20. 20. 手順(3) ユーザの公開鍵にCA鍵で署名 [hiro@MBP]# ssh-keygen -s ca.key -I user_root -n root user.key.pub Signed user key user.key-cert.pub: id "user_root" serial 0 for root valid from 2014-10- 22T11:58:00 to 2014-10-23T11:59:53 [hiro@MBP]# ls -l total 40 -rw------- 1 hiro staff 1675 10 22 11:26 ca.key -rw-r--r-- 1 hiro staff 416 10 22 11:26 ca.key.pub -rw------- 1 hiro staff 1675 10 22 11:35 user.key -rw-r--r-- 1 hiro staff 1518 10 22 12:01 user.key-cert.pub -rw-r--r-- 1 hiro staff 416 10 22 11:35 user.key.pub • -s: 署名に使用する秘密鍵を指定。 • -I: 公開鍵に署名する際のSpecifyを指定。ログの記録名。 • -n: Principalの指定。ログイン可能なUNIXユーザ名を列挙。 Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. ←NEW!
  21. 21. 手順(4) ログインしてみよう [hiro@MBP]# ssh -v -i ~/.ssh/user.key root@example.com ↓こんな表示が出るはず debug1: Offering RSA-CERT public key: user.key debug1: Server accepts key: pkalg ssh-rsa-cert-v01@openssh.com blen 1094 debug1: ssh_rsa_verify: signature correct Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  22. 22. ハマったこと Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  23. 23. CentOS6はオプションが違う • CentOS6.5に含まれるOpenSSH-5.3p1の ssh-keygenコマンド • Principalを設定する重要な-nオプションが、別 のオプションに割り当てられている。 (Extract public key from smartcard) Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  24. 24. CentOS6のssh-keygenのmanページ
  25. 25. _人人人人人人_ > 2つある<  ̄Y^Y^Y^Y^Y ̄ Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  26. 26. つまり・・・ • manも間違ってる • CentOS6の場合-nオプションはPrincipalの設定 として機能しない • 署名ができない(署名にPrincipalの設定は必須) Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. • 詰む
  27. 27. • 一応、バグ報告は上がっていた • https://bugs.centos.org/view.php?id=6904 • -nじゃなくて-Zに割り当てられていた • manには書かれていない • 知らんがな・・・ (CentOS7では修正されてました) Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
  28. 28. Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. まとめ • ユーザやサーバがそれなりに多い • けどLDAPを作るのは面倒だ • と言う場合にいいかも • 続きはWebで https://www.conoha.jp/blog/tech/3659.html
  29. 29. ご清聴ありがとうございました Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.

×