開発者ドキュメント

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

序章

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

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

ssh username @ 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」は特定のホストからのみログインできます。

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

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

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システム管理者にとって重要なスキルです。

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