LoginSignup
0
0

SSL Insight の検証

Last updated at Posted at 2023-11-30

環境

機器 バージョン
vThunder 5.2.1-p5, build 114
FortiGate-VM v6.4.13 build2092 (GA)
WindowsServer Windows Server 2019
CentOS8 CentOS 8.5.2111
httpd 2.4.37-43
openssl 1.1.1.k-5
mod_ssl 2.4.37-43

構成イメージ図

キャプチャ.PNG

webサーバ構築

以下を参照
https://qiita.com/motimotinoyamayama/items/6b3a3ee0ff8db9471219

証明書類を作成

以下を参照。
ルートCA証明書と鍵はvThunderに適用、サーバ証明書と鍵はwebサーバに適用する。
https://qiita.com/motimotinoyamayama/items/344ba7797caca61eef5b

Clientの設定

ブラウザにルートCA証明書のPEMファイルをインポートする

Forigate-VM

I/Fの設定。port3は管理セグメント。
AccessModeとして動作させるため、物理I/Fに設定している。
キャプチャ1.PNG

port1,2にスタティックルートを設定。
キャプチャ2.PNG

Foriは平文のパケットを通過させるだけなので、全てのパケットを許可する。
NATはvThunder exのaclが100.0.0.0 /24を指定しているので、無効化にする。
キャプチャ3.PNG

vThunder

ADP作成

vThunderでSSLiする際、システムpromiscuous モードを設定
promiscuousモードとは、ネットワーク上を流れる全てのデータパケットを受信するモード。

A10(config)#system promiscuous-mode

同一筐体の複数パーティションを連結する際のMacアドレス重複を避けるために設定を行い、リロードする。

A10(config)#system ve-mac-scheme system-mac
A10(config)#write memory
A10(config)#exit
A10#reload

SSL Insight 用の ADP(内側パーティション・外側パーティション)を作成します。パーティション設定。
アプリケーションデリバリコントローラ(ADC)とは、サーバの負荷分散装置の一種で、高度な制御機能やサーバ負荷の一部を肩代わりする機能を持ったもの。

A10(config)# partition in id 1 application-type adc
A10(config)# partition ex id 2 application-type adc
#show partition all
Partition Name   Id     L3V/SP     Parent L3V           App Type   Admin Count  Active
--------------------------------------------------------------------------------------
in               1       L3V       -                    ADC          0            *
ex               2       L3V       -                    ADC          0            *

Partition in 作成

internalパーティションへ移動

A10(config)# active-partition in

CA証明書と鍵のインポート
GUIで操作。
ルートCA証明書のインポート。
キャプチャ4.PNG

ルートCA秘密鍵をインポート
キャプチャ5.PNG

インポートした証明書を確認
キャプチャ6.PNG

ネットワークの設定

vlan 10 
  untagged ethernet 1
  router-interface ve 10 
  exit-module
!
vlan 50 
  untagged ethernet 2
  router-interface ve 50 
  exit-module
!
!
interface ethernet 1 
  enable 
  exit-module
!
interface ethernet 2 
  enable 
  exit-module
!
interface ve 10 
  ip address 100.0.0.1 255.255.255.0 
  ip allow-promiscuous-vip 
  exit-module
!
interface ve 50 
  ip address 10.0.5.1 255.255.255.0 
  exit-module
!
!
ip route 0.0.0.0 /0 10.0.5.254 

SSLiの対象となるClientNetworkをACLで定義

a10[in](config)#access-list 100 permit ip 100.0.0.0 /24 any vlan 10

realserverの設定

復号化トラフィックの転送先を定義。
slb serverにはサーバ名とIPアドレス、portには、ポート番号とL4プロトコルの種別を指定します。

8080番ポートは80番ポートの代替。
0番ポートはエニーポート(any port)と呼ばれ、アプリケーションに対して、動的に別番号の空きポートを割り当てるために用意された特殊なポート番号。
health-check-disable はリアルサーバに対してpingによるヘルスチェック、公開ポートに対してL4ポートのヘルスチェックを無効にする(デフォルトは有効)

a10[in](config)#slb server gw1 10.0.5.254 
a10[in](config-real server)#port 0 tcp 
a10[in](config-real server-node port)#health-check-disable 
a10[in](config-real server)#port 0 udp 
a10[in](config-real server-node port)#health-check-disable 
a10[in](config-real server)#port 8080 tcp 
a10[in](config-real server-node port)health-check-disable 

service groupに割り当て

real server から service group を作成します。
service group により real server をグループ化します。 このグループ化されたサーバ群に対して、ロードバランシングが実行されます。
slb service-groupには、サービスグループ名とL4プロトコルの種別を指定。memberには、リアルサーバの設定で指定したサーバ名とポート番号を指定。

a10[in](config)#slb service-group gw-http tcp 
a10[in](config-slb svc group)#member gw1 8080 
a10[in](config)#slb service-group gw-tcp tcp 
a10[in](config-slb svc group)#member gw1 0 
a10[in](config)#slb service-group gw-udp udp 
a10[in](config-slb svc group)#member gw1 0

client-ssl template の設定

SSL Insight の内側デバイスとして動作させるよう定義します。
SSLオフロードの復号化処理を行う。
SSLテンプレートを作成し、先ほどimportした証明書と秘密鍵を紐付けます。

A10[in](config)#slb template client-ssl cs1  
A10[in](config-client ssl)#forward-proxy-ca-cert ca1 
A10[in](config-client ssl)#forward-proxy-ca-key ca1 
A10[in](config-client ssl)#forward-proxy-enable

virtual server の設定

SSL通信を受け入れる wild card VIP を設定します。
slb virtual-serverには、バーチャルサーバ名と、ロードバランサ自身で保持する仮想IPを指定します。

A10[in](config)#slb virtual-server wc1 0.0.0.0 acl 100 

portには、バーチャルサーバがリッスンするポート番号とL4プロトコルの種別を指定します。このポートは、リアルサーバのポート番号と異なる番号を指定することも可能です。
service-groupには、負荷分散先のリアルサーバが所属するサービスグループ名を指定します。
no-dest-nat は受信したパケットの宛先NATをしない。(デフォルトはリアルサーバのIPアドレスにNATするので、これを抑止)

anyポートとanyポートに紐づけられたtcp、udp以外のL4プロトコルを指定。サービスグループはgw-udpを紐づけ。

A10[in](config-slb vserver)#port 0 others 
A10[in](config-slb vserver-vport)#service-group gw-udp 
A10[in](config-slb vserver-vport)#no-dest-nat 

anyポートとtcpを指定。サービスグループはgw-tcpを紐づけ。

A10[in](config-slb vserver)#port 0 tcp 
A10[in](config-slb vserver-vport)#service-group gw-tcp 
A10[in](config-slb vserver-vport)#no-dest-nat 

anyポートとudpを指定。サービスグループはgw-udpを紐づけ。

A10[in](config-slb vserver)#port 0 udp
A10[in](config-slb vserver-vport)#service-group gw-udp 
A10[in](config-slb vserver-vport)#no-dest-nat

443ポートとhttpsを指定。サービスグループはgw-http、先ほど定義したclient-ssl templateを紐づけ。
port-translation を指定した場合、宛先Portはリアルサーバのものに変更。

A10[in](config-slb vserver)#port 443 https 
A10[in](config-slb vserver-vport)#service-group gw-http 
A10[in](config-slb vserver-vport)#no-dest-nat port-translation 
A10[in](config-slb vserver-vport)#template client-ssl cs1 ※

Partition ex 作成

externalパーティションへ移動

A10(config)#active-partition ex

ACLの設定

SSL Insight の対象となるクライアントネットワーク(および宛先)をACLで定義

A10[ex](config)#access-list 100 permit ip 100.0.0.0 0.0.0.255 any ethernet 3 

ネットワークの設定

vlan 30 
  untagged ethernet 4
  router-interface ve 30 
  exit-module
!
vlan 60 
  untagged ethernet 3
  router-interface ve 60 
  exit-module
!
!
interface ethernet 3 
  enable 
  exit-module
!
interface ethernet 4 
  enable 
  exit-module
!
interface ve 30 
  ip address 10.0.2.1 255.255.255.0 
  exit-module
!
interface ve 60 
  ip address 10.0.6.1 255.255.255.0 
  ip allow-promiscuous-vip 
  exit-module
!
!
ip route 0.0.0.0 /0 10.0.6.254 

server-ssl templateの設定

SSL Insight の外側デバイスとして動作させるよう定義します。
SSLオフロードの暗号化処理を行う。

A10[ex](config)#slb template server-ssl ss1 
A10[ex](config-server ssl)#forward-proxy-enable 

real server の設定

暗号化トラフィックの転送先を定義。
slb serverにはサーバ名とIPアドレス、portには、ポート番号とL4プロトコルの種別を指定します。

A10[ex](config)#slb server gw1 10.0.2.254 
A10[ex](config-real server)#port 0 tcp 
A10[ex](config-real server-node port)#health-check-disable 
A10[ex](config-real server)#port 0 udp 
A10[ex](config-real server-node port)#health-check-disable 
A10[ex](config-real server)#port 443 tcp
A10[ex](config-real server-node port)#health-check-disable 

service group の設定

real server から service group を作成します。
service group により real server をグループ化します。 このグループ化されたサーバ群に対して、ロードバランシングが実行されます。
slb service-groupには、サービスグループ名とL4プロトコルの種別を指定。memberには、リアルサーバの設定で指定したサーバ名とポート番号を指定。

A10[ex](config)#slb service-group gw-http tcp 
A10[ex](config-slb svc group)#member gw1 443 
A10[ex](config)#slb service-group gw-tcp tcp 
A10[ex](config-slb svc group)#member gw1 0
A10[ex](config)#slb service-group gw-udp udp 
A10[ex](config-slb svc group)#member gw1 0 

virtual server の設定

wildcard VIP を作成し、クライアントからのトラフィクを処理。
slb virtual-serverには、バーチャルサーバ名と、ロードバランサ自身で保持する仮想IPを指定します。

A10[ex](config)slb virtual-server wc1 0.0.0.0 acl 100

portには、バーチャルサーバがリッスンするポート番号とL4プロトコルの種別を指定します。このポートは、リアルサーバのポート番号と異なる番号を指定することも可能です。
service-groupには、負荷分散先のリアルサーバが所属するサービスグループ名を指定します。
no-dest-nat は受信したパケットの宛先NATをしない。(デフォルトはリアルサーバのIPアドレスにNATするので、これを抑止)
use-rcv-hop-for-respはサーバからのリプライパケットをリクエストパケットのソースMACアドレス宛に戻したい場合に利用。これがない場合はルーティングテーブルを参照しネクストホップのMACアドレスに戻す。

anyポートとanyポートに紐づけられたtcp、udp以外のL4プロトコルを指定。サービスグループはgw-udpを紐づけ。

A10[ex](config-slb vserver)port 0 others 
A10[ex](config-slb vserver-vport)service-group gw-udp 
A10[ex](config-slb vserver-vport)use-rcv-hop-for-resp 
A10[ex](config-slb vserver-vport)no-dest-nat 

anyポートとtcpを指定。サービスグループはgw-tcpを紐づけ。

A10[ex](config-slb vserver)port 0 tcp 
A10[ex](config-slb vserver-vport)service-group gw-tcp 
A10[ex](config-slb vserver-vport)use-rcv-hop-for-resp
A10[ex](config-slb vserver-vport)no-dest-nat

anyポートとudpを指定。サービスグループはgw-udpを紐づけ。

A10[ex](config-slb vserver)port 0 udp
A10[ex](config-slb vserver-vport)service-group gw-udp 
A10[ex](config-slb vserver-vport)use-rcv-hop-for-resp
A10[ex](config-slb vserver-vport)no-dest-nat

8080ポートとhttpを指定。サービスグループはgw-http、先ほど定義したserver-ssl templateを紐づけ。

A10[ex](config-slb vserver)port 8080 http
A10[ex](config-slb vserver-vport)service-group gw-http
A10[ex](config-slb vserver-vport)use-rcv-hop-for-resp
A10[ex](config-slb vserver-vport)template server-ssl ss1
A10[ex](config-slb vserver-vport)no-dest-nat port-translation

SSL Insight 検証

Forigateのport1でパケットキャプチャ取得するため、port1を指定してキャプチャをスタートさせる。
キャプチャ9.PNG

clientからwebサーバのアドレスへアクセス
キャプチャ7.PNG

Forigate-VMのport1で取得したキャプチャ。
WebサーバからWebブラウザへ送られるHTTPステータスコード(200 OK)に平文化されたことで、webフォームに入力した文字列WebServer_testを確認出来る。
キャプチャ8.PNG

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0