VPS上のDebianにSSH接続、SSL/TLSの理解
【学習内容】
・sshの基本を理解
・SSL/TLS の基本を理解
【目次】
SSH
SSH(Secure SHell)はリモートマシンと通信するための通信手段(プロトコル)。通信経路が暗号化されているため、セキュリティを確保してリモートマシンと通信できる。
SSHの設定
【サーバー側】
Debianにsshのインストール
# 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 restart
でsshdを再起動する。
【クライアント側】
公開鍵作成
マシンにつき一回、$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で公開鍵認証を使ってアクセスする
パスワード認証の禁止、公開鍵でのみログイン
- PasswordAuthenticationをnoに変更し
- PubkeyAuthenticationをyesに変更する
ポート番号変更
セキュリティ上デフォルトのポート番号を使うより、変更した方が攻撃を受ける機会が減る。
変更の際のポート番号はウェルノウンポートには注意すること。
SSLについて
SSLの役割
- インターネットでやりとりするデータを暗号化する
- サーバーから「サーバー証明書」を受け取り・検証、通信相手が信頼できることを確認(承認)する
TLS
SSLをベースとなってできたもの。動作と機能はほぼ同じ。
SSLのやりとりについて
SSLは,「共通鍵暗号」と「公開鍵暗号」という二つの暗号方式を組み合わせて利用している。
「共通鍵暗号」は,暗号化と復号に同じ鍵(共通鍵)を使う暗号方式
「公開鍵暗号」は,公開鍵と秘密鍵と呼ばれるペアの鍵を使う方式
クライアントがサーバーにSSL通信を要求すると、サーバーは公開鍵入り証明書をクライアントに返信する。
クライアントはそれを元にサーバーを認証し、サーバー公開鍵を暗号化→暗号通信に使う共通鍵を作成し、サーバーへ送る。(公開鍵暗号を利用)
受け取ったサーバーはサーバー秘密鍵を利用して復号し、暗号通信に使う共通鍵を取り出す。
サーバー証明書とは
サーバーの管理者が認証局(組織)に申請して発行してもらうもの。
その内容は認証局の署名など書かれており、クライアントにはサーバー証明書+署名した認証局の証明書が届く。さらに他からも認証を受けていればそこの証明書も届き、最終的に一番上位の「ルート認証局」から証明が届く。それが信頼できるか「署名をルート認証局の公開鍵で復号したデータ」と「サーバー証明書のハッシュ値」が一致するかどうかで確かめ判断する。