サーバーセキュリティー対策【秘密鍵を用いたSSHログイン設定(ubuntu,mac)】

リモートサーバーを管理する際、秘密鍵を用いるSSHログインは必須の設定となってきています。

VPS等を利用してサーバー管理を行う場合、まず取り掛かる作業が今回紹介するSSHログイン設定となるでしょう。

 

さくらのVPS サーバーなどでは、OSインストールをインストールする際に、利用する秘密鍵を指定することで、SSHログインの設定も同時に行ってくれるサービス等もありますが、リリースが新しいバージョンのOSインストールでは、自分で設定する必要があります。

 

この記事では、UbuntuのSSHログイン設定時に必要となるターミナル作業を順追って解説します。

 

以下の開発環境で動作を確認しています。

・ローカル環境:mac Catalina
・さくらVPSサーバー:メモリ 512M, ストレージ:SSD 25GB, CPU:1コア
・OS:Ubuntu 20.04 amd64
スポンサードリンク

macで秘密鍵と公開鍵の生成

 

SSHログインには、ローカル側で利用する秘密鍵と、リモートサーバー側に設置する公開鍵の準備が必要です。

 

ローカルmacのターミナルでコマンド作業を行います。

まずは、秘密鍵、公開鍵を生成するディレクトリを作成します。

 

上記のコマンドで作成したディレクトリに移動します。

 

下記のコマンドで鍵を生成します。

サーバーごとに秘密、公開鍵を使い分けるなど複数のペアを作る際、名前を指定して作成する場合は、-f オプションをつけて実行します。

 

 

下記のメッセージが表示されるので、ENTER

 

次にパスフレーズと、確認用のパスフレーズを聞かれるので、必要な場合は入力。(今回はどちらもENTERでパスフレーズ無しの設定とします)

 

これで、秘密鍵と公開鍵が生成されたので、lsコマンドで確認します。

 

下記のように確認できればOKです。

id_rsa がローカル側で利用する秘密鍵
id_rsa.pub がリモート側で利用する公開鍵です。

 

これで、鍵作成の作業は終了です。

 

リモートサーバー[Ubuntu]のセキュリティー設定

 

秘密鍵、公開鍵の準備ができたので、リモートサーバー[Ubuntu]の設定を行います。

ここでは主に以下の3つ作業を中心に行います。

・rootユーザーでのログイン禁止
・秘密鍵を用いたログインの設定
・パスワードを用いたログインの禁止

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

 

まずは、リモートサーバーにパスワードでログインします。
username@xxx.xxx.xxx.xxx はそれぞれの環境に合わせ変更します。
すでに独自ドメインを取得しており、すでに紐付け作業が終了している場合は、xxx.xxx.xxx.xxx の場所をexamle.com のようにドメインにする事も可能です。
 

下記の内容が表示される場合は対応します。

  1. ローカルの秘密鍵を保管しているディレクトリUsers/user/.ssh 内に移動(.sshディレクトリが表示されない場合は、shift  + command   + . で表示します。)
  2. known_hosts のファイルを削除
  3. もう一度接続$ ssh username@xxx.xxx.xxx.xxx

 

と表示が出た際(2回目以降のログインでは表示されなくなります)は、yes を入力してENTER

 

その後、パスワードを入力してENTER

上記のように表示されれば、ログイン成功です。

 

新しい管理ユーザーの追加

各サーバー会社の設定でroot, ubuntu などデフォルトのユーザー名が指定されていますので、新たなユーザーを作成します。

 

以下のような表示が出るので、まずはパスワードを設定します。

パスワードの設定が終わると以下のような表示が出ます。

途中の設定は指定せずENTERで良いでしょう。

 

もしくは

 

登録したuserに管理者権限付与

 

デフォルトユーザーのホームディレクトリにあるもの(.ssh)を、新たに作ったユーザーのホームディレクトリへコピーする
デフォルトユーザーがubuntuの場合:
コピー後にディレクトリと、その中の所有者を新たに作ったユーザーに変更する

 

EC2を利用の場合は、これまでの新ユーザーの設定を行い、SSHでログインしようとすると、以下のようなメッセージが出ます。

 

デフォルトのユーザーで再度、ログインし以下のコマンドを実行し権限者ファイルを変更します。

 

ここまでの作業が完了したら、デフォルトユーザーをログアウトします。

新たに作成したユーザーでログインし、root権限が利用できるか確認します。

 

 

vimを使うためにアップデート

以下のように表示が変わればOKです。

$ →#

 

新ユーザーの権限が確認できたので、デフォルトユーザー(ubuntuの場合)を削除します。

※-rをオプションとしてつける事でhomeディレクトリも一緒に削除されます。

 

 

 

vimのインストール

 

Rootユーザーのログインを禁止するために、sshd_config の編集

34行目あたりの下記のコードを変更(# を削除する事をお忘れなく)

 

ファイルの更新(システムリロード)

ファイヤーウォール設定
ファイヤーウォール開始
ファイヤーウォール状況確認
上記にように表示されればOK

 

秘密鍵でにログイン設定

 rootディレクトリに移動

 

.sshディレクトリ作成

 

リモートサーバーの接続解除

 


ローカル macで作業

ローカル(mac)から秘密鍵(id_rsa.pub)の転送


 

もう一度リモートサーバーへログイン

 

秘密鍵の追記

 

.sshディレクトリへ移動

 

Id_rsa.pub鍵の削除

 

authorized_keysの権限を600に

 

リモートサーバーの接続解除

 


 

ローカルから秘密鍵ログインの確認

 

ログインが確認できたら、そのまま、リモートサーバーでの作業

 

スポンサードリンク

パスワードを用いたログインの禁止

 

パスワードでのログイン禁止
58行目付近のコードを変更(# の削除を忘れずに)

 


以上で、秘密鍵を用いたSSHログイン設定の完了です。