Chiroru's Diary

日々の学びをちょこちょこメモしていきます

VPS上のDebianにSSH接続、SSL/TLSの理解

【学習内容】
sshの基本を理解
SSL/TLS の基本を理解

【目次】

SSH

SSH(Secure SHell)はリモートマシンと通信するための通信手段(プロトコル)。通信経路が暗号化されているため、セキュリティを確保してリモートマシンと通信できる。

SSHの設定

【サーバー側】

Debiansshのインストール

# aptitude update  
# aptitude install ssh  

rootユーザーログインの禁止

$vim /etc/ssh/sshd_configにてPermitRootLoginをnoに変更。
この時コメントを外し忘れないこと!

※PermitRootLoginの変更について
sshd_config には、はじめ#PermitRootLogin prohibit-passwordと書かれていた。
これについて調べてみたところ

rootログインにおいて、すべてのインタラクティブな認証を禁止し、公開鍵もしくはホストベース、GSSAPIによる認証のみが有効(デフォルト)

とのこと。
参考:公開鍵認証:リモートホスト側の「秘密鍵/公開鍵」まわりのはなし

編集が終わったら$ sudo /etc/init.d/ssh restartsshdを再起動する。

【クライアント側】

公開鍵作成

マシンにつき一回、$ssh-keygen -t rsa で鍵を作成する。

$ ls ~/.ssh  

 id_rsa.pub(公開鍵)  id_rsa(秘密鍵)があればOK  

公開鍵をサーバーに設置する

公開鍵をサーバーに送る $ scp ~/.ssh/id_rsa.pub [サーバーログインユーザー]@[サーバーのIP]:~/

scpについてはscpによる安全なリモートファイルのコピー方法参考

そのままクライアント側でサーバー側の鍵設定をしていく。

$ ssh [サーバーログインユーザー]@[サーバーのIP]  
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys  
$ chmod 700 ~/.ssh  
$ chmod 600 ~/.ssh/authorized_keys  
$ rm ~/id_rsa.pub  

参考:VPSをレンタルした際に行うSSHの設定まとめ
参考:初心者がSSHについて学ぶ
参考:sshで公開鍵認証を使ってアクセスする

パスワード認証の禁止、公開鍵でのみログイン

ssh/sshd_configにて、

  • PasswordAuthenticationをnoに変更し
  • PubkeyAuthenticationをyesに変更する

ポート番号変更

セキュリティ上デフォルトのポート番号を使うより、変更した方が攻撃を受ける機会が減る。

変更の際のポート番号はウェルノウンポートには注意すること。

SSLについて

SSLの役割

  1. インターネットでやりとりするデータを暗号化する
  2. サーバーから「サーバー証明書」を受け取り・検証、通信相手が信頼できることを確認(承認)する

TLS

SSLをベースとなってできたもの。動作と機能はほぼ同じ。

SSLのやりとりについて

SSLは,「共通鍵暗号」と「公開鍵暗号」という二つの暗号方式を組み合わせて利用している。
共通鍵暗号」は,暗号化と復号に同じ鍵(共通鍵)を使う暗号方式
公開鍵暗号」は,公開鍵と秘密鍵と呼ばれるペアの鍵を使う方式

クライアントがサーバーにSSL通信を要求すると、サーバーは公開鍵入り証明書をクライアントに返信する。
クライアントはそれを元にサーバーを認証し、サーバー公開鍵を暗号化→暗号通信に使う共通鍵を作成し、サーバーへ送る。(公開鍵暗号を利用)
受け取ったサーバーはサーバー秘密鍵を利用して復号し、暗号通信に使う共通鍵を取り出す。

サーバー証明書とは

サーバーの管理者が認証局(組織)に申請して発行してもらうもの。
その内容は認証局の署名など書かれており、クライアントにはサーバー証明書+署名した認証局の証明書が届く。さらに他からも認証を受けていればそこの証明書も届き、最終的に一番上位の「ルート認証局」から証明が届く。それが信頼できるか「署名をルート認証局の公開鍵で復号したデータ」と「サーバー証明書ハッシュ値」が一致するかどうかで確かめ判断する。

参考:図解で学ぶネットワークの基礎:SSL編