AlmaLinux セキュリティ対策 SSH接続で公開鍵認証を使う設定手順

AlmaLinux セキュリティ対策 SSH接続で公開鍵認証を使う設定手順

AlmaLinux セキュリティ対策 SSH接続で公開鍵認証を使う設定手順

はじめに

SSH接続の認証をパスワード認証方式から公開鍵認証方式に変更する設定手順となります。
SSHログインをパスワード認証にしておくと、ブルートフォースアタック(パスワード総当たり攻撃)でパスワードを解析され不正ログインされたり、ブルートフォースアタックでCPUやネットワークを圧迫したりしますので、パスワード認証ではなく公開鍵認証方式にする設定です。

公開鍵認証

公開鍵の仕組みについては難しいので別サイトをご参照下さい。
パスワード認証よりも安全そうな公開鍵認証でもメリット・デメリットがありますので列挙しておきます。

■メリット
・秘密鍵があるパソコンからしか接続できない
・パスワード認証よりセキュリティが高いと思う
■デメリット
・鍵の作成や管理の手間がかかる
・鍵を紛失したらSSHでログインできない

デメリットについてはどうカバーするかは後日考えたいと思います。

サーバー・パソコン環境

■サーバー側環境
インフラ : さくらのクラウド
OS : AlmaLinux release 8.4 (Electric Cheetah)
SSH : openssh 8.0p1 6.el8_4.2
※さくらのクラウドが提供しているAlmaLinux 8.4 64bitのアーカイブからコピー構築したサーバーになりますので、サーバー構築時点である程度、初期設定がされています。

■パソコン側環境
OS : Windows10
SSH : Tera Term v4.87 + Oniguruma v5.9.6

SSHを公開鍵認証に変更

SSH接続でログインを許可しているユーザー(tempadmin)とrootを数回切り替えながら作業します。
どちらのユーザーで作業するかに注意してください。

鍵ペアの作成

SSH接続でログインを許可しているユーザーtempadmin用の鍵ペアを作成します。

鍵ペアは公開鍵(id_rsa.pub)と秘密鍵(id_rsa)の事です。

まずは、tempadminユーザーにスイッチする。

[root@alma01 ~]# su tempadmin

rootからtempadminユーザーにスイッチしましたが、/root/配下にいますので、tempadminのホームディレクトリに移動。
※括弧[]内に注目しながら作業してください。

[tempadmin@alma01 root]$ cd /home/tempadmin
[tempadmin@alma01 ~]$

ssh-keygenコマンドで秘密鍵(id_rsa)と公開鍵(id_rsa.pub)を一気に作成します。
※鍵ペアはクライアント側で作成し、サーバーへ公開鍵を送信するのが望ましいそうです。
※Windows CMDでも同じコマンド・オプションで作成できるみたいです。
対話形式で進んでいきますので、その都度回答を入力していきます。

[root@alma01 ~]# ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tempadmin/.ssh/id_rsa):  ← 鍵の保存場所、何も入力せずEnter
Created directory '/home/tempadmin/.ssh'.
Enter passphrase (empty for no passphrase):  ← 鍵のパスフレーズ、何も入力せずEnter
Enter same passphrase again:  ← 鍵のパスフレーズ、何も入力せずEnter
Your identification has been saved in /home/tempadmin/.ssh/id_rsa.
Your public key has been saved in /home/tempadmin/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:m5uAr1uZLgyNxDy8QhiFwEUmHctBQ738/scaCEwdW6g tempadmin@alma01.testserver.com
The key's randomart image is:
+---[RSA 4096]----+
|++BX....         |
|o.*.+.+          |
|+..*.=           |
|.*oE. .          |
|o..o..  S        |
|o..o. o .o       |
|o oo.. oo.       |
|..+. .  +.       |
| ++o. .o.        |
+----[SHA256]-----+

パスフレーズを入力して作成すれば、もっと安全になるかと思いますが、パスフレーズを忘れた時の方が怖いので今回は無しで行きます。

作成した鍵ペアを確認する。
ssh-keygenで作成時に指定した場所になります。

[tempadmin@alma01 ~]$ ls -la /home/tempadmin/.ssh/
合計 16
drwx------ 2 tempadmin tempadmin 4096  8月 20 16:07 .
drwx------ 3 tempadmin tempadmin 4096  8月 20 16:06 ..
-rw------- 1 tempadmin tempadmin 3401  8月 20 16:07 id_rsa
-rw-r--r-- 1 tempadmin tempadmin  754  8月 20 16:07 id_rsa.pub

秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が出来ていれば次へ

公開鍵(id_rsa.pub)を登録

作成した鍵ペアの片割れ公開鍵(id_rsa.pub)からauthorized_keysを作成して、権限変更
※ただリネームしただけ
※tempユーザーで作業

[tempadmin@alma01 ~]$ cat /home/tempadmin/.ssh/id_rsa.pub >> /home/tempadmin/.ssh/authorized_keys
[tempadmin@alma01 ~]$ chmod 600 /home/tempadmin/.ssh/authorized_keys
[tempadmin@alma01 ~]$ ls -la .ssh/
合計 20
drwx------ 2 tempadmin tempadmin 4096  8月 20 16:17 .
drwx------ 3 tempadmin tempadmin 4096  8月 20 16:06 ..
-rw------- 1 tempadmin tempadmin  754  8月 20 16:17 authorized_keys
-rw------- 1 tempadmin tempadmin 3401  8月 20 16:07 id_rsa
-rw-r--r-- 1 tempadmin tempadmin  754  8月 20 16:07 id_rsa.pub

sshd_configの変更

sshd_configで
・PermitEmptyPasswordsをNOに変更
・PasswordAuthenticationをNOにしてパスワード認証方式を禁止にする
・AuthorizedKeysFile 公開鍵認証の公開鍵ファイルの場所を指定、SSHログインするユーザーのホームディレクトリが起点となるパスで書く。
※rootで作業

[tempadmin@alma01 ~]$ exit  ← まずrootにスイッチ!
[root@alma01 ~]# vi /etc/ssh/sshd_config
↓下記項目を変更

# rootログイン 拒否
PermitRootLogin no
# パスワード認証でのログイン 拒否
PasswordAuthentication no
# パスワードを空でログイン 拒否
PermitEmptyPasswords no
# 秘密鍵ファイルの指定
AuthorizedKeysFile      .ssh/authorized_keys

秘密鍵(id_rsa)をパソコン側に保存

パソコン側からサーバーへSSH接続する際に必要となる秘密鍵(id_rsa)をパソコン側に保存します。
しかし、この時点ではまだapacheやvsftpdなどの設定を行っていないので、パソコン側のscpコマンドでダンロードします。

scpでダウンロード

Windows10から標準でscpコマンドがコマンドプロンプトで使えます。

scp -P “ポート番号” “ユーザー名”@”IPアドレス”:”秘密鍵のパス+ファイル名” “パソコン側の保存場所”

・このサーバーはSSH用ポート22番から8822番に変更しているので、オプション-Pでポート番号を指定。
・ユーザー名はサーバー側のSSHログイン可能なユーザー名


C:\Users\HogeUser>scp -P 8822 tempadmin@59.106.0.0:/home/redadmin/.ssh/id_rsa E:\Download\20210801