# UTM / アプリケーション定義

UTM機能では各種ルールの条件指定時に下記の要素を使います。

- エンティティー（通信主体）
  ゾーン（任意のネットワーク範囲）、ネットワーク（サブネットの集合）、ホスト（単一アドレスの集合）などIP/IPv6アドレスの集合として表現可能な情報。
  「ゾーン.ネットワーク.ホスト」の階層構造を持つ。
  ファイアウォール、NATの各機能において、送信元、宛先の指定に使う。
  （UTM以外では、QoS、ポリシーベースルーティングでも使います）
- アプリケーション
  SMTP、SSH、HTTP、IMAPSのように、IPプロトコルタイプ、TCP/UDPポート、ICMPタイプ/コードの組み合わせで表現可能な情報。
  ファイアウォール、NATの各機能において、通信の種類（アプリケーション）を指定するために使う。
  （UTM以外では、QoS、ポリシーベースルーティングでも使います）

従来のファイアウォールでは、ルールの適用対象をインターフェース、アドレス、ポート、プロトコルなどで指定していましたが、本製品ではこれらを抽象化した前記の「エンティティー（通信主体）」と「アプリケーション」で指定します。
次に指定方法の違いをまとめます。

従来の指定方法 | 本製品の指定方法
始点IP/IPv6アドレス | 送信元エンティティー | エンティティー定義
終点IP/IPv6アドレス | 宛先エンティティー
DSCP値 | アプリケーション定義
IPプロトコル番号
始点TCP/UDPポート番号
終点TCP/UDPポート番号
ICMPタイプ/コード

Note

DSCP値はQoSおよびポリシーベースルーティング（PBR）でのみサポートです。各機能については「トラフィック制御」/「Quality of Service」、「トラフィック制御」/「ポリシーベースルーティング」をご覧ください。

ここでは、アプリケーションの定義方法について解説します。
エンティティー（通信主体）の定義方法については「UTM」/「エンティティー定義」をご参照ください。
また、設定時にアプリケーション定義を利用するファイアウォール、NAT、QoS、ポリシーベースルーティングの各機能については、「UTM」/「ファイアウォール」、「UTM」/「NAT」、「トラフィック制御」/「Quality of Service」、「トラフィック制御」/「ポリシーベースルーティング」をご覧ください。
さらに、より具体的なアプリケーション定義の例については、「設定例集」をご覧ください。

## アプリケーション定義の種類

アプリケーション定義には次の3種類があります。以下それぞれについて解説します。

- 事前定義済みアプリケーション
- カスタムアプリケーション定義
- アプリケーションコントロール（DPI）により判別可能なアプリケーション

### 事前定義済みアプリケーション

HTTP、FTP、SMTP、POP3、IMAPなどの主要なアプリケーションはあらかじめ定義されているため、特に設定を行うことなく各種ルールの作成時に使うことができます。
事前定義済みのアプリケーションは下記コマンド実行例が示すとおりです。
アプリケーション定義名の一覧はshow applicationコマンドで確認できます。

    awplus# show application
    aim       cvs       dns       ftp       http      https     icq       ident
    imap      imaps     irc       jabber    l2tp      ldap      lisa      msn
    mysql     news      nfs-tcp   nfs-udp   ntp       openvpn   pcanywhere-tcp
                                                                          pcanywhere
                                                                            -udp
    ping      pop3      pop3s     pptp      rdp       rsync     samba-tcp samba-udp
    smtp      socks     ssh       syslog    telnet    traceroute
                                                                vnc       whois

アプリケーション定義の内容はshow application detailコマンドで確認できます。
事前定義済みアプリケーションは、カスタムアプリケーション定義と同じように、プロトコルやポート番号の組み合わせとして定義されています。異なるポート番号を指定したい場合などには、事前定義済みアプリケーションと同名のカスタムアプリケーション定義を作成することで上書きが可能です。
Note

同じ名前のアプリケーション定義が存在する場合の優先度は、カスタムアプリケーション ＞ DPIアプリケーション ＞ 事前定義済みアプリケーションの順になります。すなわち、DPIアプリケーションや事前定義済みアプリケーションと同じ名前のカスタムアプリケーション定義を作成した場合、DPIおよび事前定義済みアプリケーションは使われなくなります。また、アプリケーションコントロール（DPI）機能を有効化すると、「dns」など一部の事前定義アプリケーションが同名のDPIアプリケーションによって上書きされ使われなくなります。

Note

事前定義済みアプリケーションは前述の通り上書き可能ですが、事前定義済みアプリケーションそのものを削除することはできません。

    awplus# show application detail
    Name             Protocol    Detail
    --------------------------------------------------------------------------
    aim              TCP         sport=1024-65535 dport=9898
    cvs              TCP         sport=1024-65535 dport=2401
    dns              UDP         sport=1024-65535 dport=53
    ftp              TCP         sport=1024-65535 dport=21
    http             TCP         sport=1024-65535 dport=80
    https            TCP         sport=1024-65535 dport=443
    icq              TCP         sport=1024-65535 dport=5190
    ident            TCP         sport=1024-65535 dport=113
    imap             TCP         sport=1024-65535 dport=143
    imaps            TCP         sport=1024-65535 dport=993
    irc              TCP         sport=1024-65535 dport=6667
    jabber           TCP         sport=1024-65535 dport=5222-5223
    l2tp             UDP         sport=1701 dport=1701
    ldap             TCP         sport=1024-65535 dport=389
    lisa             TCP         sport=1024-65535 dport=7741
    msn              TCP         sport=1024-65535 dport=1863
    mysql            TCP         sport=1024-65535 dport=3306
    news             TCP         sport=1024-65535 dport=119
    nfs-tcp          TCP         sport=1024-65535 dport=2049
    nfs-udp          UDP         sport=1024-65535 dport=2049
    ntp              UDP         sport=123,1024-65535 dport=123
    openvpn          UDP         sport=1024-65535 dport=1194
    pcanywhere-tcp   TCP         sport=1024-65535 dport=5631
    pcanywhere-udp   UDP         sport=1024-65535 dport=5631-5632
    ping             ICMP        type=8 code=0
    pop3             TCP         sport=1024-65535 dport=110
    pop3s            TCP         sport=1024-65535 dport=995
    pptp             TCP         sport=1024-65535 dport=1723
    rdp              TCP         sport=1024-65535 dport=3389
    rsync            TCP         sport=1024-65535 dport=873
    samba-tcp        TCP         sport=1024-65535 dport=139,445
    samba-udp        UDP         sport=137-138,1024-65535 dport=137-138
    smtp             TCP         sport=1024-65535 dport=25
    socks            TCP         sport=1024-65535 dport=1080
    ssh              TCP         sport=1024-65535 dport=22
    syslog           UDP         sport=1024-65535 dport=514
    telnet           TCP         sport=1024-65535 dport=23
    traceroute       UDP         sport=1024-65535 dport=33434-33523
    vnc              TCP         sport=1024-65535 dport=5900
    whois            TCP         sport=1024-65535 dport=43

### カスタムアプリケーション定義

事前定義されていないアプリケーションのトラフィックを制御する場合は、カスタムアプリケーションを定義する必要があります。
カスタムアプリケーション定義は applicationコマンドで命名し、下記のコマンドで判別条件を指定します。条件のうち、protocolの指定は必須で、残りは任意です。

- protocolコマンド - IPプロトコルタイプ（必須。1つだけ）
- dscpコマンド - DSCP値（複数指定可）
- sportコマンド - TCP/UDP始点ポート番号（複数指定可）
- dportコマンド - TCP/UDP終点ポート番号（複数指定可）
- icmp-typeコマンド - ICMPタイプ（1つだけ）
- icmp-codeコマンド - ICMPコード（1つだけ）

Note

アプリケーション定義では必ずIPプロトコル（protocol）を指定してください。ルール作成時にIPプロトコル未指定のアプリケーション定義を指定した場合、該当ルールは有効にならず無視されますのでご注意ください。なお、ルール作成時にアプリケーション定義名の代わりにキーワード「any」を指定すれば、「すべてのアプリケーション（すべての通信）」を対象とするルールを作成可能です。

Note

ルール作成コマンドにおいて、「any」は「すべてのアプリケーション（すべての通信）」を意味するキーワードとして内部的に予約されているため、カスタムアプリケーション定義名として「any」は使用しないでください。キーワードは大文字小文字を区別しないため、「any」、「Any」、「ANY」なども同様です。

Note

アプリケーション名は大文字小文字を区別しません。

Note

DSCP値はQoSおよびポリシーベースルーティング（PBR）でのみサポートです。各機能については「トラフィック制御」/「Quality of Service」、「トラフィック制御」/「ポリシーベースルーティング」をご覧ください。

TCPを利用するアプリケーション「mydb」の定義例。

    awplus(config)# application mydb
    awplus(config-application)# protocol tcp
    awplus(config-application)# sport 1024 to 65535
    awplus(config-application)# dport 8704
    awplus(config-application)# exit

UDPを利用するアプリケーション「mystream」の定義例。

    awplus(config)# application mydb
    awplus(config-application)# protocol udp
    awplus(config-application)# sport 1024 to max
    awplus(config-application)# dport 50000 to 50099
    awplus(config-application)# dport 51024
    awplus(config-application)# exit

ISAKMPパケットを判別するアプリケーション「isakmp」の定義例。

    awplus(config)# application isakmp
    awplus(config-application)# protocol udp
    awplus(config-application)# sport 500
    awplus(config-application)# dport 500
    awplus(config-application)# exit

IPsecのESPパケットを判別するアプリケーション「esp」の定義例。

    awplus(config)# application esp
    awplus(config-application)# protocol 50
    awplus(config-application)# exit

ICMPを利用するアプリケーション「path-mtu-ipv4」の定義例。

    awplus(config)# application path-mtu-ipv4
    awplus(config-application)# protocol icmp
    awplus(config-application)# icmp-type 3
    awplus(config-application)# icmp-code 4
    awplus(config-application)# exit

ICMPv6を利用するアプリケーション「path-mtu-ipv6」の定義例。

    awplus(config)# application path-mtu-ipv6
    awplus(config-application)# protocol ipv6-icmp
    awplus(config-application)# icmp-type 2
    awplus(config-application)# icmp-code 0
    awplus(config-application)# exit

カスタムアプリケーション定義の内容を表示するには、show applicationコマンドのcustomオプションを使います。

    awplus# show application detail custom
    Name             Protocol    Detail
    --------------------------------------------------------------------------
    esp              50          -
    isakmp           UDP         sport=500 dport=500
    mydb             TCP         sport=1024-65535 dport=8704
    mystream         UDP         sport=1024-65535 dport=50000-50099,51024
    path-mtu-ipv4    ICMP        type=3 code=4
    path-mtu-ipv6    IPv6-ICMP   type=2 code=0

Note

同じ名前のアプリケーション定義が存在する場合の優先度は、カスタムアプリケーション ＞ DPIアプリケーション ＞ 事前定義済みアプリケーションの順になります。すなわち、DPIアプリケーションや事前定義済みアプリケーションと同じ名前のカスタムアプリケーション定義を作成した場合、DPIおよび事前定義済みアプリケーションは使われなくなります。また、アプリケーションコントロール（DPI）機能を有効化すると、「dns」など一部の事前定義アプリケーションが同名のDPIアプリケーションによって上書きされ使われなくなります。

### アプリケーションコントロール（DPI）により判別可能なアプリケーション

これまでに述べたアプリケーション定義は、事前定義、カスタム定義のどちらとも、プロトコル番号やポート番号などのL3/L4ヘッダー情報にもとづいてアプリケーションを識別するものでした。
本製品ではさらに、アプリケーションコントロール（DPI = ディープパケットインスペクション）機能を有効化することにより、パケットのデータ部分を検査し、通信内容（レイヤー7）にもとづいてどのアプリケーションに所属するトラフィックであるかを識別することも可能です。
最近は多くのアプリケーションが通信チャンネルとしてHTTP（80/tcp）を使うようになっているため、L3/L4ヘッダーだけではこれらのアプリケーションがすべて「HTTP」としか判定できず、個々のアプリケーションを見分けることができません。
アプリケーションコントロール（DPI）機能を使えば、アプリケーションシグネチャデータベースによって、各種アプリケーションに特有の通信パターンを検出し、個々のアプリケーションを判別することができるようになります。
Note

NAT機能でもルール設定時にアプリケーションの指定を行いますが、NATルールではアプリケーションコントロール（DPI）によって判別されたアプリケーションは指定できません。ruleコマンド（NATモード）でNAT対象トラフィックを指定するときは、あらかじめ定義されている事前定義済みアプリケーションか、applicationコマンドで定義するカスタムアプリケーション、あるいは、すべてを意味する「any」キーワードを指定してください。

Note

アプリケーションコントロール（DPI）機能では、各アプリケーション固有の通信パターンを検出するために一定量のパケットを受信してそのデータ部分を検査する必要があります。判別が完了していないトラフィック（判別中のトラフィック）は、特殊なアプリケーション名「undecided」で表されます。

アプリケーションコントロール（DPI）機能の設定は、DPIモード（dpiコマンド）で行います。
providerコマンドでシグネチャデータベースの提供元を指定した後、enableコマンドで有効化します。

    awplus(config)# dpi
    awplus(config-dpi)# provider built-in
    awplus(config-dpi)# enable

アプリケーションコントロール（DPI）の詳細については、「UTM」/「アプリケーションコントロール（DPI）」をご覧ください。
アプリケーションコントロール（DPI）機能によって判別できるアプリケーションは、show application detailコマンドのdpiオプションで確認できます。

    awplus# show application detail dpi

Note

同じ名前のアプリケーション定義が存在する場合の優先度は、カスタムアプリケーション ＞ DPIアプリケーション ＞ 事前定義済みアプリケーションの順になります。すなわち、DPIアプリケーションや事前定義済みアプリケーションと同じ名前のカスタムアプリケーション定義を作成した場合、DPIおよび事前定義済みアプリケーションは使われなくなります。また、アプリケーションコントロール（DPI）機能を有効化すると、「dns」など一部の事前定義アプリケーションが同名のDPIアプリケーションによって上書きされ使われなくなります。

## アプリケーション定義の使用

これまでに述べた各種アプリケーション定義は、ファイアウォール、NAT、QoS、ポリシーベースルーティング（PBR）の各機能でルールを作成するときに使用できます。
Note

アプリケーション定義名は大文字小文字を区別しませんが、エンティティー定義名（ゾーン、ネットワーク、ホスト定義名）は大文字小文字を区別しますのでご注意ください。

ファイアウォールルールは、ファイアウォールモードのruleコマンドで作成します。
下の例では、アクション（permit）の直後に指定している「mydb」、「ssh」、「http」、「isakmp」、「esp」がアプリケーション定義名です。「any」は「すべての通信」を示す予約済みキーワードであり、アプリケーション定義名ではありません。

    awplus(config)# firewall
    awplus(config-firewall)# rule permit any from private to public
    awplus(config-firewall)# rule permit mydb from private to private.wired.dbserver
    awplus(config-firewall)# rule permit ssh from private.wired.adminpc to dmz.servernet
    awplus(config-firewall)# rule permit http from public to dmz.servernet.web log
    awplus(config-firewall)# rule permit isakmp from public.internet.vpngw to public.internet.myself
    awplus(config-firewall)# rule permit esp from public.internet.vpngw to public.internet.myself

Note

アプリケーションコントロール（DPI）機能では、各アプリケーション固有の通信パターンを検出するために一定量のパケットを受信してそのデータ部分を検査する必要がありますが、ファイアウォールはその仕様として初期設定ですべてのパケットを破棄するため、ファイアウォールとアプリケーションコントロール（DPI）を併用する場合は注意が必要です。詳しくは「UTM」/「アプリケーションコントロール（DPI）」をご覧ください。

ファイアウォールの詳細については、「UTM」/「ファイアウォール」をご覧ください。
NATルールは、NATモードのruleコマンドで作成します。
Note

NAT機能でもルール設定時にアプリケーションの指定を行いますが、NATルールではアプリケーションコントロール（DPI）によって判別されたアプリケーションは指定できません。ruleコマンド（NATモード）でNAT対象トラフィックを指定するときは、あらかじめ定義されている事前定義済みアプリケーションか、applicationコマンドで定義するカスタムアプリケーション、あるいは、すべてを意味する「any」キーワードを指定してください。

下の例では、アクション（masq、portfwd）の直後に指定している「http」がアプリケーション定義名です。「any」は「すべての通信」を示す予約済みキーワードであり、アプリケーション定義名ではありません。

    awplus(config)# nat
    awplus(config-nat)# rule masq any from private to public
    awplus(config-nat)# rule portfwd http from public with dst dmz.servernet.web

NATの詳細については、「UTM」/「NAT」をご覧ください。
QoSルールは、トラフィックコントロールモードのruleコマンドで作成します。
下の例では、matchキーワードの直後に指定している「photostorage」がアプリケーション定義名です。

    awplus(config)# traffic-control
    awplus(config-tc)# rule match photostorage from private to public.cloud rate 1 max 10000 priority 7

QoSの詳細については、「トラフィック制御」/「Quality of Service」をご覧ください。
ポリシーベースルーティング（PBR）ルールは、ポリシーベースルーティングモードのip policy-routeコマンド、ipv6 policy-routeコマンドで作成します。
下の例では、matchキーワードの直後に指定している「highprio」、「lowprio」がアプリケーション定義名です。

    awplus(config)# policy-based-routing
    awplus(config-pbr)# ip policy-route match highprio from local.net to remote.net nexthop tunnel0
    awplus(config-pbr)# ip policy-route match lowprio from local.net to remote.net nexthop tunnel1

ポリシーベースルーティングの詳細については、「トラフィック制御」/「ポリシーベースルーティング」をご覧ください。