サルでもできる実用SSH入門 Echigo BSD Users Group 7th meeting

Slides:



Advertisements
Similar presentations
PC クラスター構築 -OpenMPI のインストール 年 1 月 22 日(土) 発表: dannna.
Advertisements

IPad で SSH Echigo BSD Users Group meeting at Machinaka Campus of Nagaoka city. 18 th, May, 2013 INOUE Mikio.
Samba日本語版の設定と運用のノウハウ 応用編
目次 このドキュメントについて・・・前提条件……………………………………… 2
メール暗号化:秘密鍵・公開鍵の作成  作業手順 Windows メール(Vista).
安全なログオン手順 2004/08/26 Port139 伊原 秀明.
UNIX利用法 情報ネットワーク特論資料.
JXTA Shell (3) P2P特論 (ソフトウェア特論) 第6回 /
情報実験:ネットワークコンピューティング入門
SSHのセキュリティ技術 SSH2 IPSec PKI TLS/ SSL
(株)アライブネット RS事業部 企画開発G 小田 誠
Unix生活 Vol.1
(株)アライブネット RS事業部 企画開発G 小田 誠
スキルチェック Unix編.
実習用サーバの利用開始手順 (Windowsの場合) TeraTerm Proをインストール 公開鍵をメールで送付
Ibaraki Univ. Dept of Electrical & Electronic Eng.
社内システム進捗 前回までの決定事項 →システムは「Scala PlayFramework2」で作成
UNIX Life KMSF M2 saburo.
UNIXマシン間のファイル転送 2002年10月20日 海谷 治彦.
PuTTYとパスワード変更 文責:亀 彩.
2012年度 計算機システム演習 第4回 白幡 晃一.
キャンパスクラウドによる 実験環境の構築 情報ネットワーク特論 講義資料.
「コンピュータと情報システム」 07章 インターネットとセキュリティ
ネットワークコミュニケーション よく使われるアプリケーション DNS 7/5/07.
「まめだくん Ver.1.0」 特徴と利用方法.
WindowsNTによるLAN構築 ポリテクセンター秋田 情報・通信系.
インターネット メールサーバ DNSサーバ WWWサーバ ファイアウォール/プロキシサーバ クライアント.
富士通 SS研究会 2000/11/15 KEK 高エネルギー加速器研究機構 計算科学センター 八代茂夫
スキルアップ.
Q q 情報セキュリティ 第10回:2005年6月17日(金) q q.
Telnet, rlogin などの仮想端末 ftp などのファイル転送 rpc, nfs
情報コミュニケーション入門 総合実習(1) 基礎知識のポイント(2)
2009/07/03 理学院宇宙理学専攻 博士後期課程 1 年 山下 達也
クラウド、公開鍵暗号方式 情報ネットワーク特論 南里 豪志.
第2章 第1節 情報通信の仕組み 1 ネットワークの仕組み 2 通信プロトコル 3 認証と情報の保護
公開鍵認証方式の実習 TeraTermの場合
Ibaraki Univ. Dept of Electrical & Electronic Eng.
情報化が社会に及ぼす影響 情報セキュリティの確保
Linux リテラシ 2006 第4回 ネットワーク CIS RAT.
第10回 情報セキュリティ 伊藤 高廣 計算機リテラシーM 第10回 情報セキュリティ 伊藤 高廣
FreeBSDインストール 2002年4月10日.
ネットワークアプリケーションと セキュリティ
特定ユーザーのみが利用可能な仮想プライベート・ネットワーク
共通暗号方式 共通のキーで暗号化/復号化する方法 例) パスワードつきのZIPを送信して、後からパスワードを送る方法 A さん B さん
第二章 インターネットで やり取りする情報を守る
PGP インターネットで 広く使われている暗号技術
インターネットにおける真に プライベートなネットワークの構築
キャンパスクラウドによる 実験環境の構築 情報ネットワーク特論 講義資料.
Linux リテラシ 2006 第5回 SSH と SCP CIS RAT.
TCP/IP入門          櫻井美帆          蟻川朋未          服部力三.
リモートログインと Secure Shell 2005 年度 EPnetFaN 座学編 第8回 (2005/07/01)
PKI 情報工学専攻 1年 赤木里騎 P91~102.
公開鍵認証方式の実習 MacOS Xの場合.
ネットワークプログラミング (3回目) 05A1302 円田 優輝.
UNIX演習 情報ネットワーク特論.
暗号技術 ~暗号技術の基本原理~ (1週目) 情報工学科  04A1004 石川 真悟.
JXTA Shell (2) P2P特論 (ソフトウェア特論) 第5回 /
UNIX演習 情報ネットワーク特論資料.
gate登録システム: 設計ポリシーから使い方まで
UNIX演習 情報ネットワーク特論資料.
Q q 情報セキュリティ 第9回:2007年6月15日(金) q q.
Step.8 ファイアウォール PC 3 PC 1 PC 2 許可したアクセス のみ通過させる アクセスする ファイアウォール
SSH2の認証シーケンス(keyboard-interactive)
データの改竄を防ぐ仕組み 2002/9/12 牧之内研究室「インターネット実習」Webページ
Sftp の使い方 牧之内研究室 修士1年 安部智貴 2004/04/13.
TCP/IPの通信手順 (tcpdump)
電子署名(PGP) 森田 亙昭 牧之内研究室「インターネット実習」Webページ
創造都市研究科 都市情報学 情報基盤研究分野
ユーザ認証の盗聴 2002/9/10 峯 肇史 牧之内研究室「インターネット実習」Webページ
HTTPプロトコルの詳細 M1 峯 肇史.
Presentation transcript:

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

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

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

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

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

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

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

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

ホスト鍵を作ろう 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

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

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

自分の鍵を作ろう 2/2 秘密鍵が id_dsa 公開鍵が id_dsa.pub 暗号化されてます。 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 ディレクトリがなければ作る。 ruri@server% mkdir ~/.ssh ruri@server% chmod 700 ~/.ssh ~/.ssh/authorized_keys にクライアントで生成した公開鍵を追加する。 ruri@server% cat id_dsa.pub >> ~/.ssh/authorized_keys おしまい。

接続してみる 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 に登録される。

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

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 を使ってパスフレーズを登録。 しあわせ~。 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% つながった!! しあわせ~。

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

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

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

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

参考 Secure Shell (secsh) Working Group OpenSSH 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 には認証局 (Certifying Authority) がない。Kerberos を使う? OTP (S/Key 認証) はおもしろそうだけど、誰か使ったことありますか? 我が家の Apache はどうなるんだっ! 眠いので寝てもいいですか? くわしいことは倉品師匠に訊いてください。