Oracle Cloud Infrastructure Bastionを使用すると、パブリック・エンドポイントがないターゲット・リソースに、制約と時間制限付きでアクセスできるようになります。
Bastions (要塞)では、認可されたユーザーが、Secure Shell (SSH)セッションを使用して特定のIPアドレスからターゲット・リソースに接続できます。接続したユーザーは、SSHでサポートされている任意のソフトウェアまたはプロトコルを使用してターゲット・リソースとやり取りできます。たとえば、リモート・デスクトップ・プロトコル(RDP)を使用してWindowsホストに接続したり、Oracle Net Servicesを使用してデータベースに接続します。
ということで、On-PremisesからBastion経由して、SSH, SSH多段接続, Remote Desktop (RDP), Enterprise Manager へ HTTPSブラウザ・アクセス等してみてみます。
■ 構成イメージ
■ Bastion(要塞)作成
● 要塞作成
1) OCIコンソール
[アイデンティティとセキュリティ]> [要塞] をクリック
2) 要塞の作成画面
[リスト範囲]の[コンパートメント]リストで、要塞を作成するコンパートメントを選択し、[要塞の作成]をクリック
・要塞名: 任意の表示名
・仮想クラウド・ネットワーク: 関連付けるVCNを選択
・サブネット: Private Endpoint IPアドレスを配置するサブネットを選択
・CIDRブロック許可リスト: セッション接続を許可する1つ以上のアドレス範囲(CIDR表記)
・最大セッション存続時間(TTL): 最小値は30分で、180分(3時間)を超えない値を指定
3)作成完了
■ ① Bastion: Linux-Server へ SSH接続
● セッションの作成
・セッション・タイプ: [SSHポート転送セッション]を選択 ターゲット・リソースの特定ポートへのSSHトンネルを作成
・セッション名: 新規セッションの表示名を入力
・次を使用してターゲット・ホストに接続します:
・インスタンスの選択: ターゲット・コンピュートのインスタンス名を選択
・ポート: ターゲット・リソースで接続するポート番号を入力
・SSHキーの追加: セッションに使用するSSHキー・ペアの公開キー・ファイルを指定
● セッションへの接続
1) セッション SSHコマンドのコピー
セッションの「アクション」メニューで、「SSHコマンドのコピー」をクリック
2) SSHトンネル・コマンドのコピー確認
ssh -i <privateKey> -N -L <localPort>:10.0.0.2:22 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com
3) SSHコマンドの編集
テキスト・エディタを使用して、を秘密キーへのパスに、を要塞に接続するマシンのローカル・ポートに置き換えます。
ssh -i id_rsa -N -L 10022:10.0.0.2:22 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com
4) 10022ポートへのSSHトンネルを作成
[shirok@macbook ~]% ssh -i id_rsa -N -L 10022:10.0.0.2:22 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com
Use of the Oracle network and applications is intended solely for Oracle's authorized users. The use of these resources by Oracle employees and contractors is subject to company policies, including the Code of Conduct, Acceptable Use Policy and Information Protection Policy; access may be monitored and logged, to the extent permitted by law, in accordance with Oracle policies. Unauthorized use may result in termination of your access, disciplinary action and/or civil and criminal penalties.
5) Linux-ServerへSSH接続
SSHクライアントを使用して、localhost (または127.0.0.1)および指定したローカル・ポート10022に接続します。
[shirok@macbook ~]% ssh -i id_rsa opc@localhost -p 10022
The authenticity of host '[localhost]:10022 ([::1]:10022)' can't be established.
ED25519 key fingerprint is SHA256:qFK/vL9MyWYEYBO5AmjJxRhufx8xkQEdJzL57OZAqD0.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[localhost]:10022' (ED25519) to the list of known hosts.
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Wed Apr 20 16:21:20 2022 from 10.0.255.2
6) SSH接続確認
[opc@Linux-Server ~]$ hostname
Linux-Server
■ ② Bastion: SSH多段接続(Linux Server - Database Cloud Service )
Bastionを作成したVCN外のインスタンスと接続する場合、SSH多段接続で接続します。
VCN外のインスタンスに対して Bastion セッション 作成しようとすると次のようなエラーが出力されます
You provided an IP address or a compute instance with IP address that is not in the same virtual cloud network configured for the bastion.
1) 10022ポートへの SSHトンネルを作成
① Bastion: SSH接続(Linux) で使用した 10022ポートへのSSHトンネルを使用
[shirok@macbook ~]% ssh -i id_rsa -N -L 10022:10.0.0.2:22 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com
Use of the Oracle network and applications is intended solely for Oracle's authorized users. The use of these resources by Oracle employees and contractors is subject to company policies, including the Code of Conduct, Acceptable Use Policy and Information Protection Policy; access may be monitored and logged, to the extent permitted by law, in accordance with Oracle policies. Unauthorized use may result in termination of your access, disciplinary action and/or civil and criminal penalties.
2) SSH多段接続
ssh -i <ssh-Key> opc@<踏み台IP> -p <踏み台Port番号> -t 'ssh -i <Linux-Serverに配置したssh-Key> opc@<2段目サーバIP>'
[shirok@macbook ~]% ssh -i id_rsa opc@localhost -p 10022 -t 'ssh -i id_rsa opc@10.0.10.10'
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Wed Apr 20 15:01:26 2022 from 10.0.0.2
3) SSH多段接続確認
Database Cloud Service(DBCS)へ接続できたことを確認
[opc@DBCS ~]$ hostname
DBCS
■ ③ Bastion: Windows へ Remote Desktop接続
● セッションの作成
1) Bastion画面
[セッションの作成]をクリック
・セッション・タイプ: [SSHポート転送セッション]を選択 ターゲット・リソースの特定ポートへのSSHトンネルを作成
・セッション名: 新規セッションの表示名を入力
・次を使用してターゲット・ホストに接続します:
・インスタンスの選択: ターゲット・コンピュートのインスタンス名を選択
・ポート: Remote Desktop ポート番号 3389を入力
・SSHキーの追加: セッションに使用するSSHキー・ペアの公開キー・ファイルを指定
● 3389 SSHトンネル接続
1) セッション SSHコマンドのコピー
セッションの「アクション」メニューで、「SSHコマンドのコピー」をクリック
2) SSHコマンドのコピー確認
ssh -i <privateKey> -N -L <localPort>:10.0.0.3:3389 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com
3) SSHコマンドの編集
テキスト・エディタを使用して、を秘密キーへのパスに、を要塞に接続するマシンのローカル・ポートに置き換えます。
ssh -i id_rsa -N -L 13389:10.0.0.3:3389 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com
● Remote Desktop接続
2) Remote Desktop画面
Add PC をクリックし、localhost (または127.0.0.1)および指定したローカル・ポート 13389 を設定
■ ④ Bastion: Enterprise Manager へ HTTPSブラウザ接続
● セッションの作成
1) Bastion画面
[セッションの作成]をクリック
・セッション・タイプ: [SSHポート転送セッション]を選択 ターゲット・リソースの特定ポートへのSSHトンネルを作成
・セッション名: 新規セッションの表示名を入力
・次を使用してターゲット・ホストに接続します:
・インスタンスの選択: ターゲット・コンピュートのインスタンス名を選択
・ポート: Enterprise-Manager ポート番号 7799を入力
・SSHキーの追加: セッションに使用するSSHキー・ペアの公開キー・ファイルを指定
● 7799 SSHトンネル接続
1) セッション SSHコマンドのコピー
セッションの「アクション」メニューで、「SSHコマンドのコピー」をクリック
2) SSHトンネル・コマンドのコピー確認
ssh -i <privateKey> -N -L <localPort>:10.0.0.4:7799 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com
3) SSHトンネル・コマンド編集と実行
テキスト・エディタを使用して、を秘密キーへのパスに、を要塞に接続するマシンのローカル・ポート17799 に置き換えます。
[shirok@macbook ~]% ssh -i id_rsa -N -L 17799:10.0.0.4:7799 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com
Use of the Oracle network and applications is intended solely for Oracle's authorized users. The use of these resources by Oracle employees and contractors is subject to company policies, including the Code of Conduct, Acceptable Use Policy and Information Protection Policy; access may be monitored and logged, to the extent permitted by law, in accordance with Oracle policies. Unauthorized use may result in termination of your access, disciplinary action and/or civil and criminal penalties.
● HTTPSブラウザ接続
- ブラウザ接続
https://localhost:17799/em で接続
■ Tips
● Proxy経由接続
Cisco Secure Client(Cisco AnyConnect) などの リモートアクセスVPN でクライアントが接続されている状態の場合、Proxy経由接続なります。
Proxy使用してInternet接続している場合、次のように SSHトンネル・コマンドに -o ProxyCommand オプションで Proxy URL を追加して接続します。
-o ProxyCommand='nc -X connect -x <Proxy-URI>:80 %h %p'
Windowsの場合、ncコマンドないため次を参考に Gitに含まれる connect.exe を使用します。
これで Proxy経由接続でも、これを使用して OCI Bastion Service を使用すれば、Microsoft リモート デスクトップの Remote Desktop Protocol(RDP)接続が可能になります。
■ 参考
・Oracle Cloud Infrastructure Bastion製品機能:Oracle Bastion
・Oracle Cloud Infrastructureドキュメント: 要塞ドキュメント
・アーキテクチャ・センター: Bastionサービスを使用したプライベート・サブネット内のリソースへのアクセス
・FAQ: Oracle Cloud Infrastructure Bastion Serviceに関するよくある質問
・要塞のトラブルシューティング