松本linux勉強会 ssh 暗号化と認証のプロトコル

28
松本Linux勉強会 SSH 暗号化と認証のプロトコル

Upload: shinichiro-ohhara

Post on 22-May-2015

321 views

Category:

Software


1 download

TRANSCRIPT

Page 1: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

松本Linux勉強会

SSH 暗号化と認証のプロトコル

Page 2: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

自己紹介

大原 慎一郎 https://twitter.com/ohhara_shiojiri

(有)トラストネットワークス 塩尻インキュベーションプラザ108号室

・長野県塩尻市に活動拠点を置く、市内プログラマー有志による団体・「オープンな環境でオープンな活動を目指す」を合言葉に集う・CoderDojo Shiojiri 開催 ・小学生高学年向けRuby教室開催・IT技術書をリブライズで貸し出し、また市立図書館と協力

http://shiojiri-osslabo.com/

Page 3: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

アジェンダ

● SSHについて再確認しよう● 検証環境● クライアントソフト● 通信経路の暗号化● パスワード認証● 公開鍵認証● セキュリティ的に設定すべき項目

Page 4: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

SSHについて再確認しよう

● SecureShell(セキュアシェルの略称)● 通信経路間を暗号化してリモートから安全にコ

ンピューターを操作できる。● 複数の認証方式が提供されている。● 通信経路間の暗号化と認証は別と考える。● クラウドのインスタンス(仮想サーバー)への接

続はsshが基本です。

Page 5: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

SSHについて再確認しよう

● サーバーソフトの実装としては、オープンソースのOpenSSHが広く利用されている。

● 平文でやりとりされるtelnetやrloginの代替として利用される。

● ファイル転送においても、平文でやりとりされる rcp,ftpに変わって、scp,sftpが利用可能

Page 6: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

検証環境

● VirtualBox 4.3.14(2014/09/03時点)○ https://www.virtualbox.org/wiki/Downloads○ CPUの仮想マシン支援機能が必要(BIOS設定)○ Windowsの場合、システムのPATH設定が必要

■ 4.2系 C:\Program Files\Oracle VM VirtualBox■ 4.3系 C:\Program Files\Oracle\VirtualBox

Page 7: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

検証環境

● Vagrant 1.6.5(2014/09/05時点)○ http://www.vagrantup.com/downloads.html○ Windowsの場合、システムのPATH設定が必要

■ C:\HashiCorp\Vagrant\bin■ C:\HashiCorp\Vagrant\embedded\mingw\bin

○ コマンドプロンプトの代わりにmingw32が使用できる。■ C:\HashiCorp\Vagrant\embedded\mingw\mingw32env.cmd

● BOXファイル CentOS 6.5○ https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3

/centos65-x86_64-20140116.box

Page 8: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

検証環境

● Vagrantfileを編集してIPアドレスを割り当てたノードで起動させます。

● Vagrant入門の資料を参照して下さい。○ http://www.slideshare.net/ShinichiroOhhara/solavagrantver2

Page 9: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

Virtual Box 環境

検証環境

クライアント側Ubuntu 14.04

ホストPC

ルーター192.168.33.1

サーバー側CentOS6.5

192.168.33.22

Page 10: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

クライアントソフト

● 主なSSHプロトコルを使用するソフト○ OpenSSH○ PuTTY○ Tera Term○ WinSCP○ FFFTP

Page 11: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

クライアントソフト

● コマンドラインのOpenSSHをここでは使用● OpenSSHクライアントのインストール

○ CentOS → yum install openssh-client○ Ubuntu → apt-get install ssh

Page 12: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

通信経路の暗号化

● vagrantで起動させたCentOS6.5のノードにパスワード認証でログインします。○ ssh [email protected]

● ノードに割り当てたIPアドレスを指定します。● アカウントはvagrantです。● パスワードも同じです。● 確認できたらログアウトします。

Page 13: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

通信経路の暗号化

● パケットキャプチャソフト Wireshark● ログインパケットを監視してみる。● 暗号化されていないTelnetの中身を確認● ここで実演● 暗号化したSSHの中身を確認● ここで実演● 通信経路間の暗号化の重要性を認識しよう

Page 14: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

パスワード認証

● 外部からrootアカウントでログイン出来る状態は大変危険です。

● rootアカウントでログインして確認してみます。● パスワードはvagrantと同じです。● 確認できたら、そのままログイン状態からノード

のsshサーバー設定を変更します。● 2重セッションで設定するのがコツ

Page 15: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

パスワード認証

SSHクライアント SSHサーバー

最初の接続(設定用)

2つ目の接続(確認用)

SSHサーバーの設定変更が有効になるのは、設定変更後からの新規接続なので、設定を間違えた場合を想定して、最初の接続は切らずに2つ目の新規接続で動作確認しよう!

Page 16: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

パスワード認証

● rootログインを禁止設定しましょう。○ /etc/ssh/sshd_config

PermitRootLogin no

service sshd reload

● sshサーバーを再設定してサービスを再起動。

Page 17: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

パスワード認証

● rootログインが出来るか再確認してみます。● rootアカウントで正しいパスワードを入力しても

ログイン出来ない事を確認しましょう。

Page 18: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

パスワード認証

● rootアカウントのログインを禁止します。● クラウドのインスタンスは設定済みの場合が多

いですが、利用前に確認しましょう。● rootの初期パスワードを必ず変更しましょう。● 安易なパスワードはリスト攻撃に対して脆弱で

す。● パスワード認証は基本的に使用しない事。

Page 19: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

公開鍵認証

● クラウドのインスタンス認証方式の標準● 公開鍵と秘密鍵のペアで作成される。● 公開鍵は相手に渡して公開しても良い。● 秘密鍵は絶対に非公開にして厳重管理。● 公開鍵で暗号化して、秘密鍵で復号化する。● RSAアルゴリズムは逆方向にも使えるが、他の

公開鍵認証で使用出来るとは限らない。

Page 20: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

公開鍵認証

● 公開鍵および秘密鍵を作成します。

● RSA2048bitが一般的なアルゴリズムです。● パスフレーズ無しでも作成できます。

ssh-keygen -t rsa -C “コメント”

ssh-keygen -N “” -t rsa -C “コメント”

Page 21: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

公開鍵認証

● 2つの鍵ファイルを確認します。○ 秘密鍵 /home/user/.ssh/id_rsa○ 公開鍵 /home/user/.ssh/id_rsa.pub

● サーバー側へ公開鍵を登録します。● ホームディレクトリ以下の隠しディレクトリ.sshの

authorized_keysファイル● 1行につき1つの公開鍵を登録できる。

Page 22: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

公開鍵認証

● 登録方法は様々あります。○ 2つのコンソール画面でコピペ編集する。○ 公開鍵をファイル転送して、編集する。○ 専用コマンドssh-copy-idを使用する。

● ssh-copy-id○ サーバー側の .ssh/authorized_keysファイルへ追記

ssh-copy-id -i 公開鍵ファイル user@host

Page 23: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

公開鍵認証

● パスワード認証を禁止設定しましょう。○ /etc/ssh/sshd_config

PasswordAuthentication no

service sshd reload

● sshサーバーを再設定してサービスを再起動。

Page 24: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

公開鍵認証

ssh -i 秘密鍵ファイル user@host

● 秘密鍵を使用してログインしてみます。

● パスワード入力が出来なくてログインが出来ない事を確認しましょう。

● 予めホスト設定ファイル(.ssh/config)を用意すれば、毎回のログインコマンドが短く出来ます。

Page 25: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

セキュリティ的に設定すべき項目

● sshサーバーの設定で、セキュリティ的に設定を推奨する項目を紹介します。

● 組織やプロジェクトに応じて運用は変わりますが、確固たるセキュリティポリシーを事前に決めておきましょう。

Page 26: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

セキュリティ的に設定すべき項目

● Port 22○ TCP 22番ポートが標準ですが、変更が推奨されます。

○ 特定用途に割り当てられるウェルノウンポート以外で

IANA管理外の49152番以降ならば自由。

○ ノードの設置状況によってファイヤーウォール等を考慮

する必要があります。

○ 今日ではIPv4アドレスの全域を約45分でポートスキャン

が可能なので、ポート番号の変更は気休め程度です。

Page 27: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

セキュリティ的に設定すべき項目

● Protocol 2○ 脆弱性のあるバージョン1は使用しない事。○ 1,2と併記されている場合は2のみに変更します。

● ChallengeResponseAuthentication no○ 質問の回答で認証するオプションです。

○ 質問はパスワードの場合が多いので、パスワード認証

の禁止と同様に禁止しないと、パスワード認証が出来て

しまいます。

Page 28: 松本Linux勉強会 SSH 暗号化と認証のプロトコル

セキュリティ的に設定すべき項目

● UsePAM no○ PAM認証ではユーザー毎に認証を変えられます。○ ChallengeResponseAuthenticationと併用されます。

○ パスワード認証とrootログインの恐れがあるので、禁止

します。

● MaxStartups 10:30:100○ 未認証の接続数を制限します。○ 開始時の数:超えた時の制限率:拒否する数○ ログの抑制にも効果があります。