SSHサーバーの設定

リモートログインを正しく受け付けるためにも、正しい設定が必要となります。【連載コラム:Linuxシステム管理標準教科書を読む(8)】

最終更新日:2024年07月19日

Linuxの基本的なスキルを習得したら、Linuxサーバーをシステムとして長期に運用管理していくためのスキルを身につけるのはいかがでしょうか。このコラムでは、「Linuxシステム管理標準教科書」の全体調整を担当した筆者が改めて大切なポイントを解説していきます。

SSHサーバーは、リモートからのログインを受け付けるため、適切な設定を行わないと逆にセキュリティの穴になりかねません。考慮すべき設定のポイントについて確認しておきましょう。


rootの取り扱いを決める

まず、rootの取り扱いをどのようにするか方針を決めて、その上でSSHサーバーの設定を行う必要があります。

rootで直接リモートログイン

rootで直接リモートログイン可能にしておくと、総当たり攻撃が可能になってしまいます。公開鍵認証のみを有効にし、パスワード認証は行えないようにしておく必要がありますが、最近のディストリビューションでは最初からrootによる直接のリモートログインは無効にされていることがほとんどです。

一般ユーザーでリモートログインしてsuコマンド、sudoコマンドを使う

一般ユーザーでリモートログインして、suコマンドでrootになったり、sudoコマンドでroot権限でコマンドを実行する方法です。現在ではほとんどのディストリビューションがデフォルトでこの方法をとっています。そのため、初期ユーザーを作成し、そのユーザーに管理者権限を与える(多くの場合wheelグループに所属)ことになります。

SSHサーバーの設定

SSHのサーバーでは、rootログインの許可と、パスワード認証の許可、この2点を設定する必要があります。設定ファイルsshd_configを修正します。

rootログインの許可

まず、rootでのログインができないようにするため、PermitRootLoginを設定します。以下はAlmaLinux 9.3での設定例です。

#PermitRootLogin prohibit-password

#でコメントアウトされているのはデフォルトの設定が適用されている、という意味です。

prohibit-passwordという設定がデフォルトで適用されています。これは公開鍵認証とGSSAPI認証(Kerberos認証など)のみ許可し、パスワードやキーボードインタラクティブ認証(2要素認証など)を禁止する、という設定です。この設定だと公開鍵認証はOKになるので、もし厳密にrootによるログインを禁止したいのであれば、設定をnoにしておきます。コメントアウトを外すのも忘れないようにしてください。

#PermitRootLogin prohibit-password
PermitRootLogin no

パスワード認証の許可

パスワード認証の許可は、PasswordAuthenticationで行います。

#PasswordAuthentication yes

デフォルトではパスワード認証は許可されています。公開鍵認証で管理権限を持つ一般ユーザーがログインできているのであれば不要な設定になるので、noに設定しておきます。

#PasswordAuthentication yes
PasswordAuthentication no

設定を行ったら、SSHサーバーは再起動して設定を適用しておきます。

追加の設定ファイルの確認

一部のディストリビューションでは、sshd_config以外に設定ファイルを読み込んでいる場合があります。Include設定で参照されている設定ファイルに認証関係の設定が行われている場合があるので注意してください。

Include /etc/ssh/sshd_config.d/*.conf

この設定では、/etc/ssh/sshd_config.dディレクトリ以下にある拡張子.confの設定ファイルを追加で読み込んでいます。確認してみましょう。

$ sudo ls /etc/ssh/sshd_config.d/
50-redhat.conf

$ sudo cat /etc/ssh/sshd_config.d/50-redhat.conf
# This system is following system-wide crypto policy. The changes to
# crypto properties (Ciphers, MACs, ...) will not have any effect in
# this or following included files. To override some configuration option,
# write it before this block or include it before this file.
# Please, see manual pages for update-crypto-policies(8) and sshd_config(5).
Include /etc/crypto-policies/back-ends/opensshserver.config

SyslogFacility AUTHPRIV

ChallengeResponseAuthentication no

GSSAPIAuthentication yes
GSSAPICleanupCredentials no

UsePAM yes

X11Forwarding yes

# It is recommended to use pam_motd in /etc/pam.d/sshd instead of PrintMotd,
# as it is more configurable and versatile than the built-in version.
PrintMotd no

いくつかの設定は、sshd_configではコメントアウトされているため、こちらの設定ファイルの明示的な設定が有効になります。sshd_configだけを見ていると設定がうまく適用されないケースが出てくるので注意が必要です。

SSHサーバーの設定確認

設定ファイルが分割されているため、適切に設定されているかどうかがわからない場合があります。SSHサーバーの設定を確認するには、sshd -Tコマンドを実行します。

[admin@host2 ~]$ sudo sshd -T
port 22
addressfamily any
listenaddress [::]:22
listenaddress 0.0.0.0:22
usepam yes
(略)

たとえば、usepamはデフォルトではnoですが、上記別ファイルでyesに設定されているため、最終的にはyesに設定されていることがわかります。


筆者紹介
宮原 徹 氏

宮原 徹 氏

株式会社びぎねっと

Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。

<Linuxシステム管理標準教科書とは>

Linuxシステム管理標準教科書」(システム管理教科書)は2015年4月にリリースされた標準教科書シリーズの1冊です。Linuxシステムの運用管理という観点で書かれており、システム管理者という業務において知っておかなければならない基本的なトピックが解説されています。「Linux標準教科書」「Linuxサーバー構築標準教科書」でコマンド操作やサーバー構築の基本を学んだら、このシステム管理教科書を読んで、単にLinuxを使うのではなく、システムとして長期的に管理運用していくためのスキルを身につけてください。

バックナンバー

第7回:SSHによるリモートログイン
第6回:ファイルシステムの管理
第5回:サービスの管理
第4回:ネットワークの管理
第3回:root権限の管理

ページトップへ