SSHを使ってみよう!

前知識なり

公開鍵暗号

対になる2つの鍵を使ってデータの暗号化・復号化を行なう暗号方式。
非対称暗号とも呼ばれる。
代表的な秘密鍵暗号としては、アメリカ政府標準になっているDESや、FEAL、MISTY、IDEAなどがある。

共通鍵暗号

暗号化と復号化に同じ鍵を用いる暗号方式。
暗号文の送信者と受信者で同じ鍵を共有する必要があるため、「共有鍵暗号」「共通鍵暗号」とも呼ばれる。
秘密鍵暗号としては、アメリカ政府標準になっているDESや、FEAL、MISTY、IDEAなどがある。

RSA(Rivest Shamir Adleman)暗号

Ronald Rivest氏、Adi Shamir氏、Leonard Adleman氏の3人が
1978年に開発した公開鍵暗号方式の一つ。
開発者の名前をとって名付けられた。公開鍵暗号の標準として広く普及している。
RSA暗号を解読するには、巨大な整数を素因数分解する必要があり、効率の良い鍵の
発見方法はまだ見つかっていない。
RSA暗号に関する特許はRSA Data Security社が保有していたが、2000年9月に期限
切れを迎えた。
つまり今は使いたい放題ですな。

DES(Data Encryption Standard)暗号

 1960年代後半にIBM社によって開発された秘密鍵暗号化アルゴリズムで、
1977年にアメリカ政府標準技術局(NIST)によって連邦情報処理基準に採用された。
現在ではあまりにも暗号強度が低すぎるため、Triple DESなど、別の暗号方式が
使用されるようになっている。

Let's SSH!

Fedora Core 2』には、標準でSSHのフリー実装であるOpenSSHが収録されているので
これを利用します。

サーバ側ですること

OpenSSHは特に設定することなく、デフォルトの状態で利用可能ですが、
これではセキュリティ上あまりよろしくないので多少いじります。


まずは、SSHプロトコルバージョン2のみを使用するようにします。
どうもプロトコルバージョン1には、セキュリティ上の問題があるらしいです。(Insertion Attack)


/etc/ssh/sshd_configに以下の行を追加する

Protocol 2


あと、SSHではパスワードによる認証もサポートしているので、これを利用できないようにします。


/etc/ssh/sshd_configに以下の行を追加する

PasswordAuthentication no


したら、SSHのサービスを再起動します。

service sshd restart


うん、随分簡単です。

鍵ペアの作成

SSHは公開鍵方式による暗合化技術を利用し、ホスト認証とユーザ認証を行なうことが可能です。
これらの認証を行う為には、ホスト認証に使われる鍵のペアと、ユーザ認証に使われる鍵のペア
が必要となる。
このうち、ホスト認証に使われる鍵はOpenSSH(あるいはLinux)をインストールする際に自動的
に作成される。

ということなので、
ユーザ認証に使われる鍵を作成しましょう。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/griffin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/griffin/.ssh/id_rsa.
Your public key has been saved in /home/griffin/.ssh/id_rsa.pub.
The key fingerprint is:
f1:3f:03:84:97:9c:08:4e:3a:63:df:1f:67:c2:9a:bc griffin@fourth

ホームディレクトリの下の.sshというディレクトリにid_rsaとid_rsa.pubという
ファイルができました。
このid_rsa.pubが公開鍵となるので、ファイルの内容をauthorized_keysというファイルに追加します。
このように追加することで、複数の公開鍵の管理を行ないます。

cat id_rsa.pub >> authorized_keys2

※.SSH2を利用する場合は、「authorized_keys」ではなく、「authorized_keys2」としないといけないみたいです。
あと、「authorized_keys2」のファイルパーミッションは644とする。
しないと以下のようなエラーが出る。かなりはまった。。。
RSA authentication refused for xxxx: bad ownership or modes for '/home/xxxx/.ssh/authorized_keys2'.」



あとは、ログイン元となるPCへ秘密鍵をコピーします。
但し、秘密鍵が漏洩すると暗号の県老成が失われるので、秘密鍵のやりとりはFDにコピーするなど
特に気をつけて行なうとのこと!


以上でサーバー側ですることは終了です。
意外とこういう技術的な日記って疲れるなぁ(−−;
自分がヘタレなだけか・・・。。
あと、ちょっとがんばれ!俺!

クライアント側ですること

さっきサーバ側で平文によるパスワード認証を行なわないという設定をしたので、
公開鍵暗号化方式による認証を行ないます。
クライアントはWindowsなので、PuTTyというtelnet/SSHクライアントを使用してみます。
実は、『TeraTerm Pro Web 3.1.2』という奴がSSH2に対応しているとのことだったので
本当はそっちを使いたかったんだけど、どうも平文による認証しか選べないみたいで(バグ?)
残念ながらあきらめました。。

まずやることは、FDによりコピーした秘密鍵の変換です。
というのも、PuTTYではOpenSSHで作成した鍵は使用できないらしいのです。
なので、OpenSSHで作成した鍵をPuTTYの鍵形式に変換します。
これは、PuTTYgenというツールで簡単に行なえました。(ん?)
そして、変換した鍵を使ってPuTTYからサーバに接続したところ見事に接続できました!(んん?)
やったー!
ってかなり手を抜いてます(−−;
画面のハードコピーを貼り付ければ良いんだけど、日記はじめたばっかで良くわかんないしー。
時間も遅いし、もう疲れたしー。
と、思いっきりへたれたところで終了です。
TeraTermと遊びすぎたのが敗因か。。。