本記事について
本記事では、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 項目を作成したらローカルインポリシーの各項目を設定します。設定項目は以下の通りです。
設定項目 | 意味 | 設定必須 | デフォルト値 | 備考 |
---|---|---|---|---|
uuid | UUID | ー | 自動生成のため設定不可 | |
intf | 着信インターフェース | ● | ー | |
srcaddr | 送信元アドレス | ● | ー | |
srcaddr-negate | 送信元アドレス反転 | disable | 条件が NOT srcaddr となる | |
dstaddr | 宛先アドレス | ● | ー | |
dstaddr-negate | 宛先アドレス反転 | disable | 条件が NOT dstaddr となる | |
action | アクション | deny | accept 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 のデータベースに基づいた指定した国・地域に所属するグローバルアドレスのリストです。
このジオグラフィタイプのアドレスを利用して日本国内のグローバルアドレスからのみアクセスを許可するといった設定ができます。
まず以下のように国・地域として日本を指定したジオグラフィタイプのアドレスを作成します。
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 の設計構築中なら以下の記事も役立つかもです
- 基礎知識
- HA (冗長構成) 設定
- FortiGate HA モードの Active-Passive と Active-Active の違いを解説します
- FortiGate HA(冗長構成)の概要と設定ガイド【詳しく解説】※note記事
- FortiGate HA 構成時のコンフィグ同期の仕様について解説します
- FortiGate HA 構成時の NTP,Syslog,SNMP 等の送信元インターフェースを解説 [ha-direct 設定]
- FortiGate HA 構成時の仮想 MAC アドレスについて解説します
- FortiGate HA ハートビート送信間隔と障害判定しきい値の設定ガイド
- FortiGate HA 構成時のバックアップ及びリストア実施ガイド
- FortiGate HA 構成でのモニタインターフェースダウン時の通信断時間について解説
- FortiGate HA 構成に関するQ&A 【良くありそうな疑問集】
- VDOM (バーチャルドメイン) 設定
- トランスペアレントモード設定
- システム系設定
- 管理者アカウント設定
- 時刻・NTP 設定
- ロギング・Syslog 送信設定
- SNMP 設定
- DHCP サーバ機能設定
- Proxy サーバ機能設定
- アラートメール送信
- ネットワーク系設定
- インターフェース設定
- ルーティング設定
- DNS 設定
- NAT 及び NAPT 設定
- ファイアウォール系設定
- アドレス設定
- サービス設定
- ファイアウォールポリシー設定
- ゾーンを使用したポリシー設定
- VPN 系設定
- Tips
Amazon アフィリエイトリンク
以下は Amazon アフィリエイトリンクです。インフラエンジニアにそこそこおすすめなアイテムです。
note メンバーシップへの参加もお待ちしています!
【アフィリエイト】おすすめ WordPress テーマ【SWELL】
当サイトでは WordPress テーマとして SWELL を使用しています。以前は無料・高機能テーマとして知られる Cocoon を使用していて Cocoon も使いやすかったのですが、SWELL を使い始めてからは SWELL のほうが圧倒的に使いやすいなと思いました。そして何より読み込み速度が速い。SWELL を使い始めてから、過去の Cocoon のブログを見直したときに「あれ、こんなに表示遅かったっけ?」という感覚になりました。
また SWELL はデフォルトでもオシャレなデザインですが柔軟にカスタマイズすることもでき個性のあるサイトを作成できます。さらにブログパーツや広告タグといった再利用可能なブログの「部品」も作成することができ、ブログ作成効率も高いです。
技術ブログやアフィリエイト等での収益化を見据えたブログの作成に SWELL は最適です。初見では価格が高いなと思うと思いますが、私としては SWELL を採用して良かったしそれ以上の価値があると感じています。
ブログの新設やテーマ変更を考えている人は一度 SWELL を検討してみてください。
以下の画像リンクから詳細な情報を確認できます。
レンタルサーバーを探している人には安定性に定評のあるエックスサーバーをお勧めします。
当サイトもエックスサーバーを使用しています。WordPress のインストールも簡単にできます。
コメント
コメント一覧 (3件)
ローカルインポリシーの設定、非常に参考になりました。
すいません、1点わかれば教えて頂きたいのですが、
WAN1だけでなく、WAN2も合わせて特定のグローバルIPから
許可したい場合は Edit3 Edit4を追加して設定する形になりますでしょうか?
コメントありがとうございます!
ご認識の通り、インターフェースとして wan2 を指定した同等のポリシーを edit 3、edit 4 として追加設定することになります。
ありがとうございます!大変助かります!