勉強会メモ:TelnetとSSH

何か間違ってたらコメントください.メモですが,一応調べて確認はしていますが・・・

以下,勉強会用メモ

追記
  • 2009/06/22 15:58:08:内容をアップデート

TelnetSSHも一応プロトコル(操るのはクライアントシェルというっけ?)

Telnet

昔使ってた,ターミナルでの遠隔ログインコマンド
ログインしたいホストに向かって!!! と(何
雰囲気からすると,対象ホストに対して対話的に操作するという雰囲気
標準ポート(ホストの操作に対して)は23らしい.しらんかったけど.
でも,Telnetクライアントはテキストベースのプロトコルでも会話出来るので,80とかをこうやってやると面白い

telnet google.co.jp 80
GET /HTTP / 1.1

#リターンは二回

#するとホスト先のコマンド(GETの辺り)にしたがって,サイトの情報がテキストで飛んでくる

こういうのを見ると,本当に対話型なんだなあと思うのです.

SSH

Telnetだと,セキュリティ的な保護はやってないのよ.暗号化されたホスト操作はSSHがお手の物
SSHとは,Secure Shellの略です.UbuntuにはOpenBSDの成果物が入ってたと思った.
SSHは,暗号キー(RSAとか)を利用したハイブリッド暗号方式(公開鍵暗号のキーを共通鍵暗号で送って相手に渡して以下略)
まぁ暗号化については,各自調べるとして

つまり、共通鍵暗号には、鍵の配送に問題があった。

1. 受信者は、あらかじめ送信者に対して密かに共通鍵 C を渡しておく。
2. 送信者は C を使ってメッセージを暗号化してから受信者に向かって送信する。
3. 受信者は、C を使って暗号文を復号し、メッセージを読む
4. 傍受者が、暗号文を傍受したとする。もし、受信者が送信者に C を手渡すときの通信をも傍受していれば、傍受者は C を使って暗号文を復号し、メッセージを盗み見ることができる。

これに対して公開鍵暗号は、鍵の配送(暗号化鍵をどのようにして送信者に手渡すか)が容易になる。つまり :

1. 通信を受ける者(受信者)は自分の公開鍵(暗号化鍵)P を全世界に公開する。
2. 受信者に対して暗号通信をしたい者(送信者)は、公開鍵 P を使ってメッセージを暗号化してから送信する。
3. 受信者は、公開鍵 P と対になる秘密鍵(復号のための鍵)S を密かに持っている。この S を使って受信内容を復号し、送信者からのメッセージを読む。
4. 暗号通信を不正に傍受しようとする者(傍受者)が、送信者が送信した暗号化された文を傍受したとする。傍受者は、公開鍵 P は知っているが、秘密鍵 S は受信者だけが知っている情報であるので分からない。P から S を割り出すことは(計算時間的に)極めて難しい。そのため、暗号文を復号することはおよそできない。

暗号化は,あくまで「データの送信中の傍受を防ぐ」ためのもので,相手側のコネクション時のセキュリティは考えてません.
だから,コネクション時の成りすましで,パスワード認証や鍵だけでの認証(一度認証したら,その後はパスワードとか求めずに,鍵だけでやり取りする,合鍵渡してあとはそれで入ってねと同じ)

専用ポートは22であり,自由に変えれますので,変えたほうがセキュリティ的に好ましい.
あと他にもハックされないためにも,

  • 連続で接続されたり
  • パスワードをたくさん入れられたりする

などの,怪しい行動をする人の行為(ブルートフォースアタックでの総当たり攻撃)から守る機能はありますが,詳しくはWikipediaなので気になったら見てください.
UbuntuでOpenSSHを立てると,デフォルトでこの手は拒否してた記憶があるので,自分はやったことない(これが一番危ないことを覚えておくこと!)
Secure Shell - Wikipedia


SSHサーバーが起動していると,それ経由で起動しているホストを操れます.てかTelnetとは同じ.80とかやったらどうなるかは皆さんにお任せして(てかSSHサーバーがないと出来ないか)