KUROKO ConnectでFortigate SSL-VPNを安全に利用してみた

FortigteのSSL-VPNはインターネット用にリモートでFortigateの内部のPCやサーバーなどにアクセスできる非常に便利でかつ、安全に通信ができる仕組みです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3869727/9e286e98-4c8e-8ca2-fcbf-37c9a1954eb9.png)

一方で、SSL-VPNはFortigate製品に限らず脆弱性が頻繁に公開されています。
例）
https://www.ipa.go.jp/security/security-alert/2023/alert20240209.html
https://www.ipa.go.jp/security/security-alert/2022/alert20221213.html
https://www.jpcert.or.jp/newsflash/2020112701.html

そのため、SSL-VPNを利用する場合、

・接続元制限
・クライアント証明書認証
・接続に使用するアカウントの二要素認証対応
等が最低限必要ですが、脆弱性を潰すためには常に最新のファームウェアで運用する必要があります。

ですが、ここからはあまり知られていない、というかおそらく皆さん目から鱗だと思うようなSSL-VPNの使い方をご紹介します。
一般的に、SSL-VPNをインターネットを介して利用する場合、SSL-VPNのListenインターフェースをFortigateのインターネットポート（WAN1やWAN2）に設定されると思いますが、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3869727/a3e0fd87-f668-507d-a922-460bdbf1cd8e.png)

#### 実は、KUROKO Connectを使うことで、Listenポートをインターネットに開放することなく利用することができるのです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3869727/85ab2744-5361-e91d-86c9-bfc4f83b0b17.png)

え？そんなことしたらインターネットからSSL-VPNで接続できないのでは？と思われるかとおもいますが、ここがKUROKO Connectのミソなんです。

SSL-VPNのListenインターフェースをインターネットインターフェースにしないメリットは以下の通りです。

:::note info
・インターネットからのポートスキャンでSSL-VPNポートが存在しない（見つけられない）
・第三者がSSL-VPNに対しての接続や、脆弱性をついた攻撃を行うことができない
・SSL-VPNに関する脆弱性情報が公開されても、速やかなファームウェアアップデートができなくても外部からの攻撃リスクは低い
:::
※勿論ファームウェアを常に最新で利用することを推奨します。

本当にそんなことできるの？とお思いの方もいると思いますので、早速実践してみましょう。

# 1. システム構成
今回の構成は次の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3869727/edfe770b-b681-c08c-cbe7-857ee909afc5.png)

# 2.Forrigateの設定
インターネットに接続されたFortigte のSSL-VPNをKUROKO Connectを介して接続して、リモート接続用PCで現場ネットワークにアクセスしてみます。
Fortigateの管理画面にアクセスして、SSL-VPNのListenインターフェースをlanに設定します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3869727/7d2a47de-686a-b69d-5fbd-7e3efbd66b9e.png)

ネットワークインタフェースの構成はこの様になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3869727/cda8776d-4f30-67cf-072a-f25426e98c5b.png)

lanインターフェース側にSSL-VPN用のトンネルインターフェース（McreVPN）が設定されていることが確認できます。

# 3.KUROKO Connect側設定
続いて、KUROKO Connect側で接続先の登録を行います。
接続先の設定については別記事で紹介していますので、そちらを参照してください。
[KUROKO Connectの接続先設定を試してみた](https://qiita.com/MCREST/items/ec586541104ba810c22e)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3869727/35d34847-4749-f11d-d061-053b2277311f.png)

接続先追加で、Fortigate（192.168.250.254）のSSL-VPNポート（10443）を設定します。

# 4.接続テスト
それでは実際にSSL-VPN接続を行ってみましょう。

KUROKO Connectの接続から、該当Appsを選択し、接続先にSSLVPN（TCP 192.168.250.254:10443）を選択して「接続」を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3869727/807050e8-1083-f202-6de8-c6c153b3c3e8.png)

KUROKO Connectで生成された接続先情報＝FortiClient（Fortigate SSL-VPNで使用するアプリケーション）で使用する接続情報になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3869727/6acae23b-05ab-0bd4-7a96-0aee6de37d2b.png)

PCにインストールしたFortiClientを起動して、接続先情報を登録します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3869727/32dffb32-f48c-d26e-e3f4-5501b849a6cb.png)

設定を保存して、接続してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3869727/477949d9-12c8-88f1-d6dd-a4c07ce0a274.png)

問題なくSSL-VPNで接続ができました。

# 5.まとめ
今回はKUROKO Connectを使ってFortigate のSSL-VPNを安全に接続する方法を紹介しました。
Fortigate SSL-VPNをインターネットに公開しないことで、不正アクセスや攻撃、不正刺入などの脅威から自社ネットワークを保護することができます。
何よりもリモート接続で使用するためにSSL-VPNを利用している場合、接続していない時間の方が圧倒的に多いと思いますので、知らない間に不正アクセスされていたといったリスク回避のためにも、こういった方法でSSL-VPNができることを知ってもらいたくて今回は検証してみました。