1 / 23

サルでもできる実用 SSH 入門

サルでもできる実用 SSH 入門. Echigo BSD Users Group 7 th meeting at Toyama prefectural civic center. 12 th , July, 2003 INOUE Mikio <mikio@ebug.jp>. おしながき. 扱う内容は、 FreeBSD 上で運用する OpenSSH で Protocol 2 の DSA 認証 今時の比較的一般的な設定 基本的な機能と仕組み 実際の設定 運用 その他の話題. ssh (Secure Shell) の機能. セッションの暗号化

aizza
Download Presentation

サルでもできる実用 SSH 入門

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. サルでもできる実用SSH入門 Echigo BSD Users Group 7th meeting at Toyama prefectural civic center. 12th, July, 2003 INOUE Mikio <mikio@ebug.jp>

  2. おしながき • 扱う内容は、FreeBSD 上で運用する OpenSSH で Protocol 2 の DSA 認証 • 今時の比較的一般的な設定 • 基本的な機能と仕組み • 実際の設定 • 運用 • その他の話題

  3. ssh (Secure Shell) の機能 • セッションの暗号化 • 通信の盗聴や改竄を予防 • 安全な認証方式 • ホストの認証と個人の認証 • IP アドレスや DNS の詐称 (なりすまし) を予防 • port forwarding • 各 TCP/IP アプリケーションへの応用

  4. 公開鍵暗号 • 組になったふたつの鍵 • 暗号化するための鍵 (公開鍵) • みんなに配っていい鍵。 • この鍵で暗号を作って送ってもらえる。 • 復号化するための鍵 (秘密鍵) • 絶対内緒の鍵。 • この鍵でのみ暗号を元に戻せる。 • 公開鍵から秘密鍵を作れない • あくまでも今の所。新しい解読技術で崩壊するかも。 • 秘密鍵からは公開鍵を生成できる。

  5. セッションの暗号化 1/2 • クライアントがサーバに接続を要求する。 • サーバはクライアントに、サーバ側の公開鍵*1を提示する。 • クライアントは、セッション鍵 (実際の通信に使用する暗号用の鍵) を生成し、サーバ側の公開鍵*1で暗号化し、 サーバに送る。 • サーバは送られたセッション鍵をサーバ側の秘密鍵*1で復号する。

  6. セッションの暗号化 2/2 5. ここから後のすべての通信は、このセッション鍵で暗号化される。サーバは、確認のメッセージ (暗号化されている) をクライアントに送る。 6. クライアントは、サーバからのメッセージが確認できると、次の認証の段階に 移る。鍵が正しく渡されていなければ、サーバからのメッセージが確認できない。 このときは、接続を中断する。 *1 ここでいう「サーバ側の公開鍵・秘密鍵」は、実際にはサーバが固有に持つ「ホスト鍵」とサーバのメモリ上だけにある 「サーバ鍵」から成ります。「サーバ鍵」は、一時間毎に作り変えられます。

  7. 認証手順の例 1/2 • サーバが内緒の言葉 (challenge) を作り、認証したいユーザの公開鍵で challenge を暗号化してクライアントに送る。 • クライアントは、送られてきた暗号を自身の秘密鍵で復号化する。復号した結果 (response) をサーバに送り返す。 • サーバは、送り返されてきた response が、暗号化前のものと一致するかどうかを調べる。

  8. 認証手順の例 2/2 4. 一致してれば認証成功。やったね! • 以上は、Protocol 1 の例で「内緒の言葉」は、乱数に基づくビット列 が用いられます。 • また、Protocol 2 では離散対数を元に計算した署名 が用いられ、署名の SHA (Secure Hash Algorithm) をとって双方で比較します。

  9. ホスト鍵を作ろう • FreeBSD の場合、ホストの鍵はインストール後の最初のブート時に /etc/rc.network (RELENG_4) とか /etc/rc.d/sshd (HEAD) とかが、勝手に作ってくれます。 たとえば# /usr/bin/ssh-keygen -t dsa -N "" -f /etc/ssh/ssh_host_dsa_key 確認 ruri@client% ls -l /etc/ssh/ssh_host* -rw------- 1 root wheel 668 Jun 12 2001 ssh_host_dsa_key -rw-r--r-- 1 root wheel 608 Jun 12 2001 ssh_host_dsa_key.pub -rw------- 1 root wheel 533 Jun 12 2001 ssh_host_key -rw-r--r-- 1 root wheel 337 Jun 12 2001 ssh_host_key.pub -rw------- 1 root wheel 883 Aug 3 2002 ssh_host_rsa_key -rw-r--r-- 1 root wheel 227 Aug 3 2002 ssh_host_rsa_key.pub

  10. 自分の鍵を作ろう 1/2 • コマンド一発で作れます。どうせ一回しか作りません。 ruri@client% ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/ruri/.ssh/id_dsa): Enter passphrase (empty for no passphrase): パスフレーズを入力する。 Enter same passphrase again: パスフレーズを入力する。 Your identification has been saved in /home/ruri/.ssh/id_dsa. Your public key has been saved in /home/ruri/.ssh/id_dsa.pub. The key fingerprint is: (折り返し) cf:48:71:f5:32:84:69:e9:2f:4f:b6:f7:4a:16:9e:e2 ruri@client.ebug.jp  できた!! デフォルトだと、~/.ssh が 755 になってるかも知れない。確認して 700 にしておきましょう。

  11. パスフレーズ • 暗号化された秘密鍵を読み出すための文字列。 • 4 字以上ということになってるけど、 20 字以上とか長い方が望ましい。 • 秘密鍵を使う都度入力する必要があるので、ssh-agent (後述) とか使うと便利。 • パスフレーズ無しの鍵もアリだけど、運用上要注意。 • もちろん後で変更できます。

  12. 自分の鍵を作ろう 2/2 ruri@client% ls –l ~/.ssh/ total 2 -rw------- 1 ruri ruri 736 Jul 11 00:43 id_dsa -rw-r--r-- 1 ruri ruri 608 Jul 11 00:43 id_dsa.pub • 秘密鍵が id_dsa • 暗号化されてます。 • 絶対に内緒なので、NFS とかでホームディレクトリを共有してると終了。 • 公開鍵が id_dsa.pub

  13. サーバ側の設定 • 自分の公開鍵をサーバに送る • メール、フロッピー、口頭、テレパシーなど方法は何でも構いません。でも、改竄の可能性を心配すれば、ネットワークを経由しない方が安全かも。 • 公開鍵を登録する • ~/.sshディレクトリがなければ作る。 ruri@server% mkdir ~/.ssh ruri@server% chmod 700 ~/.ssh • ~/.ssh/authorized_keysにクライアントで生成した公開鍵を追加する。 ruri@server% cat id_dsa.pub >> ~/.ssh/authorized_keys • おしまい。

  14. 接続してみる ruri@client% ssh server.ebug.jp The authenticity of host ‘server (192.168.0.1)’ can’t be established. RSA key fingerprint is cf:48:71:f5:32:84:69:e9:2f:4f:b6:f7:4a:16:9e:e2. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added ‘server (192.168.0.1)’ (RSA) to (折り返し) the list of known hosts. Enter passphrase for key ‘/home/ruri/.ssh/id_dsa’: パスフレーズを入力する。 Last login: Thu Jul 10 18:11:06 2003 from client.ebug.jp Welcome to FreeBSD 5.1-RELEASE (GENERIC) ruri@server% ってな感じでプロンプトがでる。つながった!! ・ パスフレーズを入力する前の 4 行は最初の接続の際だけ確認されます。相手のホストを知らないけど接続しても良い? という意味。フィンガープリントを確認して、接続先の正当性を確認する。接続すると自動的に ~/.ssh/known_hosts に登録される。

  15. プロトコルと認証の方式 • プロトコル • Protocol 1 - 実装上の互換性が高い • Protocol 2 - 厳重、多様 • 認証方式 (Protocol 2) • 公開鍵認証 (DSA 認証または RSA 認証) • パスワード認証 - 運用注意! • 対話的認証 (S/Key 認証または PAM 認証) • ホストベース認証 - 運用注意!

  16. ssh-agent で幸せの予感 • 頻繁に使うと毎回パスフレーズを入力するのがめんどいあなたに代わって、自分専用のエージェントが入力してくれる。 ruri@client% eval `ssh-agent`ちょっと変な起動の仕方 Agent pid 27900 ruri@client% ps axu | grep ssh-agent動いてるかの確認 ruri 27900 0.0 0.9 1956 1156 ?? Is 1:06AM 0:00.00 ssh-agent ruri@client% env | grep SSH環境変数の確認 SSH_AUTH_SOCK=/tmp/ssh-sCbpye5o/agent.27899 SSH_AGENT_PID=27900 ssh-agent は、起動時に環境変数 SHELL に従って、適切に環境変数を設定してくれます。

  17. ssh-add でちょっと幸せ • ssh-add を使ってパスフレーズを登録。 ruri@client% ssh-add Enter passphrase for /home/ruri/.ssh/id_dsa: パスフレーズを入力する。 Identity added: /home/ruri/.ssh/id_dsa (/home/ruri/.ssh/id_dsa) Identity added: /home/ruri/.ssh/identity (ruri@client.ebug.jp) ruri@client% ssh server.ebug.jp 接続してみる ← パスフレーズを訊かれない! Last login: Thu Jul 12 3:11:06 2003 from client.ebug.jp Welcome to FreeBSD 5.1-RELEASE (GENERIC) ruri@server% つながった!! しあわせ~。

  18. 運用上の注意 1/2 • 秘密鍵の管理 • 秘密鍵は他のホストと共有したりして、ネットワークに流さない。他のメディアに複製しない。 • パスワード認証 • 暗号化されてるとは言え、パスワードはネットーワークを流れる。 • ホストベース認証/パスフレーズ無し • 誰でもつなげちゃうので、難しいかも。

  19. 運用上の注意 2/2 • バージョンアップ • 一般的なセキュリティホールの他に、暗号そのものが破られる可能性がある。 • その他の設定 • SSH 使ってても TELNET とか FTP とか POP とかそんなのが全開になってるとダメダメ。 • TCP Wrapper とかルータとか防火壁とか駆使してがんばりましょう。

  20. OpenSSH と商用 SSH • 商用版はもちろん今も売ってます。 • 商用版は SSH1 と SSH2 が別になってます。 • Protocol 2 では、OpenSSH と商用版では、鍵のフォーマットが異なるので変換が必要。 • 商用版の鍵を OpenSSH 用に変換する。 ssh-keygen –i 商用版鍵ファイル > OpenSSH鍵ファイル • OpenSSH の鍵を商用版用に変換する。 ssh-keygen –e OpenSSH鍵ファイル> 商用版鍵ファイル パスフレーズが付いた商用版鍵は変換できまへん。事前に商用版の ssh-keygen でパスフレーズを無しにしておいてください。

  21. クライアントソフトウェア • Windows 用クライアント • PuTTY*1、Cygwin 版 OpenSSH • TTSSH、Telneat*1 (Protocol のみ) • Macintosh 用クライアント • MacSSH*1 • Nifty Telnet*1、Better Telnet (Protocol のみ) • Unix 用クライアント • OpenSSH、商用 SSH2 • 商用 SSH1 *1 標準の状態だと日本語が使えまへん。

  22. 参考 • Secure Shell (secsh) Working Group • http://www.ietf.org/html.charters/secsh-charter.html • OpenSSH • http://www.openssh.com/ • SSH Communications Security • http://www.ssh.com/ • Google • http://www.google.com/

  23. 雑談の種 • ssh には認証局 (Certifying Authority) がない。Kerberos を使う? • OTP (S/Key 認証) はおもしろそうだけど、誰か使ったことありますか? • 我が家の Apache はどうなるんだっ! • 眠いので寝てもいいですか? • くわしいことは倉品師匠に訊いてください。

More Related