バックLANパターン#

本構成はFJcloud-O 東日本/西日本リージョン3向けとなります。

要求事項#

業務システムをセキュアに運用するために、以下に対応します。

  • ネットワークは「業務用」と「管理用」に分け、仮想サーバのメンテナンスは、「管理用ネットワークからのみアクセス可」としたい。
    → 管理用ネットワークに相当する役割を、本ドキュメントでは 「バックLAN」 と呼称します。

  • 業務用サーバのインターネット側には、メンテナンス用のポートを空けたくない。
    インターネット接続パターン のような、特定のIPアドレスを制限して受信を許可する方式が取れない場合に対応します。

  • 仮想サーバのメンテナンスは、特定のサーバ(踏み台サーバ)からのみアクセスできるようにしたい。

対応するデザインパターン概要#

image

  • 業務用サーバに「ポート(IPアドレス)」を追加し、複数の内部ネットワークに接続します。

    • 業務用サーバは、2つの内部ネットワークに接続

      • 内部ネットワークA2:業務用
      • 内部ネットワークA0:バックLAN
  • 業務用サーバのバックLAN側のみ、「ssh」や「rdp」などメンテナンス用ポートへのアクセスを許可します。

  • 作業用PCから、SSL-VPN経由で踏み台サーバにアクセスした後、業務用サーバにアクセスすることを想定しています。

  • 業務用サーバーのバックLAN側セキュリティグループに「踏み台サーバからのアクセスのみ許可」するよう設定することで、他の仮想サーバからのアクセスを制限できます。

  • 業務用サーバおよび踏み台サーバは、それぞれ、WindowsおよびRed Hat Enterprise Linux(以下、RHELと記載)で構築する手順を記載します。

実装サンプル#

  • 注意:「名称」や「IPアドレス」などの設定値例は、本ドキュメント公開用に修正しています。
    (検証時の値とは異なります)

1. 内部ネットワークの作成#

仮想ネットワーク・仮想ルータを作成します。

  • 以下の設定値例に従い、「内部ネットワークA0」、「内部ネットワークA1」、「内部ネットワークA2」を作成します。
  • DHCPは「有効」、DNSサーバは「8.8.8.8」を設定します。
ネットワーク 仮想ネットワーク名 サブネット名 サブネット ゲートウェイIP 用途
内部ネットワークA1 netA1 subnetA1 192.168.1.0/24 192.168.1.1 SSL-VPN接続用
内部ネットワークA2 netA2 subnetA2 192.168.2.0/24 192.168.2.1 業務用
内部ネットワークA0 netA0 subnetA0 192.168.0.0/24 192.168.0.1 バックLAN用
  • 以下の設定値例に従い、「ルータA0」、「ルータA1」、「ルータA2」を作成します。

  • 作成後、インターフェースを追加し、作成したサブネットと紐づけします。

ルータ 仮想ルータ名 外部ネットワーク サブネット接続 IPアドレス 用途
ルータA1 routerA1 接続(fip-net) subnetA1 192.168.1.1 SSL-VPN接続用
ルータA2 routerA2 接続(fip-net) subnetA2 192.168.2.1 業務用
ルータA0 routerA0 subnetA0 192.168.0.1 バックLAN用

2. セキュリティグループ作成#

以下のセキュリティグループ・セキュリティグループルールを作成します。
実際の運用においては、 セキュリティグループ活用 を参考に、適切なセキュリティグループを設定してください。

(1) 内部ネットワークA0(バックLAN)用#

  • セキュリティグループ
  • セキュリティグループルール
    • 送信:「TCP」「UDP」「ICMP」を全て許可
    • 受信:「内部ネットワークA0」からの、「SSH (22/tcp)」「RDP (3389/tcp)」「ICMP」を許可
    • 設定手順は初期構築ガイド セキュリティグループルールを作成 参照
No. ルール 方向 オープンポート ポート番号 接続先 CIDR
1 ALL TCP(1-65535) 送信 CIDR 0.0.0.0/0
2 ALL UDP(1-65535) 送信 CIDR 0.0.0.0/0
3 ALL ICMP 送信 CIDR 0.0.0.0/0
4 ALL ICMP 受信 CIDR 192.168.0.0/24
5 カスタムTCPルール 受信 ポート番号 22 CIDR 192.168.0.0/24
6 カスタムTCPルール 受信 ポート番号 3389 CIDR 192.168.0.0/24

(2) 内部ネットワークA1(SSL-VPN接続)用#

  • セキュリティグループ
  • セキュリティグループルール
    • 送信:「TCP」「UDP」「ICMP」を全て許可
    • 受信:「SSL-VPNクライアントプール」からの、「SSH (22/tcp)」「RDP (3389/tcp)」を許可
    • 設定手順は初期構築ガイド セキュリティグループルールを作成 参照
No. ルール 方向 オープンポート ポート 接続先 CIDR
1 ALL TCP(1-65535) 送信 CIDR 0.0.0.0/0
2 ALL UDP(1-65535) 送信 CIDR 0.0.0.0/0
3 ALL ICMP 送信 CIDR 0.0.0.0/0
4 カスタムTCPルール 受信 ポート番号 22 CIDR 192.168.246.0/24
5 カスタムTCPルール 受信 ポート番号 3389 CIDR 192.168.246.0/24

(3) 内部ネットワークA2(業務)用#

No. ルール 方向 オープンポート ポート 接続先 CIDR
1 ALL TCP(1-65535) 送信 CIDR 0.0.0.0/0
2 ALL UDP(1-65535) 送信 CIDR 0.0.0.0/0
3 ALL ICMP 送信 CIDR 0.0.0.0/0

※ 実際の運用においては、 セキュリティグループ活用 を参考に、適切なセキュリティグループを設定してください。

3. SSL-VPN接続作成#

(1) VPNサービスの作成#

  • ルータA1にVPNサービスを設定します。
項目 設定値例
仮想ルータ名 routerA1
サブネット名 subnetA1
VPNサービス名 ssl-vpn-vpnservice
説明 (空欄)
管理状態 true

※「指定した仮想ルータにファイアウォールが設定されていません。VPNサービス作成後に設定してください。」というポップアップが現れますが、ここではOKをクリックします。

(2) SSL-VPNコネクションの作成#

項目 設定値例
SSL-VPN接続名 ssl-vpn-conn
管理状態 true
証明書 FJCS証明書(デフォルト)
グローバルIP 自動割当
クライアントIPプール 192.168.246.0/24

4. 仮想サーバ作成#

(1) 仮想サーバの作成#

仮想サーバを作成します。

  • サーバグループは「設定なし」、デバイスサイズは最小ディスク容量を設定する
  • RHELサーバのキーペアは任意のキーペアを選択する
  • Windows Serverのパスワードは「手動」を選択し、任意のパスワードを設定する
仮想サーバ 仮想サーバ名 仮想サーバタイプ OSイメージ 選択済み仮想ネットワーク セキュリティグループ
踏み台サーバ1 Fumi_RHEL P3-1 [Hourly] Red Hat Enterprise Linux 8.x 64bit (English) netA1 SSL-VPN_SG
踏み台サーバ2 Fumi_Win M3-1 [Hourly] Windows server 2019 netA1 SSL-VPN_SG
業務用サーバ1 Biz_RHEL P3-1 [Hourly] Red Hat Enterprise Linux 8.x 64bit (English) netA2 Business_SG
業務用サーバ2 Biz_Win M3-1 [Hourly] Windows server 2019 netA2 Business_SG

5. バックLAN接続#

仮想サーバを作成後、「バックLAN」に接続します。

(1) 各サーバに対して、以下の処理を実施#

  • 各サーバに割当てられたプライベートIPアドレスを変更
    • IaaSポータル画面の場合:仮想サーバ一覧 → 「仮想サーバ名」のリンク → 既存のポートの「アクション」 → 「編集」を選択
仮想サーバ 仮想サーバ名 ポート名 IPアドレス 用途
踏み台サーバ1 Fumi_RHEL Fumi_RHELA1 192.168.1.11 SSL-VPN用
踏み台サーバ2 Fumi_Win Fumi_WinA1 192.168.1.12 SSL-VPN用
業務用サーバ1 Biz_RHEL Biz_RHELA2 192.168.2.21 業務用
業務用サーバ2 Biz_Win Biz_WinA2 192.168.2.22 業務用
  • 各サーバを「内部ネットワークA0」に接続
    • IaaSポータル画面の場合:上記の続き、「ポート」の「+」をクリック
仮想サーバ 仮想サーバ名 ポート名 ネットワーク名 サブネット名 IPアドレス 用途
踏み台サーバ1 Fumi_RHEL Fumi_RHELA0 netA0 subnetA0 192.168.0.11 バックLAN用
踏み台サーバ2 Fumi_Win Fumi_WinA0 netA0 subnetA0 192.168.0.12 バックLAN用
業務用サーバ1 Biz_RHEL Biz_RHELA0 netA0 subnetA0 192.168.0.21 バックLAN用
業務用サーバ2 Biz_Win Biz_WinA0 netA0 subnetA0 192.168.0.22 バックLAN用
  • 追加したポートのセキュリティグループを変更
    • IaaSポータル画面の場合:上記の続き、追加されたポートの「アクション」 → 「セキュリティグループ設定」をクリック
    • 初期設定値「default」を解除、「BackLan_SG」を選択
    • 「仮想サーバ詳細画面」をリロードして、設定内容が反映されていることを確認
仮想サーバ 仮想サーバ名 ポート名 IPアドレス セキュリティグループ 用途
踏み台サーバ1 Fumi_RHEL Fumi_RHELA1 192.168.1.11 SSLVPN_SG SSL-VPN用
Fumi_RHELA0 192.168.0.11 BackLan_SG バックLAN用
踏み台サーバ2 Fumi_Win Fumi_WinA1 192.168.1.12 SSLVPN_SG SSL-VPN用
Fumi_WinA0 192.168.0.12 BackLan_SG バックLAN用
業務用サーバ1 Biz_RHEL Biz_RHELA2 192.168.2.21 Business_SG 業務用
Biz_RHELA0 192.168.0.21 BackLan_SG バックLAN用
業務用サーバ2 Biz_Win Biz_WinA2 192.168.2.22 Business_SG 業務用
Biz_WinA0 192.168.0.22 BackLan_SG バックLAN用

(2) 全てのサーバが、「バックLAN」に接続されていることを確認#

  • IaaSポータル画面の場合:仮想ネットワーク一覧 → 「netA0」のリンク → 「ポート」を確認
  • 作成したポートがすべて存在すること、状態が「ACTIVE」であること、管理状態が「Up」であることを確認する

(3) 全てのサーバを再起動#

設定変更を反映させるために仮想サーバを再起動します。

  • IaaSポータル画面の場合:仮想サーバ一覧 → 仮想サーバのアクション → 既存のポートの「アクション」 → 「再起動(ハード)」を選択

6. RHEL踏み台サーバの設定変更#

RHEL踏み台サーバのルーティング設定を変更します。

(1) 踏み台サーバにログイン#

  • 作業用PCからSSL-VPN接続

  • TeraTermを使用して、踏み台サーバにログイン

(2) 踏み台サーバから、他のサーバへSSHするための準備#

  • キーペアファイルを、自PCから踏み台サーバへ転送

    • TeraTermの[ファイル]→[ssh scp...]を選択
    • from:「送信するキーペアファイル」を選択、to:踏み台サーバの任意フォルダ(例:/home/k5user)を指定
  • キーペアファイルのアクセス権限を「600」に指定

    $ chmod 600 ./test-keypair.pem
    $ ls -l
    total 4
    -rw-------. 1 k5user k5user 1679 Sep 13  2018 test-keypair.pem
    

(3) ルーティング設定を変更#

(A) デバイスeth1をデフォルトルートから削除#
  • rootユーザに変更し、「バックLANポート」追加後のルーティング情報を確認
    ルーティング情報を確認の上、デバイスeth1でデフォルトルートを使用しないように設定
  • IPアドレス192.168.0.11および192.168.1.11はデバイスeth0、eth1それぞれに割り当てられたIPアドレス
  • 以下の作業でdefault via 192.168.0.1 dev eth1 proto dhcp src 192.168.0.11 metric 101の行が削除されるように、デバイスeth1をデフォルトルートから削除

    $ sudo su -
    # ip route
    default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.11 metric 100
    default via 192.168.0.1 dev eth1 proto dhcp src 192.168.0.11 metric 101
    192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.11 metric 101
    192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.11 metric 100
    

  • デバイスeth1のconnectionに対するUUIDを確認

    # nmcli connection show
    NAME                UUID                                  TYPE      DEVICE
    Wired connection 1  7d239b8f-3dfd-3fa7-b789-f629d2cac9ee  ethernet  eth0
    Wired connection 2  6d6fab52-b583-3ea6-95ba-1a35ce467b6e  ethernet  eth1
    System eth0         5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  ethernet  --
    System eth1         9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04  ethernet  --
    

  • デバイスeth1のconnectionに対するUUIDを指定し、デバイスをデフォルトゲートウェイとして使用しないようする設定(ipv4.never-default)が無効になっていることを確認

    # nmcli connection show 6d6fab52-b583-3ea6-95ba-1a35ce467b6e | grep "ipv4.never-default"
    ipv4.never-default:                     no
    

  • デバイスeth1をデフォルトゲートウェイとして使用しないように設定

  • ipv4.never-defaultの設定パラメーターをyesに修正

    nmcli connection modify 6d6fab52-b583-3ea6-95ba-1a35ce467b6e ipv4.never-default yes
    

  • 設定の変更内容を確認

    # nmcli connection show 6d6fab52-b583-3ea6-95ba-1a35ce467b6e | grep "ipv4.never-default"
    ipv4.never-default:                     yes
    

  • 設定変更を反映

    # nmcli connection up 6d6fab52-b583-3ea6-95ba-1a35ce467b6e
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
    

  • ルーティングを再度確認し、デバイスeth1がデフォルトルートとして使用されていないことを確認

    # ip route
    default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.11 metric 100
    192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.11 metric 101
    192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.11 metric 100
    

(B) デバイスeth0にスタティックルーティングを設定#

将来のルーティング変更(例:デフォルトルートをバックLAN側に切替)でSSL-VPN接続できなくなるリスクを回避するため、デバイスeth0にスタティックルーティングを設定します。

  • デバイスeth0のconnectionに対するUUIDを確認

    # nmcli connection show
    NAME                UUID                                  TYPE      DEVICE
    Wired connection 1  7d239b8f-3dfd-3fa7-b789-f629d2cac9ee  ethernet  eth0
    Wired connection 2  6d6fab52-b583-3ea6-95ba-1a35ce467b6e  ethernet  eth1
    System eth0         5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  ethernet  --
    System eth1         9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04  ethernet  --
    

  • デバイスeth0のconnectionに対するUUIDを指定し、デバイスeth0に対しスタティックルーティングを設定する

    nmcli connection modify 7d239b8f-3dfd-3fa7-b789-f629d2cac9ee +ipv4.routes "192.168.246.0/24 192.168.1.1"
    

  • 設定の変更内容を確認

    # nmcli connection show 7d239b8f-3dfd-3fa7-b789-f629d2cac9ee | grep "ipv4.routes"
    ipv4.routes:                            { ip = 192.168.246.0/24, nh = 192.168.1.1 }
    

  • 設定変更を反映

    # nmcli connection up 7d239b8f-3dfd-3fa7-b789-f629d2cac9ee
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
    

(4) サーバを再起動#

(5) 踏み台サーバにログイン、rootユーザに変更しルーティング情報を確認#

  • 「default via~」の設定は、eth0のみであること

  • ルーティングの優先度:metricの少ない番号が優先される

  • スタティックルーティングが追加されていること

    # ip route show
    default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.11 metric 100
    192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.11 metric 101
    192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.11 metric 100
    192.168.1.1 dev eth0 proto static scope link metric 100
    192.168.246.0/24 via 192.168.1.1 dev eth0 proto static metric 100
    

(6) ping確認#

  • セキュリティグループは、検証完了後に適切な値を設定すること

(7) 他サーバへのSSH接続確認#

  • 踏み台サーバから、業務用サーバにログイン → ログアウト
    $ ssh -i ./test-keypair.pem k5user@192.168.0.x
    $ exit
    

(8) インターネットへの接続確認#

  • 例:外部のDNSサーバにアクセス
    $ host -a www.google.com
    Trying "www.google.com"
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1336
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;www.google.com.                        IN      ANY
    
    ;; ANSWER SECTION:
    www.google.com.         299     IN      A       172.217.161.36
    www.google.com.         299     IN      AAAA    2404:6800:4004:80a::2004
    
    Received 76 bytes from 8.8.8.8#53 in 42 ms
    

7. RHEL業務用サーバの設定変更#

RHEL業務用サーバのルーティング設定を変更します。
手順は 6. RHEL踏み台サーバの設定変更 と同じです。

(1) 踏み台サーバ から 業務用サーバ にログイン、rootユーザに変更#

$ ssh -i ./test-keypair.pem k5user@192.168.0.x
$ sudo su -

(2) ルーティング設定を変更#

「SSL-VPNクライアントIPプール」のスタティックルーティング追加は不要です。

  • 修正後のルーティング情報
    # ip route show
    default via 192.168.3.1 dev eth0 proto dhcp metric 100
    192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.x metric 101
    192.168.3.0/24 dev eth0 proto kernel scope link src 192.168.3.x metric 100
    

(3) サーバを再起動し、疎通確認#

8. Windows踏み台サーバの設定変更#

Windows踏み台サーバのルーティング設定を変更します。

(1) リモートデスクトップまたはリモートコンソールを使用して、Windows踏み台サーバにログイン#

(2)「イーサネットアダプターの番号」を確認#

  • 「スタートメニュー」 → 「Windowsシステムツール」 → 「コマンドプロンプト」
  • 以下のコマンドを実行します。
    C:\Users\k5user>ipconfig
    
    Windows IP 構成
    イーサネット アダプター イーサネット:
       ()
       デフォルト ゲートウェイ . . . . . . .: 192.168.1.1
    
    イーサネット アダプター イーサネット 3:
       ()
       デフォルト ゲートウェイ . . . . . . .: 192.168.0.1
    

上記出力例の場合、インターネットアダプターは以下となります。

  • SSL-VPN接続用:ゲートウェイ(192.168.1.1) → 「イーサネット:」
  • バックLAN用 :ゲートウェイ(192.168.0.1) → 「イーサネット 3:」

(3) Windows踏み台サーバのルーティング設定を変更#

  • 「コントロール パネル」 → 「ネットワークとインターネット」 → 「ネットワークと共有センター」 → 「アダプターの設定の変更」
  • 各イーサネットアダプターに、メトリック番号を設定する

    • 「イーサネットアダプター」を右クリック → 「プロパティ」 → 「インターネット プロトコル バージョン4(TCP/IPv4)」を選択 → 「プロパティ」 → 「詳細設定」
    • 「自動メトリック」のチェックを外す
    • 「インターフェイス メトリック」に値を設定
      • 「SSL-VPN接続用」の数値 < 「バックLAN用」の数値 となるよう設定
      • 例)SSL-VPN接続用のインターフェイス メトリック値:2、バックLAN用のインターフェイス メトリック値:5
  • 「SSL-VPNクライアントIPプール」のスタティックルーティングを追加
    将来のルーティング変更(例:デフォルトルートをバックLAN側に切替)に伴い、SSL-VPN接続できなくなるリスクを回避するため、設定しておく

    • コマンドプロンプトを「管理者として実行」で起動する
    • ルーティング追加
      コマンドに「-p」を指定し、再起動後も削除されないようにする
      C:\Users\k5user>route -p add 192.168.246.0 mask 255.255.255.0 192.168.1.1 metric 16
      

(4) サーバを再起動#

(5) 踏み台サーバにログイン、ルーティング情報を確認#

  • ルーティングの優先度:メトリックの少ない番号が優先される

  • 固定ルート(スタティックルーティング)が追加されていること

    C:\Users\k5user>route print -4
    ()
    アクティブ ルート:
    ネットワーク宛先    ネットマスク    ゲートウェイ   インターフェイス メトリック
    	0.0.0.0         0.0.0.0         192.168.1.1      192.168.1.12     2
    	0.0.0.0         0.0.0.0         192.168.0.1      192.168.0.12     5
    ()
      192.168.246.0    255.255.255.0    192.168.1.1      192.168.1.12     17
    ()
    固定ルート:
    ネットワーク アドレス  ネットマスク  ゲートウェイ アドレス  メトリック
       192.168.246.0    255.255.255.0      192.168.1.1           16
    

(6) 業務サーバへのリモートデスクトップ接続確認#

  • 踏み台サーバから、リモートデスクトップ接続にて業務用サーバ(192.168.0.22)にログインする
  • バックLAN用のネットワークのIPアドレスに接続する

(7) インターネットへの接続確認#

  • ブラウザでGoogle画面などを表示
  • 表示できない場合は「メトリックの設定値」や「セキュリティグループルール」を再確認

9. Windows業務サーバの設定変更#

Windows業務用サーバのルーティング設定を変更します。
手順は 8. Windows踏み台サーバの設定変更 と同じです。
ただし、「SSL-VPNクライアントIPプール」の設定は不要。

(1) サーバを再起動し、疎通確認#

注意事項#

  • 本パターンは2024年6月時点のFJcloud-O 東日本/西日本リージョン3にて動作検証しています。