サルでもできる実用
Download
1 / 23

????????? SSH ?? - PowerPoint PPT Presentation


  • 131 Views
  • Uploaded on

サルでもできる実用 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) の機能. セッションの暗号化

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '????????? SSH ??' - aizza


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Ssh

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

Echigo BSD Users Group 7th meeting

at Toyama prefectural civic center.

12th, July, 2003

INOUE Mikio <mikio@ebug.jp>


Ssh
おしながき

  • 扱う内容は、FreeBSD 上で運用する OpenSSH で Protocol 2 の DSA 認証

    • 今時の比較的一般的な設定

  • 基本的な機能と仕組み

  • 実際の設定

  • 運用

  • その他の話題


Ssh secure shell
ssh (Secure Shell) の機能

  • セッションの暗号化

    • 通信の盗聴や改竄を予防

  • 安全な認証方式

    • ホストの認証と個人の認証

    • IP アドレスや DNS の詐称 (なりすまし) を予防

  • port forwarding

    • 各 TCP/IP アプリケーションへの応用


Ssh
公開鍵暗号

  • 組になったふたつの鍵

  • 暗号化するための鍵 (公開鍵)

    • みんなに配っていい鍵。

    • この鍵で暗号を作って送ってもらえる。

  • 復号化するための鍵 (秘密鍵)

    • 絶対内緒の鍵。

    • この鍵でのみ暗号を元に戻せる。

  • 公開鍵から秘密鍵を作れない

    • あくまでも今の所。新しい解読技術で崩壊するかも。

    • 秘密鍵からは公開鍵を生成できる。


Ssh
セッションの暗号化 1/2

  • クライアントがサーバに接続を要求する。

  • サーバはクライアントに、サーバ側の公開鍵*1を提示する。

  • クライアントは、セッション鍵 (実際の通信に使用する暗号用の鍵) を生成し、サーバ側の公開鍵*1で暗号化し、 サーバに送る。

  • サーバは送られたセッション鍵をサーバ側の秘密鍵*1で復号する。


Ssh
セッションの暗号化 2/2

5. ここから後のすべての通信は、このセッション鍵で暗号化される。サーバは、確認のメッセージ (暗号化されている) をクライアントに送る。

6. クライアントは、サーバからのメッセージが確認できると、次の認証の段階に 移る。鍵が正しく渡されていなければ、サーバからのメッセージが確認できない。 このときは、接続を中断する。

*1 ここでいう「サーバ側の公開鍵・秘密鍵」は、実際にはサーバが固有に持つ「ホスト鍵」とサーバのメモリ上だけにある 「サーバ鍵」から成ります。「サーバ鍵」は、一時間毎に作り変えられます。


Ssh
認証手順の例 1/2

  • サーバが内緒の言葉 (challenge) を作り、認証したいユーザの公開鍵で challenge を暗号化してクライアントに送る。

  • クライアントは、送られてきた暗号を自身の秘密鍵で復号化する。復号した結果 (response) をサーバに送り返す。

  • サーバは、送り返されてきた response が、暗号化前のものと一致するかどうかを調べる。


Ssh
認証手順の例 2/2

4. 一致してれば認証成功。やったね!

  • 以上は、Protocol 1 の例で「内緒の言葉」は、乱数に基づくビット列 が用いられます。

  • また、Protocol 2 では離散対数を元に計算した署名 が用いられ、署名の SHA (Secure Hash Algorithm) をとって双方で比較します。


Ssh
ホスト鍵を作ろう

  • 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


Ssh
自分の鍵を作ろう 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 にしておきましょう。


Ssh
パスフレーズ

  • 暗号化された秘密鍵を読み出すための文字列。

    • 4 字以上ということになってるけど、 20 字以上とか長い方が望ましい。

  • 秘密鍵を使う都度入力する必要があるので、ssh-agent (後述) とか使うと便利。

  • パスフレーズ無しの鍵もアリだけど、運用上要注意。

  • もちろん後で変更できます。


Ssh
自分の鍵を作ろう 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


Ssh
サーバ側の設定

  • 自分の公開鍵をサーバに送る

    • メール、フロッピー、口頭、テレパシーなど方法は何でも構いません。でも、改竄の可能性を心配すれば、ネットワークを経由しない方が安全かも。

  • 公開鍵を登録する

    • ~/.sshディレクトリがなければ作る。

      ruri@server% mkdir ~/.ssh

      ruri@server% chmod 700 ~/.ssh

    • ~/.ssh/authorized_keysにクライアントで生成した公開鍵を追加する。

      ruri@server% cat id_dsa.pub >> ~/.ssh/authorized_keys

    • おしまい。


Ssh
接続してみる

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 に登録される。


Ssh
プロトコルと認証の方式

  • プロトコル

    • Protocol 1 - 実装上の互換性が高い

    • Protocol 2 - 厳重、多様

  • 認証方式 (Protocol 2)

    • 公開鍵認証 (DSA 認証または RSA 認証)

    • パスワード認証 - 運用注意!

    • 対話的認証 (S/Key 認証または PAM 認証)

    • ホストベース認証 - 運用注意!


Ssh agent
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 に従って、適切に環境変数を設定してくれます。


Ssh add
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% つながった!!

    しあわせ~。


Ssh
運用上の注意 1/2

  • 秘密鍵の管理

    • 秘密鍵は他のホストと共有したりして、ネットワークに流さない。他のメディアに複製しない。

  • パスワード認証

    • 暗号化されてるとは言え、パスワードはネットーワークを流れる。

  • ホストベース認証/パスフレーズ無し

    • 誰でもつなげちゃうので、難しいかも。


Ssh
運用上の注意 2/2

  • バージョンアップ

    • 一般的なセキュリティホールの他に、暗号そのものが破られる可能性がある。

  • その他の設定

    • SSH 使ってても TELNET とか FTP とか POP とかそんなのが全開になってるとダメダメ。

    • TCP Wrapper とかルータとか防火壁とか駆使してがんばりましょう。


Openssh ssh
OpenSSH と商用 SSH

  • 商用版はもちろん今も売ってます。

  • 商用版は SSH1 と SSH2 が別になってます。

  • Protocol 2 では、OpenSSH と商用版では、鍵のフォーマットが異なるので変換が必要。

    • 商用版の鍵を OpenSSH 用に変換する。

      ssh-keygen –i 商用版鍵ファイル > OpenSSH鍵ファイル

    • OpenSSH の鍵を商用版用に変換する。

      ssh-keygen –e OpenSSH鍵ファイル> 商用版鍵ファイル

      パスフレーズが付いた商用版鍵は変換できまへん。事前に商用版の ssh-keygen でパスフレーズを無しにしておいてください。


Ssh
クライアントソフトウェア

  • Windows 用クライアント

    • PuTTY*1、Cygwin 版 OpenSSH

    • TTSSH、Telneat*1 (Protocol のみ)

  • Macintosh 用クライアント

    • MacSSH*1

    • Nifty Telnet*1、Better Telnet (Protocol のみ)

  • Unix 用クライアント

    • OpenSSH、商用 SSH2

    • 商用 SSH1

      *1 標準の状態だと日本語が使えまへん。


Ssh
参考

  • 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/


Ssh
雑談の種

  • ssh には認証局 (Certifying Authority) がない。Kerberos を使う?

  • OTP (S/Key 認証) はおもしろそうだけど、誰か使ったことありますか?

  • 我が家の Apache はどうなるんだっ!

  • 眠いので寝てもいいですか?

    • くわしいことは倉品師匠に訊いてください。


ad