SSHリバースプロキシ/リダイレクト

SSHリバースプロキシ/リダイレクト

私のユースケースに合ったソリューションを探しています。 SSHデーモンをデフォルト以外のポートに移動し、すべてのスクリプトキディがSSHフィートのポート22を介して私のSSHに接続できるようにしたいと思います(純粋に明確にするため)。安全対策ではなく伐採をし、人生に喜びを加えるため)。

しかし、SSHポートの指定を許可しないいくつかのgitクライアントに会いました。 gitのssh操作を放棄し、ポート9418でgitプロトコルのみを使用することに加えて、特定のルールに一致するプロキシクライアントをリダイレクト/逆方向に使用したいと思います(user=git OR pubkey_auth=true)。

  1. クライアントとSSHデーモン間の中間子接続なしでこれらのSSH要求を転送できますか?
  2. ハンドシェイクが完了して接続が確立されるまで、オブザーバにユーザーまたは認証方法に関する情報が表示されますか?
  3. サービスが接続を許可してから、そのサービスとローカルサービスの間に別の暗号化されたトンネルを確立する必要がある場合でも、どのようなサービスを見つける必要がありますか? SSHトンネル、リバースプロキシ、SSH多重化?

主にIPTABLES、リバースSSHトンネリング、またはsshpiperを使用してトラフィックを分割するいくつかのリソースを検索しましたが、送信元IPに関係なく定義されたクライアントに対してのみSSHトラフィックをフィルタリングする方法はありません(sshpiperは有望に見えますが、見てみましょう。)

トラフィックを増やすために、ポート2222のサーバーにSSHで接続することができ、Tarpitポートをインターネットに公開することもできます。いくつかのgitクライアントのデフォルトの動作を説明しようとしています。

(下図の可視化)

       INTERNET
   SSH to │port 22
┌───────────────────┐    If user matches,    ┌────────────────────────┐
│                   │ forward the connection │                        │[email protected]  ├────────────────────────►  SSH Daemon Port 2222  │
│                   │                        │                        │
└─────────┬─────────┘                        └────────────────────────┘
┌─────────▼─────────┐   Send everyone else   ┌────────────────────────┐
│                   │    to the SSH tarpit   │                        │
│   *@example.com   ├────────────────────────►  EndleSSH @ Port 2022  │
│                   │                        │                        │
└───────────────────┘                        └────────────────────────┘

関連情報