[FortiGate] SSL VPN に二要素認証 (Slack) を設定する

[FortiGate] SSL VPN に二要素認証 (Slack) を設定する

こんにちは、じんないです。

昨今のコロナ禍によるテレワークの増加に伴い、VPN を使用して社内の環境へアクセスするケースも増加しています。また、それに伴って VPN 装置の脆弱性を悪用した攻撃も増加しています。

2023年も続くランサムウエア攻撃の脅威、狙われ続ける病院とVPN装置 | 日経クロステック(xTECH)

脆弱性への対処として最新のパッチを適用することももちろんですが、VPN 接続のセキュリティを向上させることも必須と言えるのではないでしょうか。

今回は FortiGate 60F で SSL VPN に二要素認証を設定してみます。二要素認証に必要なトークンは Slack (メール経由) へ通知させてみようと思います。

想定環境

  • FortiGate 60F
  • Forti OS v6.4.11
  • FortiClient VPN 7.0.7.0345
  • Slack を利用している

すでに ユーザ名・パスワードによる SSL VPN が構成されていることを前提としています。

準備

SMTP サーバの設定

まず、トークンを送信するために SMTP サーバの設定が必要です。

FortiGate の Web インタフェースへログインし左ペイン システム > 設定 から SMTP サーバを設定します。

005

Slack メールアドレスの取得

Slack を開きトークン受信用のメールアドレスを取得します。お持ちのメールアドレスでもかまいません。

自分のダイレクトメッセージチャンネルの右クリックメニューから、会話の詳細を表示する を開きます。

001

インテグレーションタブから この会話にメールを送信する をクリックします。

002

自分のチャンネルへ投稿されるメールアドレスを取得します。後で使用しますのでメモしておきましょう。このメールアドレスは後からでも参照できます

003

二要素認証の設定

ユーザ定義の設定

左ペイン ユーザ&認証 > ユーザ定義 から 新規作成 をクリックします。

004

今回は LDAP ユーザを設定します。このあたりはお使いの環境に合わせて読み替えてください。

リモート LDAP ユーザ を選択し次へ進みます。

006

認証先の LDAP サーバを指定し、次へ進みます。

007

二要素認証を設定するユーザを選択し、右クリックメニューから 選択したものを追加 します。

008

二要素認証の有効化とメールアドレスの設定

ターミナルソフトから FortiGate のコマンドラインインタフェースへログインします。

※ E メールベースの二要素認証はコマンドラインインタフェースからのみ有効化できるようです。

以下のコマンドを入力し二要素認証の有効化とトークン送付先のメールアドレスを設定します。

fw1 # config user local

fw1 (local) # edit <ユーザ名>

fw1 (ユーザ名) # set two-factor email

fw1 (ユーザ名) # set email-to <Slack のメールアドレス>

fw1 (ユーザ名) # end

ユーザの数だけ繰り返し設定します。

Web インタフェースへ戻り、前項で作成したユーザの編集画面を開きます。E メールベースの二要素認証が有効化され、メールアドレスが設定されていることが確認できます。

009

動作確認

通常どおり FortiClient VPN からユーザ名とパスワードを入力し接続します。

010

するとトークンを入力する項目が表示されるので Slack に通知されるトークンを入力し、OK をクリックします。

011

Slack へはこのように通知されます。

012

入力したトークンに誤りがなければ接続が完了します。

013

トークンの有効期限が切れる場合

メールの遅延やトークンの入力間違い等で二要素認証に失敗し接続できないことがあります。トークンの有効期限は60秒です。

FortiGate のコマンドラインインタフェースから以下のコマンドを実行することでトークンの有効期限を延長できます。

今回の例ではタイムアウトを120秒に設定しました。

fw1 # config system global

fw1 (global) # set remoteauthtimeout 120

fw1 (global) # set two-factor-email-expiry 120

fw1 (global) # end

今のところデフォルトでも特に問題なく接続できていますが、時間切れになる場合は試してみてはどうでしょうか。

ではまた。

参考

jinna-i