FQDNベースのPolicyによる通信阻害テスト(Juniper SRX100)

概要

「一定の条件を満たした時だけご褒美としてアズールレーンのプレイを許可する仕組みを作ろうシリーズ」の一環として、
自宅Wifi環境下でのアズールレーンのプレイ及び公式サイトへのWebアクセスをコントロール(任意に許可/拒否)する仕組みを作りました。

方針

自宅のファイアウォール(Juniper SRX100)にて、

  • アズレン起動時にアプリが問い合わせに行くAPIサーバ「azurapi.yostar.co.jp」宛のOutbound通信を拒否するポリシー
  • アズレンの公式サイト「azurlane.jp」宛のOutbound通信を拒否するポリシー

上記のFQDNベースのSecurity Policyを追加し、APIでEnable/Disableを切り替えることで、アズレンのプレイ許可/拒否を制御する。

参考:
Configuration example using fully qualified domain names in security policies

設定手順

Security Zoneの設定

設定変更前のZone設定

security-zone untrust {
    screen untrust-screen;
    interfaces {
        fe-0/0/0.0 {
            host-inbound-traffic {
                system-services {
                    dhcp;
                    tftp;
                }
            }
        }
    }
}

Security Zoneへのアドレスブック追加

FQDNベースのPolicyを利用するためには、当該のFQDNをアドレスブックに登録する必要があります。

  • FQDN「azurapi.yostar.co.jp」は「AZURAPI」として登録
  • FQDN「azurlane.jp」は「AZURLANE」として登録
root@srx100-1# set security zones security-zone untrust address-book address AZURAPI dns-name azurapi.yostar.co.jp ipv4-only

root@srx100-1# set security zones security-zone untrust address-book address AZURLANE dns-name azurlane.jp ipv4-only


root@srx100-1# show security zones
security-zone untrust {
    address-book {
        address AZURAPI {
            dns-name azurapi.yostar.co.jp {
                ipv4-only;
            }
        }
        address AZURLANE {
            dns-name azurlane.jp {
                ipv4-only;
            }
        }
    }

Security policyの追加

設定前のPolicy

root@srx100-1# show security policies
from-zone trust to-zone untrust {
    policy trust-to-untrust {
        match {
            source-address any;
            destination-address any;
            application any;
        }
        then {
            permit;
        }
    }
}

DENYポリシーの作成(1つ目)

azurapi.yostar.co.jp宛を拒否するポリシーを追加します。

root@srx100-1# set security policies from-zone trust to-zone untrust policy DENY-AZURAPI match source-address any

root@srx100-1# set security policies from-zone trust to-zone untrust policy DENY-AZURAPI match destination-address AZURAPI

root@srx100-1# set security policies from-zone trust to-zone untrust policy DENY-AZURAPI match application any

root@srx100-1# set security policies from-zone trust to-zone untrust policy DENY-AZURAPI then deny

1つ目のポリシーが入ったか確認します。

root@srx100-1# show security policies
from-zone trust to-zone untrust {
    policy trust-to-untrust {
        match {
            source-address any;
            destination-address any;
            application any;
        }
        then {
            permit;
        }
    }
    policy DENY-AZURAPI {
        match {
            source-address any;
            destination-address AZURAPI;
            application any;
        }
        then {
            deny;
        }
    }
}

既存の全許可Policy(policy trust-to-untrust)の前に順序変更。
この順序変更を忘れると、先頭にある全許可ルールにマッチして通信が通ってしまいます。

insert security policies from-zone trust to-zone untrust policy DENY-AZURAPI before  policy trust-to-untrust

順番の変更を確認します。

root@srx100-1# show security policies

from-zone trust to-zone untrust {
    policy DENY-AZURAPI {
        match {
            source-address any;
            destination-address AZURAPI;
            application any;
        }
        then {
            deny;
        }
    }
    policy trust-to-untrust {
        match {
            source-address any;
            destination-address any;
            application any;
        }
        then {
            permit;
        }
    }
}

DENYポリシーの作成(2つ目)

同じ要領で、ポリシーの2つ目(azurlane.jp宛を拒否)を作成して挿入します。

set security policies from-zone trust to-zone untrust policy DENY-AZURLANE match source-address any

set security policies from-zone trust to-zone untrust policy DENY-AZURLANE match destination-address AZURLANE

set security policies from-zone trust to-zone untrust policy DENY-AZURLANE match application any

set security policies from-zone trust to-zone untrust policy DENY-AZURLANE then deny

insert security policies from-zone trust to-zone untrust policy DENY-AZURLANE before  policy DENY-AZURAPI

設定投入後のSecurity Policyを確認します。

root@srx100-1# show security policies
from-zone trust to-zone untrust {
    policy DENY-AZURLANE {
        match {
            source-address any;
            destination-address AZURLANE;
            application any;
        }
        then {
            deny;
        }
    }
    policy DENY-AZURAPI {
        match {
            source-address any;
            destination-address AZURAPI;
            application any;
        }
        then {
            deny;
        }
    }
    policy trust-to-untrust {
        match {
            source-address any;
            destination-address any;
            application any;
        }
        then {
            permit;
        }
    }
}

設定のコミット

root@srx100-1# commit check
configuration check succeeds

[edit]
root@srx100-1# commit
commit complete

[edit]
root@srx100-1#

ポリシーの確認

作成したポリシーの詳細を確認します。

root@srx100-1> show security policies policy-name DENY-AZURAPI detail
Policy: DENY-AZURAPI, action-type: deny, State: enabled, Index: 6, Scope Policy: 0
  Policy Type: Configured
  Sequence number: 2
  From zone: trust, To zone: untrust
  Source addresses:
    any-ipv4(global): 0.0.0.0/0
    any-ipv6(global): ::/0
  Destination addresses:
    AZURAPI: 52.193.115.68/32      <<==== azurapi.yostar.co.jpの実IP
    AZURAPI: 54.65.28.246/32       <<==== azurapi.yostar.co.jpの実IP
  Application: any
    IP protocol: 0, ALG: 0, Inactivity timeout: 0
      Source port range: [0-0]
      Destination port range: [0-0]
  Per policy TCP Options: SYN check: No, SEQ check: No

ポリシーで指定されたFQDN「azurapi.yostar.co.jp」を名前解決して、得られた実IP「52.193.115.68/32」「54.65.28.246/32」がDestination IP(拒否対象IP)に代入されていることが分かります。

同様に、azurlane.jp宛の通信を拒否するpolicyの中身を確認します。

root@srx100-1> show security policies policy-name DENY-AZURLANE detail
Policy: DENY-AZURLANE, action-type: deny, State: enabled, Index: 5, Scope Policy: 0
  Policy Type: Configured
  Sequence number: 1
  From zone: trust, To zone: untrust
  Source addresses:
    any-ipv4(global): 0.0.0.0/0
    any-ipv6(global): ::/0
  Destination addresses:
    AZURLANE: 13.112.224.98/32       <<==== azurlane.jpの実IP
    AZURLANE: 54.65.150.225/32       <<==== azurlane.jpの実IP
  Application: any
    IP protocol: 0, ALG: 0, Inactivity timeout: 0
      Source port range: [0-0]
      Destination port range: [0-0]
  Per policy TCP Options: SYN check: No, SEQ check: No

FQDN「azurlane.jp」を名前解決して、得られた実IP「13.112.224.98/32」「54.65.150.225/32」がDestination IP(拒否対象IP)に代入されていることが分かります。


動作テスト(アズレン通信の拒否動作)

この状態で、Wifiに属するiPhoneでアズールレーンを起動し、通信が拒否されることを確認します。

起動後、「LOADING・・・」画面から進まなくなりました。
azurapi.yostar.co.jp宛の通信が正しく拒否されています。

アズレン起動抑止

Chromeから「www.azurlane.jp」へのアクセスもタイムアウトすることを確認しました。

アズレンWebサイトアクセス抑止


PolicyのDeactivate確認

policyをdeactivateすることで、今度は通信が許可されるか確認します。

root@srx100-1# deactivate security policies from-zone trust to-zone untrust policy DENY-AZURAPI

[edit]
root@srx100-1# deactivate security policies from-zone trust to-zone untrust policy DENY-AZURLANE   

[edit]
root@srx100-1# commit
commit complete

[edit]
root@srx100-1# exit

configを確認すると、「inactive:」ステートがポリシーに追加されています。

root@srx100-1> show configuration security policies
from-zone trust to-zone untrust {
    inactive: policy DENY-AZURLANE {        <<==== inactive
        match {
            source-address any;
            destination-address AZURLANE;
            application any;
        }
        then {
            deny;
        }
    }
    inactive: policy DENY-AZURAPI {        <<==== inactive
        match {
            source-address any;
            destination-address AZURAPI;
            application any;
        }
        then {
            deny;
        }
    }
    policy trust-to-untrust {
        match {
            source-address any;
            destination-address any;
            application any;
        }
        then {
            permit;
        }
    }
}

この状態で、Wifiに属するiPhoneでアズールレーンを起動し、通信が許可されることを確認します。

起動後、ログインに成功し、プレイを再開できました。
azurapi.yostar.co.jp宛の通信が正しく許可されているようです。

アズレン起動許可

Chromeから「www.azurlane.jp」へのアクセスも可能であることを確認しました。

アズレンWebサイトアクセス許可

以上から、今後はAPI経由でSRXを操作し、該当の2ポリシーをdeactivate/activateすることでアズールレーンの通信をコントロールすることとします。