Juniper vSRX Virtual FirewallをOracle Cloudにインストールしてみてみた

#■目的
[Juniper SRX](https://www.juniper.net/jp/jp/products-services/security/srx-series/)は次世代の脅威防御型ファイアウォールです。
ファイアウォールやIPSec VPN機能に加えて、IPS、アンチウィルス、アンチスパム、URLフィルタリング、コンテンツフィルタリングなど多彩なUTM機能やアプリケーションの可視化、アプリケーションアクセスコントロール、SSLプロキシなど、最新の次世代ファイアウォール機能を提供
ということで、Juniper仮想セキュリティ アプライアンスであるvSRX Virchl FirewallをOracle Cloud Infrastructure(OCI)へデプロイしてみてみました。

#■構成
<img width="834" alt="構成.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/a633136c-b2bf-93fd-9f29-4305d6c92319.png">



#■手順概要
	1. VCN設定
	2. OCI用vSRXカスタムイメージ作成
	3. vSRXインスタンス作成
	4. vSRXインスタンス設定
	4. 接続確認

#■vSRXダウンロード
[vSRX の 60 日間の無料トライアル](https://www.juniper.net/jp/jp/dm/free-vsrx-trial/)よりqcow2のvSRX KVM Applianceをダウンロード
<img width="1103" alt="00_JuniperHP01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/687acbe1-be7a-e2df-c40b-0becff6ddafa.png">


#■VCN設定
構成図のようにVCNを設定します。

##●vSRX用Subnet作成:

	1. Public Subnet (10.0.0.0/24) : Management Interface用 
	2. Public Subnet (10.0.2.0/24) : Public Access　Interface用
	3. Private Subnet(10.0.3.0/24) : Private Access　Interface用

![10_VCN02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/edc5f6dc-72fa-8033-fd78-e7f8b9b700df.png)



#■vSRXカスタムイメージ作成
##●Upload Object Storage
・vSRXのqcow2ファイルをObject StorageへUpload
![01_Upload_Objectstorage01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/b266a889-6960-3102-31ae-f4ce6310ea0e.png)



##●UploadしたファイルのPAR(Pre-Authenticated Requests)作成
① Uploadしたファイルを選択し、Pre-Authenticated Requestsをクリック
![01_Upload_Objectstorage02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/34bff3ea-84e0-4abe-431a-d00a70c359ef.png)


②下記のようにデフォルト設定で[Create Pre-Authenticated Request]をクリック
![01_Upload_Objectstorage03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/0aaf6600-a3c0-e2ef-05aa-8ab08d07849c.png)


③作成されたPRE-AUTHETICATED REQUEST URLをコピー
![01_Upload_Objectstorage04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/923c4a0f-0eb5-9f9c-793b-1a22e7f8ebf9.png)



##●Import Image 
[Compute] > [Customer Omages]画面の[Import Image]をクリックし、下記の様に設定し、[Create]をクリックして作成

	・POERATING SYSTEM：Linuxを選択
	・OBJECT STORAGE URL：PAR作成でコピーしたURLを記入
	・IMAGE TYPE：QCOW2を選択
	・LAUNCH MODE：PARAVIRTUAL MODEを選択

![02_ImortI_mage01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/1cc8228a-5dbf-9bbc-a7f1-b06febeff489.png)


##●vSRXインスタンス作成
[Compute] > [Customer Images] 画面でImportされたImageの[Create instance]をクリックし以下のように設定して[Create]をクリック

    ・Choose instance shape : vNICを3つ以上付与できるVM.Standard2.4以上を選択
    ・Subnet : Management Intarfese用Subnetを選択
    ・Network > Private IP address: Management Intarfese用IPを設定
    ・Assign public IP adress

![03_Create_Compute_Instance.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/3b5dfef3-2b15-e894-4629-3fcb52a7ad03.png)


##●vNIC追加
①ge-0/0/0用 VNIC追加
作成したvSRXインスタンス画面にある「Attached VNICs」をクリックし以下の様に設定

	・VIRTUAL CLOUD NETWORK：ge-0/0/0用VCNを選択
	・SUBNET：ge-0/0/0用Subnetを選択
	・Skip Source/Destination Check: ge-0/0/1へIPが通るようにチェック
	・PRIVATE IP ADDRESS：設定するIPアドレスを記入

![04_Create_VNIC01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/794f2ade-d6ef-d3d0-617b-874aef6ea355.png)

②ge-0/0/1用 VNIC追加
	・VIRTUAL CLOUD NETWORK：ge-0/0/1用VCNを選択
	・SUBNET：ge-0/0/1用Subnetを選択
	・Skip Source/Destination Check: ge-0/0/0へIPが通るようにチェック
	・PRIVATE IP ADDRESS：設定するIPアドレスを記入

![04_Create_VNIC02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/4b63f675-7243-d1b8-1c43-33b76d2992f0.png)


③vNIC追加後、インスタンスを再起動
	追加したｖNICを認識させるためにインスタンス再起動します


#■vSRXログイン
##●Console Connection作成
vSRXへコンソール接続するための設定を実施
①作成下インスタンス画面にある「Console Connections」画面へ遷移し、[Create Console Connection]をクリックし、下記の様に設定し、
　以下画面のようPLATFORMをLinuxを選択して、出力された　CONNECTSION STRINGをコピー

##●vSRXへログイン
①Create Console Connection修正
コピーした文字列に設定したRSA鍵を使う様に2箇所あるssh部分に以下のように "-i id_rsa(ssh接続用RSA鍵)"を 追加


・修正前

    ssh -o ProxyCommand='ssh -W %h:%p -p 443 ocid1.instanceconsoleconnection.oc1.ca-tokyo-1.ab2i6klqq@instance-console.ca-tokyo-1.oraclecloud.com' ocid1.instance.oc1.ca-tokyo-1.ab2

・修正後

    ssh -i id_rsa -o ProxyCommand='ssh -i id_rsa -W %h:%p -p 443 ocid1.instanceconsoleconnection.oc1.ca-tokyo-1.ab2i6klqq@instance-console.ca-tokyo-1.oraclecloud.com' ocid1.instance.oc1.ca-tokyo-1.ab2

②コンソールログイン

```shell-session
[opc@inst1 ~]$ ssh -i id_rsa -o ProxyCommand='ssh -i id_rsa -W %h:%p -p 443 ocid1.instanceconsoleconnection.oc1.ca-tokyo-1.ab2i6klqq@instance-console.ca-tokyo-1.oraclecloud.com' ocid1.instance.oc1.ca-tokyo-1.ab2
	The authenticity of host 'ocid1.instanceconsoleconnection.oc1.phx.ab (<no hostip for proxy command>)' can't be established.
	RSA key fingerprint is SHA256:4o1qFeFi8FZ5A.
	RSA key fingerprint is MD5:ab:dc:e9::16:12:9.
	Are you sure you want to continue connecting (yes/no)? yes
	Warning: Permanently added 'ocid1.instanceconsoleconnection.oc1.phx.abyhqljrpad42' (RSA) to the list of known hosts.


	Amnesiac (ttyd0)

	login: root

--- JUNOS 15.1X49-D140.3 built 2018-09-15 19:43:52 UTC

root@%
```


##●管理者モードへ移行

```shell-session
root@% cli
root> configure exclusive
	warning: uncommitted changes will be discarded on exit
	Entering configuration mode

[edit]
root#
```

##●rootパスワード設定

```shell-session
root# set system root-authentication plain-text-password
	New password:
	Retype new password:
```

##●タイムゾーン「JST」設定

```shell-session
[edit]
root# set system time-zone Asia/Tokyo
```

#■interface設定
##●management interface設定

```shell-session
set interfaces fxp0 unit 0 family inet address 10.0.0.254/24
set routing-options static route 0.0.0.0/0 next-hop 10.0.0.1
activate interfaces fxp0
```

##●Public Intarface：ge-0/0/0設定

```shell-session
set interfaces ge-0/0/0 unit 0 family inet address 10.0.2.254/24
set routing-options static route 0.0.0.0/0 next-hop 10.0.0.1
activate interfaces ge-0/0/0
```

##●Private Intarface：ge-0/0/1設定
```shell-session
set interfaces ge-0/0/1 unit 0 family inet address 10.0.10.254/24
set routing-options static route 0.0.0.0/0 next-hop 10.0.2.254
activate interfaces ge-0/0/1
```

##●Virtual Router設定
Manegement用にfxp0.0、VR01 Network用にge-0/0/0.0,ge-0/0/1.0,st0.1,st0.2を設定

```shell-session
set routing-instances VR01 instance-type virtual-router
set routing-instances VR01 interface ge-0/0/0.0
set routing-instances VR01 interface ge-0/0/1.0
set routing-instances VR01 interface st0.1
set routing-instances VR01 interface st0.2
set routing-instances VR01 routing-options static route 0.0.0.0/0 next-hop 10.0.2.1
```

##●interface設定確認

```shell-session
root> show interfaces terse
	Interface               Admin Link Proto    Local                 Remote
	ge-0/0/0                up    up
	ge-0/0/0.0              up    up   inet     10.0.2.254/24
	gr-0/0/0                up    up
	ip-0/0/0                up    up
	lsq-0/0/0               up    up
	lt-0/0/0                up    up
	mt-0/0/0                up    up
	sp-0/0/0                up    up
	sp-0/0/0.0              up    up   inet
																		inet6
	sp-0/0/0.16383          up    up   inet
	ge-0/0/1                up    up
	ge-0/0/1.0              up    up   inet     10.0.10.254/24
	・・・
	fxp0                    up    up
	fxp0.0                  up    up   inet     10.0.0.254/24
	gre                     up    up
	ipip                    up    up
	irb                     up    up
	lo0                     up    up
	lo0.16384               up    up   inet     127.0.0.1           --> 0/0
	lo0.16385               up    up   inet     10.0.0.1            --> 0/0
																							10.0.0.16           --> 0/0
																							128.0.0.1           --> 0/0
																							128.0.0.4           --> 0/0
																							128.0.1.16          --> 0/0
    ・・・
```


##●ssh有効化

```shell-session
[edit]
root# set system services ssh
root# set system root-authentication ssh-rsa "ssh-rsa AAAA"
```

##●Webコンソール設定

```shell-session
[edit]
root# set system services web-management http interface fxp0
```
##●保存

```shell-session
[edit]
root# commit
commit complete
```


#■ライセンス登録

##●ライセンス取得
ここでは[vSRX の 60 日間の無料トライアル](https://www.juniper.net/jp/jp/dm/free-vsrx-trial/)よりライセンスを取得します
<img width="938" alt="00_JuniperHP02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/714726bd-05a3-2d5e-4a42-d7fecc1c5787.png">


##●ライセンス登録

```shell-session
root> request system license add terminal
[Type ^D at a new line to end input,
 enter blank line between each license key]
 ==> ライセンスを記入して Conrol+D 
	DEMO123890 testdesu apaeor bqihmu arwhqb impacr ygk4sf
			embrgu ozqyb  4altdy 2slawu u5lonf i6bmed
			ydgmbz


DEMO123890: successfully added
add license complete (no errors)
```

##●ライセンス登録確認

```shell-session
root> show system license
	License usage:
																	Licenses     Licenses    Licenses    Expiry
		Feature name                       used    installed      needed
		anti_spam_key_sbl                     0            1           0    30 days
		idp-sig                               0            1           0    30 days
		appid-sig                             0            1           0    30 days
		av_key_sophos_engine                  0            1           0    30 days
		wf_key_websense_ewf                   0            1           0    30 days
		Virtual Appliance                     1            1           0    58 days
		remote-access-ipsec-vpn-client        0            2           0    permanent

	Licenses installed:
		License identifier: DEMO123890
		License version: 4
		Software Serial Number: 20150309
		Customer ID: vSRX-JuniperEval
		Features:
			idp-sig          - IDP Signature
				count-down, Original validity: 30 days
			wf_key_websense_ewf - Web Filtering EWF
				count-down, Original validity: 30 days
			anti_spam_key_sbl - Anti-Spam
				count-down, Original validity: 30 days
			appid-sig        - APPID Signature
				count-down, Original validity: 30 days
			av_key_sophos_engine - Anti Virus with Sophos Engine
				count-down, Original validity: 30 days

		License identifier: DEMO123890
		License version: 4
		Software Serial Number: 20150625
		Customer ID: vSRX-JuniperEval
		Features:
			Virtual Appliance - Virtual Appliance
				count-down, Original validity: 60 days
```


#■vSRXアクセス確認

##●ssh接続確認

```shell-session
OnP-inst01:~ user$ ssh root@100.100.100.101
	The authenticity of host '100.100.100.101 (100.100.100.101)' can't be established.
	ECDSA key fingerprint is SHA256:ABzx/RxtEmcWWZw6XZ89.
	Are you sure you want to continue connecting (yes/no)? yes
	Warning: Permanently added '100.100.100.101' (ECDSA) to the list of known hosts.
	Password:
	Last login: Fri Jun 14 23:43:21 2019
	--- JUNOS 15.1X49-D140.3 built 2018-09-15 19:43:52 UTC

root@%
```

##●Webアクセス確認
① VCNの設定で80ポートアクセスできるようにして,vSRXインスタンスのパブリックIPでアクセス
http://100.100.100.101/login

![20_Web_Console.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/7d699930-b632-f85c-b0a0-1d66daaa9fe5.png)

② rootユーザーでアクセスできることを確認
![20_Web_Console02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/522d5e40-8b96-fde6-9151-35d74973ab4a.png)


#■参考
・[【SRX】JUNOS ハンズオントレーニング資料　SRXシリーズ サービス ゲートウェイ コース](https://www.slideshare.net/JuniperJapan/srxjunos-srx)
・[vSRX Deployment Guide for KVM](https://www.juniper.net/documentation/en_US/vsrx/topics/concept/security-vsrx-kvm-understanding.html)
・[vSRX Documentation](https://www.juniper.net/documentation/product/en_US/vsrx)