【注意】FortiGate RAM 2GB以下の小型モデルで ver.7.4.4からProxy機能廃止、ver.7.6.0からSSL-VPN機能廃止 被害者が散見しています> Membership

FortiGate ローカルインポリシーで管理アクセスを制限する方法

目次

本記事について

本記事では、Fortinet 社のファイアウォール製品である FortiGate にて、ローカルインポリシーを設定して FortiGate 宛の管理アクセス等の通信を制限する方法について説明します。

動作確認環境

本記事の内容は以下の機器にて動作確認を行った結果に基づいて作成されています。

  • FortiGate-60F
    • バージョン 7.4.3

ローカルインポリシーとは

ローカルインポリシーは、FortiGate のインターフェース宛の通信に対して適用されるファイアウォールポリシーです。ローカルインポリシーを設定すると、FortiGate 宛の HTTPS、SSH、Ping 等の管理アクセスや、SSL-VPN 通信等のサービスアクセスについて、特定の送信元アドレスからのみアクセスを許可するといった制限をかけることができます。

また、ジオグラフィタイプのアドレスを使用することで、特定の地域からのアクセスを拒否したり、特定の地域からのアクセスのみを許可したり(日本のアドレスからのみ許可など)することができます。

デフォルトではローカルインポリシーは何も設定されていません。ローカルインポリシーは暗黙の許可の動作となるため、どのローカルインポリシーにも合致しない通信は許可されます。

ローカルインポリシーの設定方法

ローカルインポリシーは GUI では設定できず、CLI でのみ設定できます。その設定方法は通常のファイアウォールポリシーの設定方法と似ています。

想定シナリオ

ここでは以下の構成を考えます。

FortiGate の wan1 インターフェースが外部ネットワークに接続していて、wan1 インターフェースのセグメントに管理端末が存在します。wan1 の管理アクセス設定では HTTPS、SSH、Ping を許可しています。

FortiGate への想定しない管理アクセスを防ぐために、ローカルインポリシーを設定して wan1 では HTTPS、SSH、Ping アクセスについて管理端末のアドレス 192.168.179.32 からのアクセスのみ許可し、その他のアドレスからのアクセスは拒否することとします。

ローカルインポリシー設定の準備

ローカルインポリシーの設定では通常のファイアウォールポリシー設定と同様に送信元アドレス、宛先アドレス、サービスを設定します。この設定ではアドレスオブジェクトやサービスオブジェクトを使用するため、あらかじめ使用するオブジェクトを作成しておきます。

今回の想定シナリオでは送信元アドレスとして管理端末のアドレスを指定するため、以下のアドレスオブジェクトを作成しておきます。

サービスについては FortiGate にデフォルトで存在する HTTPS、SSH、PING を使用することとします。

ローカルインポリシーの設定

ローカルインポリシーはconfig firewall local-in-policy内で設定します。

管理端末からの通信を許可するポリシーの設定

まず管理端末からの通信を許可するポリシーを設定します。

新しいローカルインポリシーの edit 項目を作成します。初めて作成するローカルインポリシーのため ID は 1 とします。

config firewall local-in-policy
    edit 1

edit 項目を作成したらローカルインポリシーの各項目を設定します。設定項目は以下の通りです。

設定項目意味設定必須デフォルト値備考
uuidUUID自動生成のため設定不可
intf着信インターフェース
srcaddr送信元アドレス
srcaddr-negate送信元アドレス反転disable条件が NOT srcaddr となる
dstaddr宛先アドレス
dstaddr-negate宛先アドレス反転disable条件が NOT dstaddr となる
actionアクションdenyaccept or deny
serviceサービス
service-negateサービス反転disable条件が NOT service となる
scheduleスケジュール通常は always
status有効化状態enable
commentsコメント

今回の想定シナリオで設定した内容は以下の通りです。

config firewall local-in-policy
    edit 1
        set intf "wan1"
        set srcaddr "192.168.179.32/32"
        set dstaddr "all"
        set action accept
        set service "SSH" "HTTPS" "PING"
        set schedule "always"
    next
end

許可する通信以外は拒否するためのポリシーの設定

ローカルインポリシーは暗黙の許可の動作となるため、上で設定したローカルインポリシーだけでは結局すべての通信が許可されてしまいます。

許可対象通信以外は拒否するために FortiGate の wan1 宛の HTTPS、SSH、Ping 通信についてはすべて拒否するポリシーを適用順序 2 番目のポリシーとして設定します。

設定内容は以下の通りです。送信元アドレスを all にすることですべての送信元アドレスからの wan1 宛の HTTPS、SSH、Ping を拒否します。

config firewall local-in-policy
    edit 2
        set intf "wan1"
        set srcaddr "all"
        set dstaddr "all"
        set action deny
        set service "SSH" "HTTPS" "PING"
        set schedule "always"
    next
end

以上でローカルインポリシーの設定は完了です。

結果としてローカルインポリシーの設定内容は以下の通りとなります。

config firewall local-in-policy
    edit 1
        set uuid 2086feaa-05e1-51ef-2147-10e7d6571c44
        set intf "wan1"
        set srcaddr "192.168.179.32/32"
        set dstaddr "all"
        set action accept
        set service "SSH" "HTTPS" "PING"
        set schedule "always"
    next
    edit 2
        set uuid 3f339552-05e1-51ef-3cec-ffbeb832b261
        set intf "wan1"
        set srcaddr "all"
        set dstaddr "all"
        set service "SSH" "HTTPS" "PING"
        set schedule "always"
    next
end

この設定により、wan1 宛の HTTPS、SSH、Ping 通信は管理端末からのみ許可され、その他の外部のアドレスからは拒否する状況を実現できます。

ローカルトラフィックログの保存設定とログ確認

ローカルインポリシーの動作確認をする際にトラフィックログを確認したいですが、デフォルトではローカルトラフィックのログは保存されない設定になっています。そこでローカルトラフィックのログを保存するように設定します。

まずグローバルログ設定でローカルトラフィックの許可・拒否についてログを保存するよう設定します。

config log setting
    set local-in-allow enable
    set local-in-deny-unicast enable
end

次にメモリロギングのフィルタ設定でローカルトラフィックログを保存するように設定します。

config log memory filter
    set local-traffic enable
end

ローカルトラフィックログの確認

ローカルトラフィックログは GUI の「ログ&レポート > ローカルトラフィック」画面で確認できます。

デフォルトだとアクションとポリシーIDが表示されないので項目名部分を右クリックしてカラムの設定で表示するよう設定します。

以下は許可された送信元アドレスから HTTPS、SSH、Ping アクセスした場合のログです。ポリシーIDから許可のローカルインポリシーが適用されていることが分かります。

以下は許可されていない送信元アドレスから HTTPS、SSH、Ping アクセスした場合のログです。アクションが deny となり、またポリシーIDから拒否のローカルインポリシーが適用されていることが分かります。

ローカルインポリシーの適用順序の変更方法

ローカルインポリシーには、通常のファイアウォールポリシーと同様に、適用順序があります。

適用順序は、config firewall local-in-policyのコンフィグ内の表示順に一致します。

例えば以下のようなコンフィグになっている場合、ID 2 のポリシー、ID 1 のポリシーの順で適用されるため、ID 1 の許可ポリシーは適用されることなくすべての通信が ID 2 のポリシーによって拒否されてしまいます。

config firewall local-in-policy
    edit 2
        set uuid 3f339552-05e1-51ef-3cec-ffbeb832b261
        set intf "wan1"
        set srcaddr "all"
        set dstaddr "all"
        set service "SSH" "HTTPS" "PING"
        set schedule "always"
    next
    edit 1
        set uuid 2086feaa-05e1-51ef-2147-10e7d6571c44
        set intf "wan1"
        set srcaddr "192.168.179.32/32"
        set dstaddr "all"
        set action accept
        set service "SSH" "HTTPS" "PING"
        set schedule "always"
    next
end

ポリシーの適用順序を変更するにはconfig firewall local-in-policy内で以下のコマンドを実行します。

ポリシー適用順序の変更コマンド
  • move <edit番号A> after <edit番号B>
    • <edit番号A>のポリシーを<edit番号B>のポリシーの後 (下) に移動します
  • move <edit番号A> before <edit番号B>
    • <edit番号A>のポリシーを<edit番号B>のポリシーの前 (上) に移動します

以下は実行例です。

FortiGate-60F-01 # config firewall local-in-policy

FortiGate-60F-01 (local-in-policy) # move 1 before 2

FortiGate-60F-01 (local-in-policy) # show
config firewall local-in-policy
    edit 1
        set uuid 2086feaa-05e1-51ef-2147-10e7d6571c44
        set intf "wan1"
        set srcaddr "192.168.179.32/32"
        set dstaddr "all"
        set action accept
        set service "SSH" "HTTPS" "PING"
        set schedule "always"
    next
    edit 2
        set uuid 3f339552-05e1-51ef-3cec-ffbeb832b261
        set intf "wan1"
        set srcaddr "all"
        set dstaddr "all"
        set service "SSH" "HTTPS" "PING"
        set schedule "always"
    next
end

FortiGate-60F-01 (local-in-policy) # end

FortiGate-60F-01 #

HA 構成時の管理インターフェースに関するローカルインポリシー

HA 構成時に管理インターフェース宛のアクセスを制御するためのローカルインポリシーを設定する場合は、ローカルインポリシー設定で以下の設定を追加で設定する必要があります。

config firewall local-in-policy
    edit x
        set ha-mgmt-intf-only enable
    next
end

この設定をしないとintfで管理インターフェースを指定することができません。

【参考】送信元アドレスを日本国内のアドレスに限定する方法

FortiGate のアドレスオブジェクト設定ではジオグラフィというタイプを設定することができます。ジオグラフィタイプのアドレスは、FortiGuard のデータベースに基づいた指定した国・地域に所属するグローバルアドレスのリストです。

このジオグラフィタイプのアドレスを利用して日本国内のグローバルアドレスからのみアクセスを許可するといった設定ができます。

ジオグラフィタイプのアドレスは日々更新されています。FortiGuard から最新のデータベースを取得するためには基本ライセンス (FortiCare) が必要です。

まず以下のように国・地域として日本を指定したジオグラフィタイプのアドレスを作成します。

config firewall address
    edit "Japan-Address"
        set type geography
        set associated-interface "wan1"
        set country "JP"
    next
end

※オブジェクト名、インターフェースは適宜変更してください

ローカルインポリシーで送信元アドレスを日本のアドレスに限定するためには以下のように設定します。

パターン① 日本のアドレス以外を拒否するポリシー

以下は日本のアドレス以外からのアクセスを拒否する場合のポリシー設定例です。

config firewall local-in-policy
    edit 1
        set srcaddr "Japan-Address"
        set srcaddr-negate enable
        set action deny
    next
end

送信元アドレスに日本のアドレスを指定し、それを negate 設定で反転させているため、日本のアドレス以外が対象になります。これを拒否する設定にしているため、日本のアドレス以外からのアクセスを拒否しているということになります。

上記設定例はポイントとなる送信元情報とアクションのみ記載しています。環境に合わせてインターフェース・宛先アドレス・サービス等の項目も追加して設定してください。

パターン② 日本のアドレスのみを許可するポリシー

以下は日本のアドレスからのアクセスを許可する場合のポリシー設定例です。

config firewall local-in-policy
    edit 1
        set srcaddr "Japan-Address"
        set action accept
    next
end

ただし、このポリシーのみだと暗黙の許可で他の送信元アドレスからのアクセスも許可されてしまうため、このポリシーの後にすべての通信を拒否する以下のようなポリシーを設定する必要があります。

config firewall local-in-policy
    edit 2
        set srcaddr "all"
        set action deny
    next
end

上記設定例はポイントとなる送信元情報とアクションのみ記載しています。環境に合わせてインターフェース・宛先アドレス・サービス等の項目も追加して設定してください。

【参考】ジオグラフィタイプのアドレスに含まれるアドレスの確認

diagnose firewall ipgeo ip-list JPコマンドで日本のアドレスリストを確認できます。

FortiGate-60F-01 # diagnose firewall ipgeo ip-list JP
            1.0.16.0 - 1.0.31.255
            1.0.64.0 - 1.0.127.255
            1.1.64.0 - 1.1.127.255
             1.5.0.0 - 1.5.255.255
           1.9.250.0 - 1.9.250.31
#中略
       223.255.203.0 - 223.255.203.255
       223.255.206.0 - 223.255.206.255
Country name:JP Total IP Range:9964

参考資料

あわせて読みたい

【おすすめ】FortiGate の設計構築中なら以下の記事も役立つかもです

Amazon アフィリエイトリンク

以下は Amazon アフィリエイトリンクです。インフラエンジニアにそこそこおすすめなアイテムです。

note メンバーシップへの参加もお待ちしています!

note(ノート)
陰の構築者たちのメンバーシップ|シェイド@陰の構築者 ネットワーク設計構築をする人に役立つメンバーシップです。 独自ブログ(https://shadowgarden.org/)にてネットワークエンジニア向け情報を発信しており、その活動を応援...

【アフィリエイト】おすすめ WordPress テーマ【SWELL

当サイトでは WordPress テーマとして SWELL を使用しています。以前は無料・高機能テーマとして知られる Cocoon を使用していて Cocoon も使いやすかったのですが、SWELL を使い始めてからは SWELL のほうが圧倒的に使いやすいなと思いました。そして何より読み込み速度が速い。SWELL を使い始めてから、過去の Cocoon のブログを見直したときに「あれ、こんなに表示遅かったっけ?」という感覚になりました。

また SWELL はデフォルトでもオシャレなデザインですが柔軟にカスタマイズすることもでき個性のあるサイトを作成できます。さらにブログパーツや広告タグといった再利用可能なブログの「部品」も作成することができ、ブログ作成効率も高いです。

技術ブログやアフィリエイト等での収益化を見据えたブログの作成に SWELL は最適です。初見では価格が高いなと思うと思いますが、私としては SWELL を採用して良かったしそれ以上の価値があると感じています。
ブログの新設やテーマ変更を考えている人は一度 SWELL を検討してみてください。
以下の画像リンクから詳細な情報を確認できます。

レンタルサーバーを探している人には安定性に定評のあるエックスサーバーをお勧めします。
当サイトもエックスサーバーを使用しています。WordPress のインストールも簡単にできます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (3件)

  • ローカルインポリシーの設定、非常に参考になりました。
    すいません、1点わかれば教えて頂きたいのですが、
    WAN1だけでなく、WAN2も合わせて特定のグローバルIPから
    許可したい場合は Edit3 Edit4を追加して設定する形になりますでしょうか?

    • コメントありがとうございます!
      ご認識の通り、インターフェースとして wan2 を指定した同等のポリシーを edit 3、edit 4 として追加設定することになります。

コメントする

目次