ConohaVPS + kusanagiのセキュリティ対策第3弾。
1年半ほどSSH接続する時にはパスワードログイン(root接続)を行っていたんですが、日に1万以上を超える攻撃を受けるようになったので、最近になって鍵認証に変更しました。
ってわけで、今回はConohaVPS + kusanagiでの必須セキュリティ対策、鍵認証を行ったSSH&SFTP接続について簡単な流れをご紹介。
- 脆弱性のあるパスワードログインから鍵認証へ
- VPS初心者でも簡単
- 基本的にはコピペでOK
なお、以下を前提に話を進めるのでご注意を。
- Mac、Conoha&kusanagiユーザー
- wheelユーザーを新規追加し、rootログインは禁止済み
- 事前にport番号を変更済
- 例であげるユーザー名、生成する鍵の名前は「tomato」
- FTP(FileZilla)で接続設定を終えている
port番号を変更していない場合は下記記事をご参照ください。
ちなみに、筆者の使用環境はMacbookAir2013(mojave)
SSH接続にはMac標準のターミナル、FTP接続にはFileZillaを使用しています。
Windowsを使用している場合は操作が異なる場面があるので、自分に必要な部分だけ参考にしてください。
鍵をローカル環境で生成する
まずは、サーバーと自分のPCを繋ぐ鍵を作っていきましょう。
SSH接続した後にサーバー内で作ることも可能ですが、自分のPC内で作った方が分かり易いので、今回はローカルで作っていきます。
ターミナルで鍵生成
ターミナルを開き、以下の2つのコマンドを打ちます。
cd desktop
ssh-keygen -t rsa
- cd : 作業ディレクトリを移動する
- ssh-keygen -t rsaで公開鍵(.pub)と秘密鍵を生成
以上のコマンドを打つと、
Enter file in which to save the key (/Users/PCユーザー名/.ssh/id_rsa):tomato
と鍵の名前を決められます。
そのままEnterを押すとid_rsaで固定されますが、今回は例として『tomato』という鍵を精製していきます。
また、上記画像のように
Enter passphrase (empty for no passphrase):〇〇
と2度パスワードを聞かれます。
無視してもいいみたいですが、入力するのがベターらしいので好きなパスワードを入れておきましょう。スルーしてEnterキーを2度押すと、接続時にパスワードを求められなくなります。
操作を終えたら、デスクトップ画面に公開鍵(.pub)と秘密鍵が生成されているのを確認しましょう。
秘密鍵をpem形式に
筆者の環境ではなぜかpem形式ではなく、ただの書類として生成されていたため、pem形式に変更します。
最初からpem形式で保存されていた場合はスルーしてください。
方法は新しく生成された秘密鍵(.pubじゃない方)をリネームし、『.pem』を付け足してやるだけ。
「名前の末尾に拡張子”.pem”を追加してもよろしいですか?」と聞いてくるので、追加を選択。
筆者の場合、秘密鍵は『tomato』なので『tomato.pem』に変更します。
秘密鍵を.sshファイルへ移動させる
作成した秘密鍵(tomato.pem)をユーザー直下の.sshディレクトリへ移動させます。
.sshディレクトリはユーザー直下にあるファイルですが、不可視ファイルなため、通常では見ることができません。
ショートカットキー「command + shift + .(ドット)」をFinderで開いた後に実行し、不可視ファイルを見れるように変更します。
隠しファイルが見れるようになったら、ユーザー名直下の「.sshディレクトリ」内に作成させた秘密鍵(tomato.pem)をドラッグ&ドロップし移動させます。
また、そもそも.sshディレクトリが無い場合は、新しく作る必要があります。
下記コマンドで新規作成した後に、秘密鍵を移動しましょう。
mkdir .ssh
SFTPで公開鍵をサーバーへ
次に、SFTP接続を行い公開鍵(tomato.pub)をサーバーへ移動させます。
ターミナルを利用して送ることも可能みたいですが、VPS童貞の僕には難易度が高かったため、SFTP(FileZilla)を利用して送り込みます。
まずはFileZillaを起動し、接続。
設定は僕の場合上記画像のようになってます。
/home/ユーザー名(筆者の場合tomato)と進み、前々回に作った.sshディレクトリを開きます。
見当たらない方は下記記事を参照してください。
.sshディレクトリ内にローカル環境で作成した公開鍵(tomato.pub)をドラッグ&ドロップ。次へ進みます。
SSHで公開鍵を「authorized_keys」に
再びターミナルを開き、今度はSSH接続を行います。
ユーザー名とipアドレス部分、ポート番号はそれぞれ自分のものに書き換えてください。
ssh tomato@133.130.120.164 -p 29870
rootでログインした場合、下記コードでユーザーを変更します。
su - tomato
ローカル環境から移したtomato.pubのままでは『ドアノブ』の役目を果たさないので、「authorized_keys」という名前に下記コマンドで変更します。
mv ./.ssh/tomato.pub ./.ssh/authorized_keys
- mv : ファイルやディレクトリを移動する/名前を変更する
※上記の場合 .sshファイルのtomato.pubをauthorized_keysへ変更 - [tomato@ipアドレス ~]$ となっている状態で打たないとmvコマンドは上手く作動してくれません。su – ユーザー名と入力し、rootユーザーではない状態で進めてください。
これで下準備は完了です!
パーミッション、ファイル名が正しいか確認
念のために、パーミッション、ファイル名等が正しいか確認しましょう。
ls -la /home/tomato/.ssh
正しく行われていればこんな感じ。
sshd設定ファイルをいじり、パスワードログインを無効化
ここまで来れば、あと少し!
sshd_configというファイルを編集し、パスワードログインを無効化して鍵認証になるように設定します。
念のためにバックアップを取る
sshd_configは非常に繊細な子なので、後で困らないようにバックアップファイルを作っておきます。
SSHでユーザーログインをした後、下記のコードを打ち込みます。
sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.old
- cp : ファイルやディレクトリを複製する
※上記の場合 sshd_configをsshd_config.oldとして複製 - sudo : 管理者権限で処理を実行
パスワードを入力し、複製を完了します。
sshd_config.oldは、元のsshd_configと同じファイル内にあるので、鍵認証が上手く行かず入れなかった場合などは、conohaのコンソールから.oldを取って復元しましょう。
sshd_configの設定を変える
sshd_configファイルをいじっていきます。
vimエディタという特殊なテキストエディタを使うため苦労しますが、頑張りましょう。
SSHでユーザーログイン後、下記のコードを打ち込みます。
sudo vim /etc/ssh/sshd_config
特に設定をいじっていない場合、153行の頭が痛くなるような羅列が現れます。
vimエディタは、このままでは挿入画面にならないので、PCのキーボードの『a』キーを押し、挿入モードに切り替えます。
挿入モードに切り替えた後、下記の行の文字列を書き換えます。
23行目にある
#Protocol 2
を
Protocol 2
に。#を取るだけです。
55行目にある
#PubkeyAuthentication yes
を
PubkeyAuthentication yes
に書き換え。#を取るだけです。
79行目にある
PasswordAuthentication yes
を
PasswordAuthentication no
に書き換え。
環境によってはなぜか2つPasswordAuthenticationがあります。その場合は両方とも『no』に変えましょう。
書き換えが完了したら『ESC』キーを押し、挿入モードを終了させます。
『:wq』と入力し、vimエディタを上書き保存して終了します。
- aキー : 挿入モードに切り替え
- ESCキー:挿入モード終了
- uキー:一つ前の処理に戻す
- :wq:上書き保存する
最後に、下記コマンドでsshdの再起動をはかります。
systemctl restart sshd.service
これでSSH接続、FTP接続は鍵認証に変更され、以降ではパスワードログインが出来なくなります!
鍵認証でSSH接続、SFTP接続してみる
最後に、鍵認証で実際に入れるかどうか確認してみましょう。
鍵認証でSSH接続
今後SSH接続を行う場合は、下記のようなコマンドで接続を行います。
ssh -i ~/.ssh/tomato.pem tomato@133.130.120.164 -p 29870
-i : 秘密鍵の場所を指定するオプション
パスワードを聞かれた場合は、鍵を生成した時に入力したパスワードを記入します。何も入力しなかった場合、特にパスワードの入力は必要ありません!
無事接続できたら鍵認証完了です!
予期せぬ事態で秘密鍵を無くしてしまうと怖いので、USBにでもコピーしてバックアップを取っておきましょう。
WARNING: UNPROTECTED PRIVATE KEY FILE!
と警告文が出て入れなかった場合は、pemファイルのパーミッションを疑いましょう。
ローカル環境のターミナルで、下記コマンドを打ちパーミッションを変更します。
chmod 700 /Users/PCユーザー名/.ssh/tomato.pem
これでも入れなかった場合は……前の段階から処理を間違えている可能性があります。やり直しましょう。
鍵認証でFileZillaを動かす
パスワードログインを禁止した事で、FileZillaなどのFTPソフトも普段通りのやり方では使えなくなります。
以下の様に鍵認証設定に変えましょう。
- ログオンタイプ:鍵認証
- 鍵ファイル:/Users/PCユーザー名/.ssh/tomato.pem
接続を行おうとすると、「.pem形式をサポートしていません」と怒られる場合があります。
素直に『はい』を選択し、FileZillaが理解できる形式へと変更しましょう。
鍵のパスワードを入力したら、保存先を選択します。.sshディレクトリが理想ですが、不可視ファイルなためそのままでは保存する事ができません。『Command + Shift + .』のショートカットキーを入力し、不可視ファイルを見れるようにした後、.sshファイル内に『tomato』と名付けて保存しておきます。
よく分からない方は一度デスクトップに保存し、後から.sshディレクトリ内に入れてもOKです。
一連の流れで保存されたFileZilla用の秘密鍵は、『tomato.ppk』として保存されます。
なので、最終的な接続画面はこんな感じ。
以上、おわりっ!
最後に
意味が分からない、という理由でパスワードログインのまま放置していた筆者ですが、そのまま放置していたらいつかは突破される可能性があります。
なんせ1日1万回を超える攻撃ですからね……。
鍵認証に変えただけでも、割とほっとしています。
ここまで来ればConoha + kusanagiの最低限のセキュリティ対策は後少し!
次はファイアーウォールの導入方法をご紹介します。
コメント