私のシステムに出てくるSSHトンネルがある場合は、セキュリティへの影響を理解するのに役立ちます(危険は何ですか?セキュリティの脆弱性ですか?)。
内部システムのポート8080をリモートホストの8080に転送するには、次のコマンドを使用しています。 localhost:8080へのトラフィックをポート8080のリモートホストに転送できるようにしたいです。
ssh -f -N -L 8080:<remote_ip>:8080 user@<bastion_host>
私がやっていることの図は次のとおりです。
------------ --------- ------------------
| remote:8080| <--- | bastion | <----- |internal host:8080|
------------ --------- ------------------
私の質問は次のとおりです。
- リモートシステムの潜在的な攻撃者が既存のポート転送トンネルを悪用して内部ホストにアクセスする可能性はありますか?
- これはTCP接続なので、攻撃者が使用できる内部ホスト用のソケットはありますか?
これが可能かどうかを防ぐために、sshに保護装置があるかどうか疑問に思います。
ありがとうございます!
答え1
はい、可能です。たとえば、攻撃者はリモートホストで受信ポート 8080 を制御し、内部ホストから接続しているすべてのプログラムにデータを返すことで、そのプログラムが悪用可能な方法で失敗する可能性があります。これはすべてのネットワーク接続に当てはまります。
ネットワーク接続は、内部ホストがSSHクライアントによって公開された受信ポートに接続されている場合にのみ存在します。内部ホストに接続されているリモートホストには、恒久的に開いているポートはありません。さらに、要塞ホストのSSHサーバーはリモートホストに公開されません。
いいえ、返されたソケットはありません。攻撃者は内部ホストの代わりに開かれたTCPセッションで「ヒッチハイキング」する必要があり、これらのヒッチハイキングは(脆弱性を悪用することに加えて)TCPセッションの範囲に制限され、ホストの他のポートにはアクセスできません。内部ホストまたは要塞ホスト。
ローカル・バインド・アドレスを明示的に作成して、ローカル構成の変更への依存を減らすことができます。
ssh -f -N -L localhost:8080:<remote_ip>:8080 user@<bastion_host>
これにより、内部ホストで受信されたポートがlocalhostにバインドされ、内部ホスト自体で実行されているプログラムからのみアクセスできます。 (このホストのすべてのユーザーがアクセスできます。)