多くの企業は、Secure Shell(SSH)アクセス可能なジャンプサーバーを使用して、ビジネスクリティカルなシステムにアクセスしています。管理者は、ターゲットシステムに接続する前に、最初にSSHを使用して(場合によってはVPNを介して)ジャンプサーバーに接続します。この方法は、管理者がコマンドライン管理に固執している限り、通常はうまく機能します。管理者がコマンドライン領域から抜け出し、代わりにWebベースのインターフェイスを使用したい場合は、もう少し注意が必要です。
次のシナリオを見てみましょう。ボブはSecurecorpのシステム管理者であり、 sirius.securecorp.ioで構成されるデータベースクラスターを示すアラートを受け取りました。 およびorion.securecorp.io パフォーマンスが悪い。最初の分析では、彼は通常RHEL8Webコンソールを使用します。ファイアウォールでは、ワークステーションからこのシステムに直接接続することはできませんが、 bastion.securecorp.ioというジャンプサーバーを経由することはできます。 。
[お楽しみいただけるかもしれません:システム管理者向けの6つの重要なSSHガイド]
データベースクラスターへのSSHコマンドラインアクセスは簡単です:
[bob@workstation ~]$ ssh bastion.securecorp.io
[bob@bastion ~]$ ssh sirius.securecorp.io
[bob@sirius ~]$
[bob@workstation ~]$ ssh bastion.securecorp.io
[bob@bastion ~]$ ssh orion.securecorp.io
[bob@orion ~]$
しかし、ボブが sirius.securecorp.ioのRHEL8Webコンソールにアクセスしたい場合はどうでしょうか。 およびorion.securecorp.io ? SSHを使用してこの目標を達成するには複数の方法があり、すべて何らかのポート転送が含まれます。
免責事項 :一部の組織では、セキュリティポリシーでポート転送が許可されていません。ルールに違反しないようにするには、ITセキュリティ担当者に相談してください。
SSHポートフォワーディング
ボブはSSHを使用して、両方のシステムのTCPトンネルを開き、 sirius.securecorp.io のWebコンソールポート(9090)をポイントします。 orion.securecorp.ioのポート9091 。
[bob@workstation ~]$ ssh -L 9090:sirius.securecorp.io:9090 bastion.securecorp.io
[bob@bastion ~]$
[bob@workstation ~]$ ssh -L 9091:orion.securecorp.io:9090 bastion.securecorp.io
[bob@bastion ~]$
ボブは、ローカルワークステーションのブラウザで https:// localhost:9090を指定できるようになりました。 sirius.securecorp.ioのWebコンソールにアクセスするには 、および https:// localhost:9091 orion.securecorp.ioのWebコンソールにアクセスするには 。
このアプローチは特定の場合にうまく機能する可能性がありますが、制限があります:
- TLS証明書の検証:ほとんどの場合、証明書の共通名がアドレスバー(localhost)のホスト名と一致しないため、ローカルブラウザーは不満であり、証明書の検証は失敗します。
- リダイレクト:アクセスしているWebサイトが別のURLにリダイレクトすると、ポート転送はこのWebサーバーに対してのみ有効であるため、接続は失敗します。この状況は、たとえばシングルサインオン(SSO)を使用する場合に問題になる可能性があります。
ジャンプサーバーでブラウザを起動します
ボブはまた、ジャンプサーバーでFirefoxなどのブラウザを起動し、ワークステーションにローカルに表示することもできます。 SSHは、この状況で使用できるX転送と呼ばれる機能を提供します。
[bob@workstation ~]$ ssh -X bastion.securecorp.io
[bob@bastion ~]$ firefox https://sirius.securecorp.io:9090 &
[bob@bastion ~]$ firefox https://orion.securecorp.io:9090 &
この方法を使用すると、ブラウザプロセスはジャンプサーバー上で実行され、 sirius.securecorp.ioのWebコンソールへの接続が実行されます。 およびorion.securecorp.io 許可されています。ボブのワークステーションでは、ブラウザウィンドウのレンダリングのみが行われます。
このアプローチはプレーンSSHポート転送のいくつかの問題を解決しますが、制限もあります:
- パフォーマンス:この方法は通常、グラフィック出力をネットワーク経由でジャンプサーバーからワークステーションに転送する必要があるため、パフォーマンスがかなり低くなります。これは非常に非効率的です。
- 前提条件:Firefoxなどのブラウザがジャンプサーバーにインストールされている必要があり、Xサーバーがワークステーションで実行されている必要があります。
ダイナミックポートフォワーディングを入力
前の2つのアプローチを検討し、それらの欠点について学んだので、両方の長所をもたらす3番目のオプションがあると便利です。
- ワークステーションのブラウザを使用できます。
- 接続性とDNS名の解決は、ジャンプサーバーの場合と同じである必要があります。
これを実現するために、SSHは動的ポート転送と呼ばれる機能を提供します 、SOCKSプロトコルを活用します。この構成では、SSHはSOCKSプロキシとして機能し、SSH接続を介して関連するすべてのトラフィックを中継します。これを行うには、クライアント(この例ではブラウザ)がSOCKSに対応している必要があります。
ボブは、次のように動的ポート転送を使用してSSHセッションを開始できます。
[bob@workstation ~]$ ssh -D 1080 bastion.securecorp.io
[bob@bastion ~]$
その後、ボブのワークステーションのブラウザをSOCKS対応にする必要があります。 Firefoxの設定は次のように実行できます:
- ブラウザでabout:preferencesを指定します。
- 一般 タブをクリックし、下部を下にスクロールして、[設定... ]をクリックします ネットワーク設定 セクション。
- 接続設定 ウィンドウで、手動プロキシ設定を選択します 、 localhostを指定します SOCKSホストの場合 、 1080 ポートとして、 SOCKS v5を選択します 。
- 同じウィンドウで、SOCKSv5を使用する場合はプロキシDNSを選択します 。
ボブはブラウザでhttps://sirius.securecorp.io:9090を指定できるようになりました およびhttps://orion.securecorp.io:9090 RHEL8Webコンソールを使用して彼の2つのデータベースサーバーのパフォーマンスの問題を分析します。また、ブラウザが bastion.securecorp.io で実行されているかのように、他の内部リソースにアクセスすることもできます。 。
注 :ポート1080はSOCKSのIANA登録ポートですが、接続では他のポートを使用できます。 SSHとブラウザの設定の番号は一致している必要があります。
個人的には、プロキシ構成を絶えず切り替える必要がないように、別のブラウザプロファイルを作成すると便利だと思いました。 -P
を渡すことで、新しいプロファイルを作成できます firefox
に切り替えます コマンド、プロファイルマネージャーを起動します 。プロフィールをジャンプと呼びました 。新しいプロファイルを作成すると、空の構成が作成されます。このプロファイルでは、デフォルトのプロファイルを変更せずに、上記の構成を適用しました。
プロファイルを作成した後、次のコマンドでFirefoxを起動できます。
[bob@workstation ~]$ firefox -P Jump
もう1つの役立つヒントは、~/.ssh/config
で動的ポート転送用のホスト固有の構成を作成することです。 ファイル。例:
[bob@workstation ~]$ cat ~/.ssh/config
Host bastion
Hostname bastion.securecorp.io
User bob
DynamicForward 1080
[無料コース:仮想化とインフラストラクチャの移行の技術概要。 ]
まとめ
ジャンプサーバーを使用して内部システムに接続する方法はたくさんありますが、上記で概説した可能性は決して網羅的なものではありません。しかし、私の経験では、SSHは非常に強力なツールキットを提供します。これはほとんどの場合利用可能であり、多くのハードルなしですぐに使用できます。動的ポート転送はこれらのツールの1つであり、特定の状況での生産性を高めるのに役立ちました。ぜひお試しください。