[index] CentreCOM AR550S コマンドリファレンス 2.9

# ファイアウォール/アプリケーションゲートウェイ

      - SMTPプロキシー
       - 基本設定
      - HTTPプロキシー
       - 基本設定
       - URLフィルターファイル
        - チェックの方法
        - 書式
         - keywordsセクション
         - urlsセクション

本製品のファイアウォールには、ステートフルインスペクションによる動的なパケットフィルタリングに加え、アプリケーションゲートウェイの機能があります。
アプリケーションゲートウェイは、本製品がサーバー・クライアント（または別のサーバー）間の通信を仲介し、アプリケーション層で通信の制御を行う機能です（ステートフルインスペクションはおもにネットワーク層/トランスポート層での制御）。現時点では、アプリケーションプロトコルとして、電子メール配信用のSMTP（Simple Mail Transfer Protocol）とWWW用のHTTP（Hyper Text Transfer Protocol）に対応しています。
ここでは、アプリケーションゲートウェイの基本的な使用方法について解説します。

> Note - 本機能はオプションであるため、ご使用にはフィーチャー（追加機能）ライセンスのご購入が必要です。

SMTPプロキシー

SMTPプロキシーは、メール（SMTP）エージェント間の通信を本製品が仲介することで、メールの不正中継や、spamメールなどを防止する機能です。

> Note - SMTPプロキシーを使用するにはフィーチャーライセンスAT-FL-04またはAT-FL-04-Bが必要です。

SMTPプロキシーは、外側から内側に向けたSMTP通信（外部から自ドメインへのメール配送）と、内側から外側に向けたSMTP通信（内部から他ドメインへのメール配送）の両方に対して機能させることができます。

> Note - 1つのファイアウォールポリシーにおいては、外向き、内向きのどちらか一方のみ使用可能です。

SMTPプロキシーを外向きに設定した場合、本製品は内側（LAN側）インターフェースでSMTPサーバーのように振る舞います。この場合、内側（自ドメイン）からのSMTP要求を受け付け、自らDNSを検索して適切な外部SMTPサーバーにメールを転送します。このとき、SMTPの通信内容を検査することにより、内部から外部への不正行為(spamメール、不正中継など)を防止することができます。
SMTPプロキシーを内向きに設定した場合、本製品は外側（WAN側）インターフェースでSMTPサーバーのように振る舞います。この場合、外部（他ドメイン）からのSMTP要求を受け付け、IPパラメーターで指定された内部の（本当の）SMTPサーバーにメールを転送します。このとき、SMTPの通信内容を検査することにより、外部から内部への不正行為(spamメール、不正中継など)を防止することができます。

基本設定

SMTPプロキシーは、通常のファイアウォールと併用する形で使用します。最初にファイアウォールの基本設定までをすませておいてください。

> Note - 1つのファイアウォールポリシーにおいては、外向き、内向きのどちらか一方のみ使用可能です。

■ 内向きSMTPプロキシーの基本設定は以下のとおりです。

1. 自ドメイン名を設定します。内向きSMTPプロキシーは、自ドメイン宛てでないメールを拒否します。

   `SET FIREWALL POLICY=net SMTPDOMAIN=example.com ↓`
2. SMTPプロキシーを有効にします。INTには内部、GBLINTには外部のインターフェースを指定します。また、IPには内部メールサーバーのアドレスを、DIRECTIONにはプロキシーを有効にする方向（ここではIN）を指定します。

   `ADD FIREWALL POLICY=net PROXY=SMTP INT=vlan1 GBLINT=ppp0 IP=192.168.10.100 DIRECTION=IN ↓`

■ 外向きSMTPプロキシーの基本設定は以下のとおりです。

1. 最初にDNSサーバーアドレスを設定します。外向きのSMTPプロキシーを使用するためには、DNSサーバーアドレスの設定が必須です。

   `ADD IP DNS PRIMARY=10.1.1.5 SECONDARY=10.1.1.6 ↓
   `
2. 自ドメイン名を設定します。外向きSMTPプロキシーは、自ドメイン発でないメールを拒否します。

   `SET FIREWALL POLICY=net SMTPDOMAIN=example.com ↓`
3. SMTPプロキシーを有効にします。INTには内部、GBLINTには外部のインターフェースを指定します。また、DIRECTIONにはプロキシーを有効にする方向（ここではOUT）を指定します。DIRECTION=OUTのときは、IPパラメーターは不要です。

   `ADD FIREWALL POLICY=net PROXY=SMTP INT=vlan1 GBLINT=ppp0 DIRECTION=OUT ↓`

■ spamメール防止機能を使う場合は、最初にspamリストファイルを用意してください。これは、spam送信元のドメイン名かメールアドレスを1行に1個記述したテキストファイルです。拡張子は.spaとしてください。次に例を示します。
list.spa

    gomi.mail.xxx
    spammers.xxx
    foo@honyarara.xxx

このspamリストは、ドメインgomi.mail.xxx、spammers.xxxからのメールすべてと、メールアドレスfoo@honyarara.xxxからのメールを受け取らないための設定になります。具体的には、MAIL FROM: で上記のドメインを含むアドレス、または、上記のメールアドレスを指定してきた場合、SMTPプロキシーはSMTPのエラーコードを返してセッションを切断します。
spamリストを用意したら、次のコマンドで同ファイルが使われるように設定します。

`ADD FIREWALL POLICY=net SPAMSOURCES=list.spa ↓`

1つのファイアウォールポリシーに設定できるspamリストは最大5個です。
なお、spamリストの内容を変更するときは、DELETE FIREWALL POLICY SPAMSOURCESコマンドでリストファイルをいったん削除してから編集し、編集が終わったら再度追加してください。単にファイルを編集するだけでは、SMTPプロキシーの動作には反映されません。
あるいは、spamリストを編集したあとでルーターを再起動してもかまいません（ただし、回線接続中にいきなり再起動すると再接続に支障をきたす場合がありますのでご注意ください。たとえば、PPPoEでISPに接続している場合は、DISABLE PPPコマンドを実行して接続を切ってから再起動してください）。
■ SMTPプロキシーのイベント通知例
不正メールリレー

    Manager >
    Warning (277257): 22-Oct-2001 17:58:01
     SMTP third party relay attack from 11.22.33.1 is underway.

spamメール

    Manager >
    Warning (277257): 22-Oct-2001 19:32:52
     SMTP spam attack from 1.1.1.1 is underway.

HTTPプロキシー

HTTPプロキシーは、Webサーバー・クライアント（Webブラウザー）間のHTTP通信を仲介することにより、特定URLへのアクセスを禁止したり（URLフィルタリング）、サーバーからのCookie要求を拒否したりする（Cookieフィルタリング）機能です。

> Note - 対応しているプロトコルはHTTP（http:）のみです。HTTPSやFTPなどには対応していません。また、HTTPであっても、標準でないポート（80番以外のポート）への通信には対応していません。

> Note - HTTPプロキシーは、内部のクライアントから外部のHTTPサーバーへの通信を仲介・監視する機能です。外部から内部へのHTTP通信に対しては機能しませんのでご注意ください。

> Note - HTTPプロキシーを利用するクライアント（Webブラウザー）には、「HTTPプロキシー」として本製品のPRIVATE側インターフェースを指定してください。ポート番号は80番です。

> Note - HTTPプロキシーを使用するにはフィーチャーライセンスAT-FL-05またはAT-FL-05-Bが必要です。

> Note - ダイナミックインターフェースとHTTPプロキシー機能は併用できません。

基本設定

HTTPプロキシーは、通常のファイアウォールと併用する形で使用します。最初にファイアウォールの基本設定までをすませておいてください。
以下、基本的な設定手順を示します。ファイアウォールの基本設定まではすんでいるものと仮定します。

1. 最初にDNSサーバーアドレスを設定します。HTTPプロキシーを使用するためには、DNSサーバーアドレスの設定が必須です。

   `ADD IP DNS PRIMARY=10.1.1.5 SECONDARY=10.1.1.6 ↓
   `
2. HTTPプロキシーを有効にします。INTERFACEにはPRIVATE側インターフェースを、GBLINTERFACEにはPUBLIC側インターフェースを指定します。DIRECTIONにはプロキシーを有効にする方向を指定しますが、HTTPプロキシーではOUTしか指定できませんのでご注意ください。

   `ADD FIREWALL POLICY=net PROXY=HTTP INT=vlan1 GBLINT=ppp0 DIRECTION=OUT ↓
   `

   > Note - HTTPプロキシーは、内部のクライアントから外部のHTTPサーバーへの通信を仲介・監視する機能です。外部から内部へのHTTP通信に対しては機能しません。DIRECTIONパラメーターには必ずOUTを指定してください。DIRECTIONパラメーターにOUT以外を指定しても意図した動作になりませんのでご注意ください。

3. URLフィルターファイルを作成します。URLフィルターファイルは、拒否・許可するURLやURL内のキーワード、ドメイン名などを記述したテキストファイル（拡張子は.txt）です。EDITコマンドで作成するか、他のコンピューター上で作成したものをダウンロードしてください。

   > Note - URLフィルターファイルの書式については、次節「URLフィルターファイル」をご覧ください。

4. URLフィルターファイルを用意したら、ADD FIREWALL POLICY HTTPFILTERコマンドでファイル名を指定します。

   `ADD FIREWALL POLICY=net HTTPFILTER=urllist.txt DIRECTION=OUT ↓
   `

   > Note - 1つのファイアウォールポリシーに設定できるURLフィルターファイルは最大5個です。

■ URLフィルターファイルの適用をとりやめるには、DELETE FIREWALL POLICY HTTPFILTERコマンドを使います。

`DELETE FIREWALL POLICY=net HTTPFILTER=urllist.txt DIRECTION=OUT ↓
`

■ URLフィルターファイルを変更するときは、DELETE FIREWALL POLICY HTTPFILTERコマンドでファイルをいったん削除してから編集し、編集が終わったら再度追加してください。単にファイルを編集するだけでは、HTTPプロキシーの動作には反映されません。

`DELETE FIREWALL POLICY=net HTTPFILTER=urllist.txt DIRECTION=OUT ↓
EDIT urllist.txt ↓
ADD FIREWALL POLICY=net HTTPFILTER=urllist.txt DIRECTION=OUT ↓
`

あるいは、URLフィルターファイルを編集したあとでルーターを再起動してもかまいません（ただし、回線接続中にいきなり再起動すると再接続に支障をきたす場合がありますのでご注意ください。たとえば、PPPoEでISPに接続している場合は、DISABLE PPPコマンドを実行して接続を切ってから再起動してください）。
■ すべてのCookie要求を拒否するには、DISABLE FIREWALL POLICY HTTPCOOKIESコマンドを使います。デフォルトでは、URLフィルターファイルで「nocookies」を指定したサーバー以外からのCookie要求はすべてプロキシーを通過します。

`DISABLE FIREWALL POLICY=net HTTPCOOKIES ↓
`

■ HTTPプロキシーのイベント通知例
キーワードによるフィルタリング

    Warning (2077257): 03-Sep-2003 01:10:26 Url deny on keyword
            HTTP://WWW.EXAMPLE.COM/PRIVATE/QUICKMONEY.HTML from 192.168.10.130.

URLによるフィルタリング

    Warning (2077257): 03-Sep-2003 01:19:25 Blocked URL
            HTTP://WWW.EVIL.XXX/ requested by 192.168.10.130.

URLフィルターファイル

URLフィルターファイルは、拒否・許可するURLやURL内のキーワード、ドメイン名などを記述したテキストファイル（拡張子は.txt）です。

#### チェックの方法

■ URLフィルタリングのチェック対象は「HTTPリクエスト内のURL文字列」です。
たとえば、HTTPプロキシーがクライアントから次のようなリクエストを受信した場合、

    GET http://www.example.com/ HTTP/1.1
    Host: www.example.com
    ...

この中の「http://www.example.com/」という文字列と、URLフィルターファイルに記述された文字列が比較されます。
■ チェックは常に文字列の比較として行われることに注意してください。たとえば、「192.168.10.1」と「www.example.com」が同じサーバーをさしているとします。ここで、次のようなリクエストを受信した場合、

    GET http://192.168.10.1/ HTTP/1.1
    Host: 192.168.10.1
    ...

「http://192.168.10.1/」という文字列と、URLフィルターファイル内の文字列が比較されます。URL中のドメイン名とIPアドレスが自動的に変換されるわけではありません。
したがって、このリクエストを拒否するには、URLフィルターファイル内に「192.168.10.1」と書く必要があります。URLフィルターファイルに「www.example.com」と書いても、（「192.168.10.1」と「www.example.com」は同じサーバーをさしていますが）このリクエストを拒否することはできませんのでご注意ください。
あるサーバーが複数のドメイン名、IPアドレスを持っている場合、このサーバーへのアクセスを完全に制御するには、すべてのドメイン名、IPアドレスをURLフィルターファイルに記述してください。
以下、単に「URL」といった場合は、「HTTPリクエスト中のURL文字列」を示すものとします。

#### 書式

次にURLフィルターファイル urllist.txt の例を示します。「#」で始まる行はコメントです。

    ### keywordsセクション: 以下のキーワードを含むURLにはアクセス禁止
    ### ただし、urls セクションの allow オプションで例外を設けることが可能
    keywords:
    money drug

    ### ワイルドカード（*）はキーワードの先頭または単独でのみ使用可能
    ### キーワードの先頭に置いた場合、キーワードと「URL末尾」との比較となる
    *crack.html *.mp3

    ### URLsセクション: 以下のサーバー、ディレクトリーにはアクセス禁止
    urls:
    # サーバーのフルドメイン名
    www.evil.xxx
    www.pandora.xxx

    # サーバー＋ディレクトリー。指定したディレクトリー以下にのみアクセス禁止
    www.howto.xxx/crackyis
    www.nandemo.xx.xx/users/a12345/eroero

    # 拒否サイト（の一部）を例外的に許可したいときは allow オプションを使う
    www.drugstore.xxx : allow
    www.pandora.xxx/flux/chaos/anguish/sorrow/hope : allow

    # Cookie設定要求だけを拒否するには nocookies オプションを使う
    www.hiscompany.xxx : nocookies
    www.moneymanagement.xxx : allow nocookies

- URLフィルターファイルは、keywordsセクションとurlsセクションの2つのセクションで構成されています。セクションの記述順序に決まりはありません。また、どちらか一方のセクションだけでもかまいません。
- URLのチェックは、urlsセクション、keywordsセクションの順に行われます。
- チェック対象のURLがurlsセクション内の複数のエントリーにマッチするときは、もっとも詳細な指定のされているエントリーが採用されます。たとえば、あるURLが、サーバー名だけのエントリーと、サーバー名＋ディレクトリー名のエントリーの両方にマッチする場合は、後者が採用されます。
- チェック対象のURLがurlsセクション内の同一レベルの詳細さを持つ複数のエントリーにマッチする場合、allowエントリーのほうが優先されます。
- チェック対象のURLがurlsセクション内の許可（allow）エントリーにマッチした場合、keywordsセクションはチェックされません。

> Note - キーワードやURLは、大文字小文字を区別しません。

以下、各セクションの記述内容について説明します。

##### keywordsセクション

「keyword:」で始まるセクションには、「禁止キーワード」を列挙します。
キーワードは1行に1個ずつ書くか、スペースで区切って並べてください。大文字小文字は区別しません。
■ URL に禁止キーワードが含まれている場合、該当 URL へのアクセスは原則として禁止されます。
前記の例では、URL内（サーバー名、ディレクトリー名、ファイル名など）に「money」「drug」という文字列が（部分的にでも）含まれる場合、該当URLへのアクセスが拒否されます。よって、次のURLへはアクセスできません。

- http://www.makemoney.xxx/
- http://www.underground.xx.xx/enjoy_drug.html

■ 禁止キーワードの先頭に「*」（アスタリスク）を付けた場合は、後方一致の指定となります。
前記の例では、クライアントの指定するURL 末尾が「crack.html」「.mp3」のときにアクセスを拒否します。URL 末尾が「crack.html-1」「.mp3.gz」の場合はマッチしません。

> Note - アスタリスクはキーワードの先頭に指定したときだけ特殊な意味（後方一致）を持ちます。「adult*」や「find*software」のような指定をした場合は、単なる文字（アスタリスク自身）として扱われます。

> Note - URL「http://www.example.com」へのアクセスをキーワードで禁止するとき、「*.com」と書いても機能しないことがあります。このような場合は「*.com/」と書いてください。Webブラウザーの多くは、ホスト名で終わるURLを指定された場合、末尾に「/」（ルートディレクトリー）を自動的に付加します。

■ 禁止キーワードを含む URL であっても、urls セクション（後述）で allow されているドメインは例外的に許可されます。

##### urlsセクション

「urls:」で始まるセクションには、アクセスを禁止・許可したいサーバー（ドメイン名またはIPアドレス）を列挙します。オプションで、サーバー上のディレクトリーを指定することも可能です。
サーバーは必ず1行に1個ずつ書いてください。大文字小文字は区別しません。
■ urlsセクションのエントリー記述例を示します。基本パターンは次の 2 つです。

- host
  サーバー「host」へのアクセスを禁止。URLのホスト部文字列が「host」と一致する場合、該当URLへのアクセスは拒否されます。
  「host」は「www.example.com」のようなドメイン名形式か、「192.168.1.1」のような IPアドレス形式で指定します。

  > Note - ドメイン名とIPアドレスの自動変換は行われません。たとえば、クライアントの指定したURLがドメイン名形式ならば、ドメイン名形式のエントリーにだけマッチします。一方、クライアントの指定したURLがIPアドレス形式ならば、IPアドレス形式のエントリーにだけマッチします。

  前記の例では「www.evil.xxx」「www.pandora.xxx」というドメイン名を持つサーバーへのアクセスを禁止しています。
- host/path
  サーバー「host」上のディレクトリー「/path」以下へのアクセスを禁止。URLのホスト部文字列が「host」と一致し、なおかつ、URLのパス部が「/path」を含む場合、「/path」より下のディレクトリーへのアクセスは拒否されます。
  「host」は「www.example.com」のようなドメイン名形式か、「192.168.1.1」のような IPアドレス形式で指定します。
  「/path」は完全一致のディレクトリー名で指定する必要があります。たとえば、「www.example.com/path/to/dir1」というエントリーは、「http://www.example.com/path/to/dir1/bad.txt」にマッチしますが、「http://www.example.com/path/to/dir1a/bad.txt」にはマッチしません。
  前記の例では、次のようなURLへのアクセスを禁止しています。
  - http://www.howto.xxx/crackyis/
  - http://www.howto.xxx/crackyis/firststep.html
  - http://www.nandemo.xx.xx/users/a12345/eroero/xxxxxxx.jpg

■ keywords、urls 両セクションの禁止エントリーに例外を設けたい場合は、urlsセクションのエントリーに「オプション」を追加指定します。
オプションには「allow」と「nocookies」の2種類があります。「サーバー名」、「サーバー名＋ディレクトリー名」とオプションの間は半角のスペース＋コロン＋スペース（ : ）で区切ります。両方のオプションを指定したい場合はオプションとオプションをスペースで区切ります。

- 「allow」オプションは、指定したURLへのアクセスを例外的に許可する指定です。
  - host : allow
    サーバー「host」へのアクセスを例外的に許可。URLに禁止キーワードが含まれていても、URLのホスト部が「host」と一致していれば、該当URLへのアクセスは許可されます。
    前記の例では、禁止キーワードの「drug」を含む「www.drugstore.xxx」へのアクセスを例外的に許可しています。
  - host/path : allow
    サーバー「host」上のディレクトリー「/path」以下へのアクセスを例外的に許可。禁止キーワードが含まれているURL、あるいは、urlsセクション内の他のエントリーで禁止されているURLであっても、URLのホスト部が「host」と一致し、なおかつ、パス部が「/path」を含む場合は、「/path」より下のディレクトリーへのアクセスが例外的に許可されます。
    前記の例では、「www.pandora.xxx」は禁止ホストですが、「/flux/chaos/anguish/sorrow/hope」ディレクトリー以下に限って、アクセスを許可しています。
- 「nocookies」オプションは、指定したサーバーからのCookie設定要求だけを拒否する指定です。同サーバーへのアクセスは（urls、keywordsセクションで拒否されていない限り）許可します。
  - host : nocookies
    サーバー「host」からのCookie設定要求だけを拒否します。「host」へのアクセスは、（keywords、urls セクションで拒否されていない限り）許可されます。
    前記の例では、「www.hiscompany.xxx」からのCookie設定要求を拒否しています（同サーバーへのアクセスは可能）。
  - host : allow nocookies
    キーワードによってアクセスが禁止されているサーバー「host」へのアクセスを例外的に許可した上で、「host」からのCookie設定要求だけを拒否します。
    前記の例では、禁止キーワードの「money」を含む「www.moneymanagement.xxx」へのアクセスを例外的に許可した上で、同サーバーからのCookieだけを拒否しています。

    > Note - デフォルトでは、URLフィルターファイルで「nocookies」を指定したサーバー以外からのCookie要求はすべてプロキシーを通過します。すべてのCookie要求を拒否するには、DISABLE FIREWALL POLICY HTTPCOOKIESコマンドを実行してください。

■ デフォルトですべてのアクセスを拒否し、指定したURLだけ許可するよう設定することもできます。以下の例のように、keywordsセクションに「*」を指定したあと、urlsセクションに許可するURLとallowオプションを指定します。

    ### HTTP Filter
    ### デフォルトではすべて拒否（「*」）
    keywords:
    *

    ### URLsセクション: 以下のURLのみ許可（前方一致）
    urls:
    www.allied-telesis.co.jp : allow
    www.example.com/products/switch/ : allow
    www.example.com/products/router/docs/index.html : allow

(C) 2005-2012 アライドテレシスホールディングス株式会社

PN: J613-M0710-03 Rev.H