初めに #
SSH(Secure Shell) を使えば、サーバーに物理的にアクセスせずに、リモートから安全に操作することができます。
現在、多くの Linux ディストリビューションでは、SSH
の実装として OpenSSH
が標準で採用されています。
SSHは非常に便利な一方で、初期設定のまま利用するとセキュリティ上のリスクが潜んでいる場合もあります。
特に、初めてサーバーを扱う方にとっては「どの設定を確認・変更すればよいのか」が分かりにくいかと思います。
そこで本記事では、初心者でもすぐに実践できる OpenSSH のセキュリティ強化の基本設定を 4 つに絞って わかりやすく解説します。
リモートサーバーを安全に運用するための第一歩として、ぜひ参考にしてください。
設定ファイルの場所 #
OpenSSH
は「config
」ファイルに記述された設定を元に動作します。
その為、設定を変更するには、設定ファイルの場所を確認する必要があります。
多くの Linux ディストリビューションでは、デフォルトで以下のパスに配置されています。
本記事では「Rocky Linux 9
」環境を利用しております。
/etc/ssh/sshd_config
このファイルを編集することで、接続ポートの変更や認証方法の設定など、さまざまなセキュリティ項目をカスタマイズできます。
なお、設定を反映させるには、サービスの再起動が必要です。
再起動方法については最終項目にて解説いたします。
パスワード認証の無効化 #
初めにご紹介するのはパスワード認証の無効化です。
SSH接続は以下の二種類の方法が利用できます。
ログイン方式 | 特徴 | リスク |
---|---|---|
パスワード認証 | ユーザー名とパスワードでログイン | ブルートフォース攻撃に弱い |
公開鍵認証 | 秘密鍵と公開鍵による認証 | 鍵の管理が適切であれば安全性が高い |
パスワード認証は読んで字のごとく、ユーザー名とパスワードを使用したログイン方法となります。
一般的に、インターネット上で公開されているサーバーでは、「公開鍵認証方式」の利用が推奨されています。
一方で、パスワード認証は、ブルートフォース攻撃(総当たり攻撃) などによって不正にログインされるリスクがあり、場合によっては短時間で突破される可能性もあります。
そのため、公開鍵認証を利用し、パスワード認証を無効にすることを強くおすすめします。
パスワード認証を無効化するには下記の設定値を変更する必要があります。
PasswordAuthentication yes
上記が「yes
」となっている場合はパスワード認証が有効化されている状況となっております。
下記に「no
」に変更する事でパスワード認証の無効化が可能です。
PasswordAuthentication no
ポートを変更する #
次にご紹介するのはデフォルトのポート番号から独自のポート番号に変更する方法となります。
sshサービスでは22
番ポートがデフォルトとして利用されております。
そのため、悪意のある第三者は、22番ポートを標的にスキャンや攻撃を仕掛けてくるケースが非常に多いのが実情です。
特に公開サーバーでは、ポートスキャンによるアクセス試行が日常的に発生しています。
これを回避するための一つの手段として、デフォルトのポート番号を変更することが有効となります。
利用するポート番号の指定は下記のように記述する事で設定ができます。
Port 番号
以下は「7628
」ポートを指定するように記述している例となります。
Port 7628
また、応用として下記のように指定する事で複数のポートを利用可能にする事も可能となっております。
Port 7628
Port 7629
Port 7630
またポートを変更する場合は「ファイヤーウォール」の設定や「SELinux」の設定が必要となります。
ご利用の環境に合わせてご変更お願いいたします。
rootログインを禁止する #
次にご紹介するのはrootアカウントによるSSHログインを禁止する方法です。
Linux サーバーの運用において、root
(特権アカウント)を使った直接ログインは推奨されていません。
セキュリティの観点からは、各ユーザーに対して適切な権限を付与し、通常は一般ユーザーとして作業を行うことが望ましいとされています。
どうしても特権操作が必要な場合には、必要に応じて sudoP 権限を付与する、あるいは一時的に
rootP に昇格して操作を行う といった方法を取ることで、リスクを最小限に抑えることができます。
rootアカウントのログインを禁止するには下記の様に記述する事で設定可能です。
PermitRootLogin no
rootアカウントのパスワード認証のみを禁止し公開鍵認証の利用を許可する場合は以下の様に設定します。
PermitRootLogin prohibit-password
アクセス制限を行う #
最後にご紹介するのはアクセス制御をかける方法です。
OpenSSH では、特定のユーザーやグループのみに接続を許可することで、不必要なアカウントからのアクセスを防ぎ、セキュリティリスクを大幅に下げることができます。
たとえば、運用に必要なユーザーのみに制限をかけることで、万が一他のアカウントが乗っ取られてもSSH
経由での不正アクセスを防ぐことができます。
許可するユーザーの指定は下記の様に設定する事が出来ます。
AllowUsers user1 user2 user3
上記設定では「user1
」「user2
」「user3
」のユーザーのみSSHを許可する設定となります。
許可するグループの指定は下記の様に設定する事が出来ます。
AllowGroups Group1 Group2 Group3
上記設定では「Group1
」「Group2
」「Group3
」のグループに所属しているアカウントのみSSHを許可する設定となります。
サービスの再起動 #
SSHの設定変更が完了したらサービスの再起動が必要となります。
今回は「Rocky Linux 9
」を利用している為、「systemctl
」コマンドにより再起動を実施します。
適切な設定が行われている事を確認し下記コマンドを実行してください。
systemctl restart sshd
以上で設定完了となります。