私のSSHサーバーのこの設定は私のローカルネットワークのルートアクセスに適していますか?

私のSSHサーバーのこの設定は私のローカルネットワークのルートアクセスに適していますか?

意図

私のサーバーへのSSHルートアクセスを許可したいのですが、セキュリティ上の理由からローカルネットワークでのみ可能です。

環境

  • オペレーティングシステム:GNU / Linux Debian 9 Stretchが完全に更新されました。
  • SSH: OpenSSH バージョン 1: 7.4p1-10+deb9u3。

プログラム

  1. デフォルト設定ファイルから:

    /etc/ssh/sshd_config
    

    直接ルートアクセスを許可しないグローバルラインを削除しました。つまり、

    PermitRootLogin no
    

    次のように設定します。

    # root is allowed from local network only
    Match Address 192.168.0.*
        PermitRootLogin yes
    
    # otherwise you need to log in as a user
    Match all
        PermitRootLogin no
    
  2. 一時的にパスワードアクセスを有効にしました。

    PasswordAuthentication yes
    
  3. ルートアカウントの秘密鍵と公開鍵のペアを作成しました。

    ssh-keygen -t rsa -b 8192
    

    もちろん、rootとしてログインした時です。

  4. その後、クライアントのラップトップで次のように公開鍵をコピーしました。

    ssh-copy-id [email protected] -p yyyyy    # I have hidden the port number and ip
    
  5. その後、公開鍵を使用してルートとして自分のサーバーに正常にログインできたため、パスワードアクセスを無効にしました。

    # use only public key, never a password
    PubkeyAuthentication yes
    PasswordAuthentication no
    AuthenticationMethods publickey
    

質問

ローカル以外のコンピュータが自分のサーバーにログインしようとするのを防ぐために必要なすべての手順に従いましたか?

まだ提案していない場合は、提案を詳しく説明してください。

答え1

ローカル以外のコンピュータが自分のサーバーにログインしようとするのを防ぐために必要なすべての手順に従いましたか?

サーバーにログインしようとするのをブロックします。rootユーザーとして。したがって、これは異なります:

  1. 2 番目のアカウントに SSH キーを追加する場合。
  2. これらのメンテナンスフェーズ中に一時的にパスワードログインを有効にします。インターネット上でネットワーク接続を大まかに中断しない限り、ステップはその内容に言及していないことがわかりました。

上記の問題を解決したい場合は、コードを直接書くほうが良いでしょう。たとえば、1行ですべてのユーザーのログインを制御できるとします。これにより、インターネットベースのパスワード推測攻撃に「一時的に」公開される必要がなくなります。 :-).

AllowUsers *@192.168.0.*

ただし、SSHデーモンの構成に依存してはいけません。なぜこのポリシーが中央ファイアウォールで実施されないのかを尋ねるべきです。 たとえば、ローカル以外のログインを望まない場合は、SSHサーバーの事前認証コードでwhat-ifエラーに自分自身を公開する必要はありません。

私は不要な提案を1つだけに制限します。ホスト名をIPv6アドレスに解決するためにローカルシステムを変更すると、意図しないことがあっても驚くことがあります。上記はIPv6アドレスへの接続を許可していないからです:)純粋に中央ファイアウォールにのみ依存していても、それを心配する必要はありません。

最も簡単なネットワーク構成は、ローカルネットワークをインターネットトラフィック(およびゲストワイヤレスネットワークなどの他のトラフィック)から分離する集中型ファイアウォールを保持することです。特別な理由がない限り、インターネット接続をブロックします。

これは、家庭/小規模企業ルーターのデフォルト設定に標準化されています。 (これらのデバイスは非常に安価でセキュリティが脆弱であるため、これらの仮定を検証する必要があります。この特定の問題は、活動家にとって非常に顕著な問題です)。するただし、一部のデバイスは、IPv6が最初に実装されたときに「間違った」選択を行うことが知られています。

もちろん、必要に応じてホスト自体に「冗長」ファイアウォールを設定することもできます。たとえば、「デフォルトでポートが開かない」ポリシーを適用するのに役立ちます。Ubuntuまたはダーバン。欠点は、ファイアウォールが壊れたときに記憶、構成、およびトラブルシューティングが難しいということであり、2つの別々のファイアウォールがあるということです! 1つから2つに移動すると、純粋なサーバーアプリケーション(SSHなど)または最も信頼性の高い一部のバリエーション用に設計されていないP2Pアプリケーションの使用を開始するたびに、かなりの複雑さが追加されます。パンチ穴

次に、簡単なネットワーク構成はsshdを介して冗長性オプションを追加することですListenAddress。一部のIPv6サポートを追加するには、ルータがグローバルにルーティング可能なアドレスだけでなく、一意のローカルアドレスを割り当て、一意のローカルアドレスを受信して​​いることを確認できます。 IPv6がある場合、特定の「使用」を強制すると、ListenAddressかなりのセキュリティマージンが追加されます。これはIPv4しかなかった時代とは異なり、NATのためにインターネットがサーバーを攻撃することができませんでした。

  1. あなたのサーバーはルーターです。
  2. モデム+ルーターコンボではなく純粋なモデムを使用している場合
  3. 少なくとも1つ以上の部屋を借りた。追加サーバーに割り当てられたグローバルIPアドレス。

通常、ファイアウォールを使用することは依然として意味がありますが(特定の例外は覚えていません)、このようなものをListenAddress2番目の安全限界として扱います。

サーバー自体のIPアドレスを使用するだけでなく、範囲記載されている技術の中で最も理想的なIMOです。 :).

関連情報