開発者ドキュメント

LinuxVPSでSSHデーモン構成を調整する方法

序章

SSHは、コマンドラインを介してリモートのLinuxおよびUnixライクなサーバーに接続するための主要な方法です。 これは、コマンドの実行、システムとの対話、さらには無関係のトラフィックのトンネリングに使用できる安全な接続を提供します。

ほとんどのユーザーは、開始方法の基本と、次のようなコマンドを使用してリモートサーバーに接続する方法を知っています。

sshユーザー名@remote_server

ただし、SSHデーモンの構成には、セキュリティの強化、ユーザー接続の管理などに役立つオプションが他にもたくさんあります。 SSHアクセスをよりきめ細かく制御するために利用できるいくつかのオプションについて説明します。

これらの概念をUbuntu12.04VPSインスタンスでデモしますが、最新のLinuxディストリビューションも同様に機能するはずです。

SSHD構成ファイルの調査

SSHデーモン自体の主な構成ソースは、/etc/ssh/sshd_configファイルにあります。 これは、クライアント側のデフォルトを指定するssh_configファイルとは異なることに注意してください。

管理者権限で今すぐファイルを開きます。

sudo nano /etc/ssh/sshd_config

かなりの数のオプションと、うまくいけば(ディストリビューションによっては)多くのコメントが含まれたファイルが表示されます。 ほとんどのディストリビューションは、適切なデフォルトを確立するのにかなり良い仕事をしていますが、改善とカスタマイズの余地があります。

Ubuntu12.04のファイルにすでに設定されているオプションのいくつかを見てみましょう。

ポートとプロトコル

キーと分離

ロギングと制限

画面

接続と環境

これにより、Ubuntu12.04マシンでデフォルトで有効になっているオプションが処理されます。 次に、設定または変更するのに役立つ可能性のある他のいくつかのオプションについて説明しましょう。

その他のSSHDオプション

SSHデーモンに設定できるオプションは他にもたくさんあります。 これらの中には、すぐに役立つものもあれば、特定の状況でのみ役立つものもあります。 ここではすべてのオプションについて説明するわけではありませんが、有用なオプションのいくつかについて説明します。

ユーザーとグループのフィルタリング

一部のオプションでは、SSHを介してログインできるユーザーを正確に制御できます。 これらのオプションは、相互に排他的であると見なす必要があります。 たとえば、AllowUsersオプションは、他のすべてのユーザーがアクセスを拒否されることを意味します。

さらに、利用可能な他のいくつかの制限オプションがあります。 これらは、上記のオプションのいずれかと組み合わせて使用できます。

その他のオプション

SSHデーモンが注意を払うネットワークトラフィックを構成するために使用できるオプションがいくつかあります。

使用可能な他のタイプのオプションは、証明書ベースの認証のセットアップに使用されるオプション、ClientAliveCountMaxClientAliveIntervalなどの接続制限オプション、およびChrootDirectoryなどのオプションです。 ]。これを使用して、ログインしているユーザーを特定の事前構成されたchroot環境にロックできます。

ユーザーログインの制限

ユーザーとグループへのアクセスを制限するために必要なツールのいくつかについては、上記で説明しました。 ここでもう少し詳しく見ていきましょう。

これらを使用するための最も基本的な構文は次のようなものです。

AllowUsers demouser fakeuser madeupuser

ご覧のとおり、これらのディレクティブのそれぞれで、スペースで区切られた複数のユーザーを指定できます。

ワイルドカードを使用してエントリを無効にすることもできます。 たとえば、ユーザー「john」以外のすべてのユーザーにログインを許可したい場合は、次のように試すことができます。

AllowUsers * !john

この特定の例は、おそらくDenyUsers行でより適切に表現されます。

DenyUsers john

?文字を使用して、1文字に完全に一致させることもできます。 たとえば、次のように使用できます。

AllowUsers ?im

これにより、「tim」、「jim」、「vim」などのアカウントからのログインが可能になります。

ただし、より具体的にすることができます。 どちらのユーザー仕様でも、ログインを特定のクライアントソースの場所に制限するために、フォームuser@hostnameを使用できます。 たとえば、次のようにすることができます。

AllowUsers demouser@host1.com fakeuser

これにより、「fakeuser」はどこからでもログインできますが、「demouser」は特定のホストからのみログインできます。

TCPラッパーを介して、sshd_configファイルの外部でホストごとにアクセスを制限することもできます。 これは、/etc/hosts.allowおよび/etc/hosts.denyファイルを介して構成されます。

たとえば、hosts.allowファイルに次のような行を追加することで、SSHトラフィックに特に基づいてアクセスを制限できます。

sshd: .example.com

hosts.denyファイルに次のようなコンパニオン行があると仮定します。

sshd: ALL

これにより、ログインはexample.comまたはサブドメインからのログインに制限されます。

一致オプションを使用して例外を追加する

「一致」オプションを使用すると、オプションをさらに制御できます。 一致オプションは、次のオプションを適用するかどうかを決定する基準パターンを指定することで機能します。

Matchオプションを使用して一致を開始し、基準のキーと値のペアを指定します。 使用可能なキーは、「ユーザー」、「グループ」、「ホスト」、および「アドレス」です。 条件はスペースで区切り、パターン(user1、user2)はコンマで区切ることができます。 ワイルドカードと否定を使用することもできます。

Match User !demouser,!fakeuser Group sshusers Host *.example.com

上記の行は、ユーザーがdemouserまたはfakeuserでない場合、ユーザーグループsshusersのメンバーである場合、およびそれらがexample.comまたはサブドメインから接続しています。

「アドレス」基準では、CIDRネットマスク表記を使用できます。

Match仕様に従うオプションが条件付きで適用されます。 これらの条件付きオプションの範囲は、ファイルの終わりまで、または次の一致する仕様までです。 このため、デフォルト値をファイルの上部に配置し、例外を下部に配置することをお勧めします。

この条件付きブロックのため、一致の下のオプションは、上記の一致でのみ適用されることを示すためにインデントされることがよくあります。 たとえば、上記の条件では、次のようにその下にブロックを含めることができます。

Match User !demouser,!fakeuser Group sshusers Host *.example.com
    AuthorizedKeysFile /sshusers/keys/%u
    PasswordAuthentication yes
    X11Forwarding
    X11DisplayOffset 15

一致仕様を処理する場合は、オプションのサブセットにのみアクセスできます。 完全なリストを表示するには、sshd_configのマニュアルページを確認してください。

man sshd_config

「一致」セクションを検索して、使用可能なオプションのリストを確認してください。

結論

ご覧のとおり、SSHのサーバー側で多くの値を調整して、ユーザーのログイン機能とエクスペリエンスの品質に影響を与えることができます。 エラーをキャッチし、制限が誤って少なすぎたり多すぎたりするユーザーに影響を与えていないことを確認するために、大規模な実装の前に変更を注意深くテストしてください。

/etc/ssh/sshd_configファイルに精通することは、サーバーへのアクセスを注意深く制御する方法を理解するための優れた最初のステップです。 これは、Linuxシステム管理者にとって重要なスキルです。

ジャスティン・エリングウッド
モバイルバージョンを終了