この記事ではSSHサーバーを建てたら最低限設定しておいた方が良いセキュリティ設定を紹介します。
前提知識
SSHサーバーの設定ファイル
SSHサーバーの設定ファイルは「/etc/ssh/sshd_config 」です。ここで紹介するパラメータは全てこのファイルに記述します。
紹介するパラメータはsshd_configに元々記載されているものもあれば、記載がないものもあるかもしれません。記載がない場合は新たにパラメータ(とその値)を追記します。
設定値の確認
設定値を変更したら、正しく設定されているか確認しましょう。それには次のコマンドを実行します。
# sshd -T
またSSHサーバーは設定のデフォルト値を持っています。デフォルト値を使う場合は、sshd_configに明示的に設定を記述しなくても大丈夫です。デフォルト値も上述のコマンドで確認しておきましょう。
設定の反映
sshd_configファイルを編集しただけではSSHサーバーに設定は反映されません。設定を反映させるには次のようにSSHサーバーを再起動します。
# systemctl restart sshd
SSHサーバーのセキュリティ設定
この記事で紹介するパラメータの概要は次の通りです。細かい説明はこの後おこないます。
# XXXは任意の数字。SSHのポート番号の変更 Port XXX # SSHバージョン2のプロトコルのみを使用 Protocol 2 # rootユーザーでのログインを禁止 PermitRootLogin no # 公開鍵認証でのログインを使用可能にする PubkeyAuthentication yes # 空のパスワードを禁止 PermitEmptyPasswords no # パスワード認証のログインを禁止 PasswordAuthentication no # チャレンジレスポンス認証方式のログイン認証を禁止 ChallengeResponseAuthentication no
SSHで使用するポート番号の変更
SSHはウェルノウンポートである22番ポートで通信します。文字通りポート番号は既知なので攻撃を受けやすい。可能であれば変更した方が良いでしょう。変更する場合のポート番号は慎重を期すなら49513~65535の間で他に使用されていないものから選ぶと良いでしょう。
ポート番号を変更したらファイアーウォールで22番ポートを閉じて、新しいポートを開放することを忘れずに。
Port 50022
SSHのプロトコルをバージョン2のみに制限する
SSHのプロトコルのバージョンは1と2があります。両方のバージョンをサポートする場合は「2,1」のようにカンマで区切って指定します。しかしバージョン1は脆弱性があるので使わない方が良いです。次のように設定することでバージョン2だけを使用します。
Protocol 2
なお、OpenSSH 7.4からはバージョン1はサポートされなくなったので、Protocolパラメータ自体が無くなったようです。
rootユーザーでのログインを禁止する
rootユーザーでログインできると、万が一ログイン情報が攻撃者に漏洩すると、攻撃者はなんでもできてしまいます。rootユーザーでのログインは禁止した方が良いでしょう。それには次のように設定します。
PermitRootLogin no
公開鍵認証でのログインを使用可能にする
SSHのログインの際はユーザー認証が行われ、正当な利用者かどうかが検証されます。ユーザー認証には主にパスワード認証と公開鍵認証の二つがあります。 一般にパスワード認証より公開鍵認証の方がセキュリティが高いとされています。公開鍵認証の説明や設定方法は「SSH 公開鍵認証でログインするための設定」で説明しているので、詳しくはそちらを参照してください。
PubkeyAuthentication yes
空のパスワードの使用を禁止する
空のパスワードがいい理由は何一つない。空のパスワードは禁止しましょう。
PermitEmptyPasswords no
パスワード認証でのログインを禁止する
ログインに公開鍵認証だけ使う場合、パスワード認証は禁止しても良いでしょう。その場合は次のように設定する。
PasswordAuthentication no
チャレンジレスポンス認証のログインを禁止する
「PasswordAuthentication no」と設定してもチャレンジレスポンス認証方式のパスワード認証が使える設定になっているかもしれません。 この方式も禁止する場合は次のように設定します。
ChallengeResponseAuthentication no
おわりに
いかがでしたでしょうか。ここで紹介した少しでも皆様の参考になったなら幸いです。