2つの異なる認証方式を使用してSSHで2つのポートを開くことはできますか?

2つの異なる認証方式を使用してSSHで2つのポートを開くことはできますか?

現在、SSHキーを使用してネットワーク外でのみアクセスでき、rootまたは他のユーザー名/パスワードの組み合わせからアクセスできないようにSSHサーバーを設定しようとしています。

一方、ネットワーク内の内部ユーザーはまだ同じシステムに接続できるはずですが、ユーザー名とパスワードを使用してより伝統的な方法でログインする必要があります。

外部ユーザーと内部ユーザーの両方がPuttySSHを使用してWindowsからシステムにアクセスし、外部アクセスは55000などのランダムに選択された高い番号のポート(または他の管理者によって決定されます)

下の画像はトラフィックをよりよく示しています。

SSH設定

キーのみを使用するように実際のログインを設定する方法とルートを拒否する方法を知っていますが、これら2つのログインタイプを区別する方法はわかりません。

私は2つのSSHDコピーを実行し、同じIPの異なるポートでリッスンし、各ポートに2つの異なる設定を提供することを検討しました。

また、「一致」ルールの設定も検討しましたが、これらのオプションを使用してサーバー全体の構成を分離できるかどうかはわかりません。

最後にログインする外部の人は常に同じユーザーです。この質問の目的に応じて「Frank」と呼びます。したがって、「Frank」は外部IPでのみログインが許可され、実際には決して前に座っていません。内部A接続システムの場合、システムの他のすべてのユーザーは内部でのみ接続され、外部IPでは接続されません。

彼が接続するFranks IPは動的に割り当てられますが、彼が接続するパブリックIPも固定され変更されず、ポートフォワーダの内部IPも変更されず、SSHサーバーの内部IPアドレスも同様です。

内部クライアントは、常に内部SSHサーバーIPが属し、16ビットマスクのプライベートネットワーク範囲内のIPから接続します(EG:192.168.0.0/16)。

1つの構成ファイルと1つのSSHサーバーインスタンスを使用してこの設定は可能ですか?では、どうすればよいですか?

または

構成が異なる2台の実行中のサーバーを使用する方が良いですか?

参考までに、SSHサーバーはUbuntu 18.04で実行されています。

ベストアンサー1

それで、答えは実際に考えたよりもはるかに簡単であることがわかりました。

しかし、彼のコメントについて「@jeff schaller」に感謝しなければなりません。彼がいなければ、SSHの「一致」構成がどのように機能するかを調査し始めなかったでしょう。

それでも

秘密は、/etc/ssh/sshd_configファイルを外部インターネット接続からアクセスするために必要なデフォルト設定に設定することです。

私の場合は、以下を設定することを意味しました。

PermitRootLogin no
PasswordAuthentication no
UsePAM no

これにより、どこから来たかに関係なく、すべてのログインにSSHキーを使用するキーベースのログインが必要になります。

その後、Windowsシステムでは、「PuttyGen」を使用して、外部ユーザーのホームディレクトリにある「authorized_hosts」ファイルの対応するSSHエントリとともに、ディスクに保存された公開/秘密鍵のペアを作成しました。

このSSHキーをユーザーのホームフォルダの正しい場所に貼り付けてから、PuttyGenによって作成された個人(ppk)ファイルを使用してログインし、プロファイルを保存するようにputtyを設定しました。

次に、設定ファイルを保存し、セキュリティ方式(パスワードで保護されたzipファイルが添付された暗号化された電子メール)を使用して、そのファイルとppkキーファイルを外部ユーザーに送信しました。

ユーザーがパテのコピーにppkファイルと設定ファイルを持ってログインできる場合は、sshd_configファイルの最後の2行に次を追加します。

Match Host server1,server1.internalnet.local,1.2.3.4
    PasswordAuthentication yes

「一致」行では、サーバー名を保護するためにサーバー名を変更しました。

各サーバードメインはコンマで区切られ、スペースがないことに注意することが重要です。ここにスペースを入れると、SSHDは設定を読み込めずにエラーを報告するため、そこにある3つの一致は次のことを行います。

サーバー1- ドメインなしで「server1」のみを使用してEGに接続するすべての人と一致:「fred@server1」

server1.internalnet.local- 完全修飾内部ドメイン名EGを使用しているすべての人と一致します。[Eメール保護](注:これを行うには内部DNSが必要です。)

1.2.3.4- SSHサーバーに割り当てられた特定のIPアドレスと一致します。 EG: '[Eメール保護]'これはワイルドカードを使用するか、より良いネットワーク/マスクcidr形式(EG:1.2。*または192.168.1.0/8)を使用して実行できます。ワイルドカードを使用している場合は、以下のfchurcaの回答を読んでいくつかの重要な説明を確認してください。

提供されたパターンのいずれかがアクセスしているホストと一致する場合、実行中の構成に対する唯一の変更は、対話型パスワードログイン機能を再度有効にすることです。

一致リストにリストされている内部ホストの電源を入れる他の設定ディレクティブをここに配置することもできます。

しかし、次の内容をお読みください。

https://man.openbsd.org/OpenBSD-current/man5/ssh_config.5

一致ブロック内ですべての設定オプションが許可されるわけではありません。 PAM認証を再びオンにするために「UsePAM yes」を試みたときにこれが見つかりましたが、これは許可されていないという明示的な指示のみを受け取りました。

変更したら、次のように入力してください。

sshd -T

その後、サーバーを再起動する前に戻ってテストすると、発生したエラーが報告されます。

上記に加えて、次の2つのリンクを介して多くの助けを受けました。

https://raymii.org/s/tutorials/Limit_access_to_openssh_features_with_the_Match_keyword.html

https://www.cyberciti.biz/faq/match-address-sshd_config-allow-root-loginfrom-one_ip_address-on-linux-unix/

おすすめ記事