FortiGate でファイアウォールポリシーを設定するときは、制御したい送信元や宛先の IP アドレスなどを、アドレスオブジェクトとして登録しておきます。アドレスオブジェクトには、IP アドレス(サブネット、IP 範囲)だけでなく、FQDN や国・地域(ジオグラフィ)も指定できます。
この記事では、よく使うサブネット、IP 範囲、FQDN(ワイルドカード FQDN を含む)、ジオグラフィの4つのタイプを設定し、ポリシーで拒否して動作を確認します。検証時の FortiOS は 7.0.3 です。
- サブネットと IP 範囲のアドレスの設定と動作
- FQDN のアドレスと、FortiGate 自身の名前解決
- ワイルドカード FQDN が、通過する DNS 応答から IP アドレスを集めるしくみ
- ジオグラフィ(国・地域)のアドレスで、宛先の国ごとに制御する方法
アドレスオブジェクトの作り方
ポリシー&オブジェクト ›› アドレス を開き、新規作成 ›› アドレス をクリックすると、新しいアドレスオブジェクトを作れます。タイプ で、アドレスの指定のしかたを選びます。
この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
| カテゴリ | ◉ アドレス○ プロキシアドレス |
| 名前 | |
| 1タイプ | ✓ サブネットIP範囲 FQDN ジオグラフィ ダイナミック デバイス(MACアドレス) |
| インターフェース | |
| スタティックルート設定 | OFF |
この記事では、このうちサブネット、IP 範囲、FQDN、ジオグラフィを確認します。どのタイプでも、作ったアドレスオブジェクトはファイアウォールポリシーの送信元や宛先に指定して使います。検証では、LAN 側の端末からインターネット(wan1 (port3))に向かう通信を、各アドレスを宛先にしたポリシーで拒否します。
サブネット
サブネットのアドレスを作る
タイプ を サブネット にし、IP アドレスとネットマスク(今回は 8.8.8.8/32)を設定します。名前は任意(今回は Subnet)で、インターフェースはインターネット側の wan1 (port3) にします。
| カテゴリ | ◉ アドレス○ プロキシアドレス |
| 1名前 | Subnet |
| 2タイプ | サブネット |
| 3IP/ネットマスク | 8.8.8.8 255.255.255.255 |
| 4インターフェース | wan1 (port3) |
| スタティックルート設定 | OFF |
| No. | 項目 | 設定する内容 |
|---|---|---|
| 1 | 名前 | 任意の名前です。今回は Subnet にします。 |
| 2 | タイプ | サブネット を選びます。 |
| 3 | IP/ネットマスク | 8.8.8.8 255.255.255.255 のようにネットマスクで書いても、8.8.8.8/32 のようにプレフィックス長で書いてもかまいません。 |
| 4 | インターフェース | このアドレスがある側のインターフェースです。今回はインターネット側の wan1 (port3) にします。 |
OK をクリックすると、一覧に登録されます。
| 名前 | 詳細 | インターフェース |
|---|---|---|
| ⊟ IP範囲/サブネット | ||
| FABRIC_DEVICE | 0.0.0.0/0 | |
| 1Subnet | 8.8.8.8/32 | wan1 (port3) |
| all | 0.0.0.0/0 | |
ポリシーで拒否して確かめる
ポリシー&オブジェクト ›› ファイアウォールポリシー で、このアドレスを宛先にして ICMP を拒否するポリシーを作ります。
| 名前 | From | To | 送信元 | 宛先 | サービス | アクション |
|---|---|---|---|---|---|---|
| Deny_Subnet | lan (port2) | wan1 (port3) | all | 1Subnet | ALL_ICMP | ⊘ 拒否 |
| LAN_to_Internet | lan (port2) | wan1 (port3) | all | all | ALL | ✔ 許可 |
端末から 8.8.8.8 に ping を実行し、ログ&レポート ›› 転送トラフィック を確認すると、Deny_Subnet のポリシーで拒否されています。
| 送信元 | 宛先 | サービス | 結果 | ポリシーID |
|---|---|---|---|---|
| (伏せています) | 8.8.8.8 | PING | Deny: ポリシー違反 | Deny_Subnet (3) |
| (伏せています) | 8.8.8.8 | PING | Deny: ポリシー違反 | Deny_Subnet (3) |
| (伏せています) | 8.8.8.8 | PING | Deny: ポリシー違反 | Deny_Subnet (3) |
| (伏せています) | 8.8.8.8 | PING | Deny: ポリシー違反 | Deny_Subnet (3) |
IP 範囲
IP 範囲のアドレスを作る
サブネットではなく、IP アドレスの範囲を指定します。タイプ を IP範囲 にし、範囲(今回は 8.0.0.0-8.255.255.255)を設定します。名前は任意(今回は IP_Range)で、インターフェースは wan1 (port3) にします。
| カテゴリ | ◉ アドレス○ プロキシアドレス |
| 1名前 | IP_Range |
| 2タイプ | IP範囲 |
| 3IP範囲 | 8.0.0.0-8.255.255.255 |
| 4インターフェース | wan1 (port3) |
| スタティックルート設定 | OFF |
IP 範囲は、開始アドレスと終了アドレスを - でつないで指定します。サブネットの境界にそろわない範囲(たとえば 10.0.0.10-10.0.0.20)も1つのオブジェクトで指定できます。OK をクリックすると、一覧に登録されます。
| 名前 | 詳細 | インターフェース |
|---|---|---|
| ⊟ IP範囲/サブネット | ||
| FABRIC_DEVICE | 0.0.0.0/0 | |
| 1IP_Range | 8.0.0.0 – 8.255.255.255 | wan1 (port3) |
| Subnet | 8.8.8.8/32 | wan1 (port3) |
ポリシーで拒否して確かめる
このアドレスを宛先にして、ICMP を拒否するポリシーを作ります。
| 名前 | From | To | 送信元 | 宛先 | サービス | アクション |
|---|---|---|---|---|---|---|
| Deny_IP_Range | lan (port2) | wan1 (port3) | all | 1IP_Range | ALL_ICMP | ⊘ 拒否 |
| LAN_to_Internet | lan (port2) | wan1 (port3) | all | all | ALL | ✔ 許可 |
端末から 8.0.0.1、8.0.0.2…と順番に ping を実行し、転送トラフィックを確認すると、範囲内の宛先への ping が Deny_IP_Range のポリシーで拒否されています。
| 送信元 | 宛先 | サービス | 結果 | ポリシーID |
|---|---|---|---|---|
| (伏せています) | 8.0.0.8 | PING | Deny: ポリシー違反 | Deny_IP_Range (3) |
| (伏せています) | 8.0.0.7 | PING | Deny: ポリシー違反 | Deny_IP_Range (3) |
| (伏せています) | 8.0.0.6 | PING | Deny: ポリシー違反 | Deny_IP_Range (3) |
| (伏せています) | 8.0.0.5 | PING | Deny: ポリシー違反 | Deny_IP_Range (3) |
| (伏せています) | 8.0.0.4 | PING | Deny: ポリシー違反 | Deny_IP_Range (3) |
| (伏せています) | 8.0.0.3 | PING | Deny: ポリシー違反 | Deny_IP_Range (3) |
| (伏せています) | 8.0.0.2 | PING | Deny: ポリシー違反 | Deny_IP_Range (3) |
| (伏せています) | 8.0.0.1 | PING | Deny: ポリシー違反 | Deny_IP_Range (3) |
FQDN
FortiGate の DNS 設定を確認する
FQDN のアドレスでは、FortiGate 自身が FQDN(今回は hirotanoblog.com)を名前解決し、解決した IP アドレスをアドレスオブジェクトに登録します。そのため、FortiGate 自身が名前解決できる必要があります。
ネットワーク ›› DNS で、FortiGate に DNS サーバが設定されていることを確認します。初期設定では FortiGuard の DNS サーバを使います。
| 1DNSサーバ | ◉ FortiGuard サーバを利用○ 指定 |
| プライマリDNSサーバ | 208.91.112.53 13,600 ms |
| セカンダリDNSサーバ | 208.91.112.52 110 ms |
| ローカルドメイン名 |
検証時の画面では、FortiGuard の DNS サーバとして 208.91.112.53/208.91.112.52 が表示されています。FortiOS 7.0 以降のドキュメントでは、FortiGuard の DNS サーバとして 96.45.45.45/96.45.46.46(DNS over TLS)が案内されています。お使いの環境の値は、ネットワーク ›› DNS で確認してください。
FQDN のアドレスを作る
タイプ を FQDN にし、hirotanoblog.com を設定します。
| カテゴリ | ◉ アドレス○ プロキシアドレス |
| 名前 | hirotanoblog |
| 1タイプ | FQDN |
| 2FQDN | hirotanoblog.com |
| インターフェース | wan1 (port3) |
| スタティックルート設定 | OFF |
OK をクリックすると一覧に登録されますが、登録した直後は名前解決ができていないため、解決先に「未解決のFQDN」と表示されます。
| アドレス | hirotanoblog |
| タイプ | FQDN |
| FQDN | hirotanoblog.com |
| インターフェース | wan1 (port3) |
| 1解決先 | ⚠ 未解決のFQDN: hirotanoblog.com |
| リファレンス | 0 |
しばらくして名前解決ができると、表示が消え、解決先に IP アドレスが表示されます。
| アドレス | hirotanoblog |
| タイプ | FQDN |
| FQDN | hirotanoblog.com |
| インターフェース | wan1 (port3) |
| 1解決先 | 183.181.81.57 |
| リファレンス | 0 |
ポリシーで拒否して確かめる
このアドレスを宛先にして、すべてのサービスを拒否するポリシーを作ります。
| 名前 | From | To | 送信元 | 宛先 | サービス | アクション |
|---|---|---|---|---|---|---|
| Deny_FQDN | lan (port2) | wan1 (port3) | all | 1hirotanoblog | ALL | ⊘ 拒否 |
| LAN_to_Internet | lan (port2) | wan1 (port3) | all | all | ALL | ✔ 許可 |
端末から hirotanoblog.com に ping を実行すると、解決先の IP アドレスへの ping が Deny_FQDN のポリシーで拒否されています。
| 送信元 | 宛先 | サービス | 結果 | ポリシーID |
|---|---|---|---|---|
| (伏せています) | 183.181.81.57 | PING | Deny: ポリシー違反 | Deny_FQDN (3) |
| (伏せています) | 183.181.81.57 | PING | Deny: ポリシー違反 | Deny_FQDN (3) |
| (伏せています) | 183.181.81.57 | PING | Deny: ポリシー違反 | Deny_FQDN (3) |
| (伏せています) | 183.181.81.57 | PING | Deny: ポリシー違反 | Deny_FQDN (3) |
ワイルドカード FQDN
FQDN との違い
FortiGate は、*.google.com のようなワイルドカード FQDN もサポートしています(ファイアウォールポリシーでの利用は FortiOS 6.2.2 から)。
FQDN のアドレスでは、FortiGate 自身が名前解決していました。ワイルドカード FQDN では、FortiGate は自分で名前解決をせず、FortiGate を通過するクライアントの DNS 応答を見て、そこに含まれる IP アドレスをアドレスオブジェクトに登録します。
そのため、クライアントと DNS サーバの間の通信が必ず FortiGate を通るように配置する必要があります。
- Fortinet のドキュメントでは、クライアントと FortiGate が同じ DNS サーバを使うことが推奨されています。同じ名前でも、DNS サーバによって返す IP アドレスが違うことがあるためです。
- FortiGate が DNS の応答を読めないと IP アドレスを集められないので、DNS over HTTPS の通信では動作しません。
- 集めた IP アドレスは、DNS レコードの TTL が切れるまで保持され、切れると次の問い合わせまで外されます。1つのワイルドカード FQDN に保持できる IP アドレスは最大 1000 個です。
ワイルドカード FQDN のアドレスを作る
タイプ を FQDN にし、FQDN に *.google.com を設定します。
| カテゴリ | ◉ アドレス○ プロキシアドレス |
| 名前 | Wildcard-FQDN |
| 1タイプ | FQDN |
| 2FQDN | *.google.com |
| インターフェース | wan1 (port3) |
| スタティックルート設定 | OFF |
OK をクリックすると一覧に登録されますが、この時点ではまだ DNS 応答を集めていないので、「未解決のFQDN」と表示されます。
| アドレス | Wildcard-FQDN |
| タイプ | FQDN |
| FQDN | *.google.com |
| インターフェース | wan1 (port3) |
| 1収集された解決済みIP | ⚠ 未解決のFQDN: *.google.com |
| リファレンス | 0 |
DNS 応答から IP アドレスが集まることを確かめる
クライアントから FortiGate を経由して、*.google.com に当てはまる名前を解決します。まず、mail.google.com を名前解決します。
クライアント
>nslookup
>server 8.8.8.8
Default Server: dns.google
Address: 8.8.8.8
> mail.google.com
Server: dns.google
Address: 8.8.8.8
Non-authoritative answer:
Name: googlemail.l.google.com
Addresses: 2404:6800:4004:821::2005
172.217.31.165
Aliases: mail.google.com
DNS の応答で 172.217.31.165 が返ってきました。FortiGate はこのアドレスを集め、アドレスオブジェクトに登録します。
| アドレス | Wildcard-FQDN |
| FQDN | *.google.com |
| 1収集された解決済みIP | 172.217.31.165 |
続けて、クライアントから drive.google.com を名前解決します。
クライアント
>nslookup
>server 8.8.8.8
Default Server: dns.google
Address: 8.8.8.8
> drive.google.com
Server: dns.google
Address: 8.8.8.8
Non-authoritative answer:
Name: drive.google.com
Addresses: 2404:6800:4004:813::200e
142.250.196.142
あとから解決されたアドレスも、追加で登録されています。
| アドレス | Wildcard-FQDN |
| FQDN | *.google.com |
| 1収集された解決済みIP | 142.250.196.142 172.217.31.165 |
このアドレスを宛先にして、ICMP を拒否するポリシーを作ります。
| 名前 | From | To | 送信元 | 宛先 | サービス | アクション |
|---|---|---|---|---|---|---|
| Deny_WildcardFQDN | lan (port2) | wan1 (port3) | all | 1Wildcard-FQDN | ALL_ICMP | ⊘ 拒否 |
| LAN_to_Internet | lan (port2) | wan1 (port3) | all | all | ALL | ✔ 許可 |
端末から mail.google.com に ping を実行すると、Deny_WildcardFQDN のポリシーで拒否されています。
| 送信元 | 宛先 | サービス | 結果 | ポリシーID |
|---|---|---|---|---|
| (伏せています) | 172.217.31.165 | PING | Deny: ポリシー違反 | Deny_WildcardFQDN (3) |
| (伏せています) | 172.217.31.165 | PING | Deny: ポリシー違反 | Deny_WildcardFQDN (3) |
| (伏せています) | 172.217.31.165 | PING | Deny: ポリシー違反 | Deny_WildcardFQDN (3) |
| (伏せています) | 172.217.31.165 | PING | Deny: ポリシー違反 | Deny_WildcardFQDN (3) |
| (伏せています) | 172.217.31.165 | PING | Deny: ポリシー違反 | Deny_WildcardFQDN (3) |
FQDN に対応する IP アドレスを CLI で確認する
FQDN に対応して保持している IP アドレスは、diagnose test application dnsproxy コマンドで確認できます。このコマンドの後ろにオプション番号を付けると、さまざまな情報を表示できます。番号の一覧は、diagnose test application dnsproxy だけを入力して Enter を押すと表示されます。
FortiGate
FG1 # diagnose test application dnsproxy
worker idx: 0
1. Clear DNS cache
2. Show stats
3. Dump DNS setting
4. Reload FQDN
5. Requery FQDN
6. Dump FQDN
7. Dump DNS cache
8. Dump DNS DB
9. Reload DNS DB
10. Dump secure DNS policy/profile
11. Dump Botnet domain
12. Reload Secure DNS setting
13. Show Hostname cache
14. Clear Hostname cache
15. Show SDNS rating cache
16. Clear SDNS rating cache
17. DNS debug bit mask
18. DNS debug obj mem
99. Restart dnsproxy worker
FQDN と対応する IP アドレスを確認するには、6. Dump FQDN を使います。
FortiGate
FG1 # diagnose test application dnsproxy 6 worker idx: 0 vfid=0 name=hirotanoblog.com ver=IPv4 timer running, min_ttl=3600:3441, cache_ttl=0 , slot=-1, num=1, wildcard=0 183.181.81.57 (ttl=3600:3447:3447) vfid=0 name=*.google.com ver=IPv4 min_ttl=100:0, cache_ttl=0 , slot=-1, num=2, wildcard=1 172.217.31.165 (ttl=298:127:127) 142.250.196.142 (ttl=100:31:31)
| 表示 | 意味 |
|---|---|
| name=hirotanoblog.com | FQDN のアドレスです。wildcard=0 で、FortiGate 自身が名前解決した 183.181.81.57 を保持しています。 |
| name=*.google.com | ワイルドカード FQDN のアドレスです。wildcard=1 で、DNS 応答から集めた 172.217.31.165 と 142.250.196.142 の2つ(num=2)を保持しています。 |
| ttl=… | IP アドレスごとの TTL の情報です。 |
このほか、内部の DNS キャッシュを確認するときは 7. Dump DNS cache、DNS キャッシュを消すときは 1. Clear DNS cache を使います。詳しくは、Fortinet の DNS troubleshooting – Administration Guide FortiOS 7.0.3 を参考にしてください。
ジオグラフィ(地域)
ジオグラフィのアドレスを作る
タイプ を ジオグラフィ にし、国/地域(今回は米国(United States))を選びます。名前は任意(今回は United States)で、インターフェースは wan1 (port3) にします。国/地域は、一覧の検索欄に国名の一部を入れると絞り込めます。
| カテゴリ | ◉ アドレス○ プロキシアドレス |
| 名前 | United States |
| 1タイプ | ジオグラフィ |
| 2国/地域 | United States |
| インターフェース | wan1 (port3) |
ポリシーで拒否して確かめる
このアドレスを宛先にして、すべてのサービスを拒否するポリシーを作ります。
| 名前 | From | To | 送信元 | 宛先 | サービス | アクション |
|---|---|---|---|---|---|---|
| Deny_Geo | lan (port2) | wan1 (port3) | all | 1United States | ALL | ⊘ 拒否 |
| LAN_to_Internet | lan (port2) | wan1 (port3) | all | all | ALL | ✔ 許可 |
端末からいくつかの Web サイトにアクセスし、転送トラフィックを確認すると、宛先の IP アドレスが米国(United States)のものだけが Deny_Geo のポリシーで拒否され、ほかの国の宛先は LAN_to_Internet のポリシーで許可されています。
| 送信元 | 宛先 | サービス | 結果 | ポリシーID |
|---|---|---|---|---|
| (伏せています) | 米国(伏せています) | HTTPS | Deny: ポリシー違反 | Deny_Geo (3) |
| (伏せています) | 米国(伏せています) | HTTPS | Deny: ポリシー違反 | Deny_Geo (3) |
| (伏せています) | シンガポール(伏せています) | HTTPS | ✔ 4.47 kB / 22.06 kB | LAN_to_Internet (4) |
| (伏せています) | 米国(伏せています) | HTTPS | Deny: ポリシー違反 | Deny_Geo (3) |
| (伏せています) | シンガポール(伏せています) | HTTPS | ✔ 3.73 kB / 8.55 kB | LAN_to_Internet (4) |
| (伏せています) | 米国(伏せています) | HTTPS | Deny: ポリシー違反 | Deny_Geo (3) |
| (伏せています) | 日本(伏せています) | HTTPS | ✔ 3.34 kB / 5.51 kB | LAN_to_Internet (4) |
| (伏せています) | シンガポール(伏せています) | HTTPS | ✔ 2.37 kB / 19.09 kB | LAN_to_Internet (4) |
| (伏せています) | 日本(伏せています) | HTTPS | ✔ 5.05 kB / 15.34 kB | LAN_to_Internet (4) |
| (伏せています) | 米国(伏せています) | HTTPS | Deny: ポリシー違反 | Deny_Geo (3) |
| (伏せています) | 米国(伏せています) | HTTPS | Deny: ポリシー違反 | Deny_Geo (3) |
ジオグラフィのアドレスは、サイトの名前ではなく、宛先の IP アドレスがどの国に割り当てられているかで判定されます。
まとめ
| タイプ | 指定のしかた | IP アドレスの決まり方 |
|---|---|---|
| サブネット | 8.8.8.8/32(8.8.8.8 255.255.255.255) | 設定した値そのもの |
| IP 範囲 | 8.0.0.0-8.255.255.255 | 設定した値そのもの |
| FQDN | hirotanoblog.com | FortiGate 自身が名前解決する |
| ワイルドカード FQDN | *.google.com | FortiGate を通過する DNS 応答から集める |
| ジオグラフィ | United States | 宛先の IP アドレスがどの国のものかで判定する |
FQDN やワイルドカード FQDN が「未解決」のままのときは、FortiGate の DNS 設定や、DNS の通信が FortiGate を通っているかを確認し、diagnose test application dnsproxy 6 で保持している IP アドレスを確かめてください。
コメント