セキュリティ : Cisco ASA 5500-X シリーズ次世代型ファイアウォール

基本的な ASA NAT コンフィギュレーション: ASA バージョン 8.3 以降の DMZ の Web サーバ

2013 年 7 月 1 日 - ライター翻訳版
その他のバージョン: PDFpdf | 機械翻訳版 (2013 年 8 月 21 日) | 英語版 (2013 年 2 月 11 日) | フィードバック

概要

このドキュメントでは、発信と着信の接続を許可する目的で、NAT とアクセス コントロール リスト(ACL)を ASA ファイアウォールで設定する方法について、簡単な例を提供します。 このドキュメントは、ASA コード バージョン 9.1(1) を実行する ASA 5510 ファイアウォールを使用して書かれていますが、他の任意の ASA ファイアウォール プラットフォームにも簡単に適用できます。 物理インターフェイスの代わりに VLAN を使用する ASA 5505 などのプラットフォームを使用する場合は、適切なインターフェイス タイプに変更する必要があります。

前提条件

要件

このドキュメントに関する固有の要件はありません。

使用するコンポーネント

このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づくものです。

  • ASA コード バージョン 9.1(1) を実行する ASA 5510 ファイアウォール

表記法

ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。

目標

この例のコンフィギュレーションでは、ASA ファイアウォールの DMZ 内の Web サーバへの着信アクセス、および内部ホストと DMZ ホストからの発信接続を許可するために設定する必要がある、NAT とアクセス コントロール リストのコンフィギュレーションについて説明します。 これは、次の 2 つの目的に集約できます。

  1. 内部および DMZ のホストに、インターネットへの発信接続を許可する。

  2. インターネットのホストに、IP アドレスが 192.168.1.100 である DMZ の Web サーバへのアクセスを許可する。

この 2 つの目標を達成するために必要なステップの説明を始める前に、ASA コードの新しいバージョン(バージョン 8.3 以降)のアクセス リストと NAT の動作方法について簡単に説明します。

アクセス コントロール リストの概要

アクセス コントロール リスト(短縮してアクセス リストまたは ACL)は、ASA ファイアウォールがトラフィックを許可するか拒否するかを決定する方法です。 デフォルトで低いセキュリティ レベルから高いレベルへのトラフィックの通過は拒否されます。 これは、低いセキュリティ インターフェイスに ACL を適用することで上書きできます。 また、デフォルトで ASA は、高いセキュリティ インターフェイスから低いインターフェイスへのトラフィックを許可します。 この動作も ACL で上書きできます。

ASA コードの以前のバージョン(8.2 以前)では、ASA は着信接続または着信パケットを、最初にパケットの逆変換を行わずにインターフェイスの ACL と比較します。 つまり ACL では、インターフェイスでキャプチャした状態のパケットを許可する必要がありました。 8.3 以降のコードでは、ASA はインターフェイスの ACL を確認する前にパケットを逆変換します。 つまり、8.3 以降のコード、そしてこのドキュメントでは、ホストの変換された IP ではなく、ホストの実際の IP へのトラフィックが許可されます。 アクセス コントロール リストの詳細については、次のページで参照できます。

http://www.cisco.com/en/US/docs/security/asa/asa91/configuration/firewall/access_rules.html

NAT の概要

ASA バージョン 8.3 以降の NAT は 2 種類に分かれ、Auto NAT(Object NAT)Manual NAT(Twice NAT) として知られています。 1 つめの Object NAT は、ネットワーク オブジェクトの定義の中で設定されます。 この例については、この後このドキュメントで説明します。 この NAT 方法の主な利点の 1 つは、競合を避けるために ASA によって自動的に処理するルールの順序が並べ替えられることです。 この方法は NAT の最も簡単な形式ですが、この簡明さによってコンフィギュレーションの詳細度は制限されます。 たとえば、2 種類目の NAT である Manual NAT では可能な、パケットの宛先に基づいた変換の決定ができません。 Manual NAT は詳細度については優れていますが、正しい動作を得るためには各行を正しい順序で設定する必要があります。 これによりこの NAT タイプは複雑になるため、このページのコンフィギュレーション例では使用しません。 NAT の詳細については、次のページで参照できます。

http://www.cisco.com/en/US/docs/security/asa/asa91/configuration/firewall/nat_overview.html

はじめに

基本的な ASA 設定のセットアップでは、3 つのネットワーク セグメントに接続された 3 つのインターフェイスがあります。 ISP ネットワーク セグメントは Ethernet0/0 インターフェイスに接続され、セキュリティ レベル 0 の outside のラベルが付けられます。 内部ネットワークは Ethernet0/1 に接続され、セキュリティ レベル 100 の inside のラベルが付けられます。 Web サーバが存在する DMZ セグメントは Ethernet0/2 に接続され、セキュリティ レベル 50 の dmz のラベルが付けられます。

この例のインターフェイスのコンフィギュレーションと IP アドレスは次のようになります。

interface Ethernet0/0

 nameif outside

 security-level 0

 ip address 198.51.100.100 255.255.255.0 

!

interface Ethernet0/1

 nameif inside

 security-level 100

 ip address 192.168.0.1 255.255.255.0 

!

interface Ethernet0/2

 nameif dmz

 security-level 50

 ip address 192.168.1.1 255.255.255.0 

!

route outside 0.0.0.0 0.0.0.0 198.51.100.1

ASA の inside インターフェイスは IP アドレスが 192.168.0.1 に設定されていることがわかります。これが内部ホストのデフォルト ゲートウェイです。 ASA の outside インターフェイスは ISP から入手した IP アドレスで設定されています。 ネクスト ホップを ISP のゲートウェイに設定するデフォルト ルートが設定されています。 DHCP を使用する場合、これは自動的に提供されます。 dmz インターフェイスは IP アドレスが 192.168.1.1 に設定されています。これが DMZ ネットワーク セグメント上のホストのデフォルト ゲートウェイです。

トポロジ

ケーブル接続と設定を次に図示します。

asa-config-dmz-01.gif

ステップ 1:ホストがインターネットへアクセスできるように NAT を設定する

この例では Object NAT、別名 AutoNAT を使用します。 最初に設定するのは、inside および dmz セグメント上のホストのインターネットへの接続を許可する NAT ルールです。 これらのホストはプライベート IP アドレスを使用するので、これをインターネット上でルーティング可能なアドレスに変換する必要があります。 この例では、アドレスが ASA の outside インターフェイスの IP アドレスに見えるように変換します。 外側の IP が(おそらく DHCP によって)頻繁に変更される場合、このセットアップはとても簡単です。

この NAT を設定するには、内側のサブネットを表すネットワーク オブジェクトと、dmz のサブネットを表すネットワーク オブジェクトを作成する必要があります。 これらのオブジェクトでそれぞれ ダイナミック NAT ルールを設定すると、対応するインターフェイスから外側のインターフェイスへ通過する際にこれらのクライアントに対して PAT が行われます。

このコンフィギュレーションは次のようになります。

object network inside-subnet

 subnet 192.168.0.0 255.255.255.0

 nat (inside,outside) dynamic interface

!

object network dmz-subnet

 subnet 192.168.1.0 255.255.255.0

 nat (dmz,outside) dynamic interface

この時点で実行コンフィギュレーションを見ると(show run の出力)、オブジェクト定義が出力の 2 つの部分に分かれていることがわかります。 最初の部分ではオブジェクトに含まれる内容(ホスト/サブネット、IP アドレスなど)のみが示され、2 番目のセクションでは、そのオブジェクトに結び付けられた NAT ルールが表示されます。 この出力の最初のエントリは次を意味します。

192.168.0.0/24 サブネットと一致するホストが、内側のインターフェイスから外側のインターフェイスへ通過する場合は、そのホストを動的に外側のインターフェイスに変換します。

ステップ 2:インターネットから Web サーバにアクセスできるように NAT を設定する

内側および dmz インターフェイスのホストがインターネットに到達できるようになったので、次にインターネット上のユーザが Web サーバの TCP ポート 80 にアクセスできるようにコンフィギュレーションを変更する必要があります。 この例では、ISP から提供された、別途所有する追加の IP アドレスに、インターネット上のユーザが接続できるようにセットアップします。 この例では 198.51.100.101 を使用します。 このコンフィギュレーションによって、インターネット上のユーザは 198.51.100.101 の TCP ポート 80 にアクセスすることで DMZ の Web サーバに到達できます。 ASA はこのタスクに Object NAT を使用し、Web サーバ(192.168.1.100)の TCP ポート 80 が外側の 198.51.100.101 の TCP ポート 80 に見えるように変換します。 同様に、オブジェクトを定義し、オブジェクトの変換ルールを定義します。 さらに、このホストの変換先の IP を表す 2 番目のオブジェクトを定義します。

このコンフィギュレーションは次のようになります。

object network webserver-external-ip

 host 198.51.100.101

!

object network webserver

 host 192.168.1.100

 nat (dmz,outside) static webserver-external-ip service tcp www www

この例の NAT ルールの内容をまとめると次のようになります。

IP アドレスが 192.168.1.100 と一致する DMZ セグメント上のホストが、TCP ポート 80(www)を送信元とする接続を確立し、この接続が外側のインターフェイスから送信される場合、これを外側のインターフェイスの TCP ポート 80(www)に変換し、IP アドレスを 198.51.100.101 に変換します。

これは多少奇妙に思えます。 「TCP ポート 80(www)を送信元とする」とありますが、Web トラフィックはポート 80 を宛先にします。 これらの NAT ルールは本質的に双方向であることを理解することが重要です。 このため、用語を反転させてこの文を言い換えることができます。 変換した結果はより理解しやすくなります。

外側のホストが 198.51.100.101 の宛先 TCP ポート 80(www)への接続を確立した場合、宛先 IP アドレスを 192.168.1.100 に変換し、宛先ポートを TCP ポート 80(www)にして DMZ に送信します。

このように表現した方がより理解しやすくなります。 次に ACL を設定する必要があります。

ステップ 3:ACL を設定する

NAT が設定され、今回のコンフィギュレーションの終了に近づきました。 ASA の ACL によって次のようなデフォルトのセキュリティ動作を上書きできることを思い出してください。

  • セキュリティの低いインターフェイスから送信されたトラフィックがセキュリティの高いインターフェイスへ送信される場合は拒否されます。

  • セキュリティの高いインターフェイスから送信されたトラフィックがセキュリティの低いインターフェイスへ送信される場合は許可されます。

このため、コンフィギュレーションに ACL を何も追加しない場合、この例では次のトラフィックが許可されます。

  • 内側(セキュリティ レベル 100)のホストは DMZ(セキュリティ レベル 50)のホストに接続できます。

  • 内側(セキュリティ レベル 100)のホストは外側(セキュリティ レベル 0)のホストに接続できます。

  • DMZ(セキュリティ レベル 50)のホストは外側(セキュリティ レベル 0)のホストに接続できます。

一方、次のトラフィックは拒否されます。

  • 外側(セキュリティ レベル 0)のホストは内側(セキュリティ レベル 100)のホストに接続できません。

  • 外側(セキュリティ レベル 0)のホストは DMZ(セキュリティ レベル 100)のホストに接続できません。

  • DMZ(セキュリティ レベル 0)のホストは内側(セキュリティ レベル 100)のホストに接続できません。

現在のコンフィギュレーションでは、外側から DMZ ネットワークへのトラフィックは ASA によって拒否されるため、ステップ 2 で NAT の設定をしたにもかかわらず、インターネット上のユーザは Web サーバに接続できません。 このトラフィックを明示的に許可する必要があります。 8.3 以降のコードでは、変換された IP ではなくホストの実際の IP を ACL で使用する必要があります。 つまり、コンフィギュレーションでは、宛先が 198.51.100.101 のポート 80 のトラフィックではなく、宛先が 192.168.1.100 のトラフィックを許可する必要があります。 単純化するために、ステップ 2 で定義したオブジェクトを ACL に使用することもできます。 ACL を作成したら、それを外側のインターフェイスの着信に適用する必要があります。

これらのコンフィギュレーション コマンドは次のようになります。

access-list outside_acl extended permit tcp any object webserver eq www 

!

access-group outside_acl in interface outside

この access-list 行は次を意味します。

any(任意の場所)から webserver オブジェクト(192.168.1.100)で表されるホストのポート 80 へのトラフィックを許可します。

ここで any キーワードを使用することが重要です。 Web サイトに到達するクライアントの送信元 IP アドレスはわからないため、「任意の IP アドレス」を意味する any を指定します。

DMZ セグメントから内部ネットワーク セグメントのホスト宛のトラフィックについてはどうすればよいでしょうか。 たとえば、内部ネットワークのサーバに接続する必要のあるホストが DMZ 上に存在する場合です。 ASA が DMZ から内部サーバ宛の特定のトラフィックのみを許可し、それ以外は内部セグメント宛のトラフィックをすべてブロックするにはどうすればよいでしょうか。

この例では、内部ネットワークに IP アドレス 192.168.0.53 の DNS サーバがあり、DNS 解決のために DMZ 上のホストがアクセスする必要があると仮定します。 DMZ インターフェイスに着信するトラフィックに対して、前述したデフォルトのセキュリティ動作を ASA が上書きできるように、必要な ACL を作成して DMZ インターフェイスに適用します。

これらのコンフィギュレーション コマンドは次のようになります。

object network dns-server

 host 192.168.0.53

!

access-list dmz_acl extended permit udp any object dns-server eq domain 

access-list dmz_acl extended deny ip any object inside-subnet 

access-list dmz_acl extended permit ip any any 

!

access-group dmz_acl in interface dmz

この ACL は、DNS サーバの UDP ポート 53 へのトラフィックを単純に許可するよりも複雑です。 最初の 'permit' 行だけにした場合、DMZ からインターネット上のホストへのすべてのトラフィックはブロックされます。 ACL の最後には暗黙の 'deny ip any any' があるためです。 この結果、DMZ のホストはインターネットにアクセスすることができなくなります。 DMZ から外側へのトラフィックがデフォルトで許可されていても、DMZ インターフェイスに ACL を適用することによって DMZ インターフェイスのデフォルトのセキュリティ動作は無効となり、インターフェイスの ACL でトラフィックを明示的に許可する必要があります。

ステップ 4:パケット トレーサー機能を使用してコンフィギュレーションをテストする

コンフィギュレーションが完了したので、動作を確認する必要があります。 最も簡単な方法は実際のホストを使用することです(自分が所有するネットワークの場合)。 しかし、コマンド ラインからのテストと ASA のツールの一部を紹介するために、パケット トレーサーを使用してテストを行い、必要な場合は発生した問題をデバッグします。

パケット トレーサーは、一連のパラメータに基づいてパケットを模倣し、ワイヤから取り出した実際のパケットのようにそのパケットをインターフェイスのデータパスに挿入します。 このパケットには、ファイアウォールを通過するパケットに対して実施される数多くのチェックや処理が行われ、パケット トレーサーはその結果を記録します。 インターネット上のホストに送信しようとしている内部ホストのシミュレーションを行います。 次のコマンドはファイアウォールに次の内容を指示します。

内側のインターフェイスに到着した、IP アドレス 192.168.0.125 の送信元ポート 12345 から IP アドレス 203.0.113.1 のポート 80 宛の TCP パケットをシミュレートします。

ciscoasa# packet-tracer input inside tcp 192.168.0.125 12345 203.0.113.1 80



Phase: 1

Type: ACCESS-LIST

Subtype: 

Result: ALLOW

Config:

Implicit Rule

Additional Information:

MAC Access list



Phase: 2

Type: ROUTE-LOOKUP

Subtype: input

Result: ALLOW

Config:

Additional Information:

in   0.0.0.0         0.0.0.0         outside



Phase: 3

Type: NAT

Subtype: 

Result: ALLOW

Config:

object network inside-subnet

 nat (inside,outside) dynamic interface

Additional Information:

Dynamic translate 192.168.0.125/12345 to 198.51.100.100/12345



Phase: 4

Type: NAT

Subtype: per-session

Result: ALLOW

Config:

Additional Information:



Phase: 5

Type: IP-OPTIONS

Subtype: 

Result: ALLOW

Config:

Additional Information:



Phase: 6

Type: NAT

Subtype: per-session

Result: ALLOW

Config:

Additional Information:



Phase: 7      

Type: IP-OPTIONS

Subtype: 

Result: ALLOW

Config:

Additional Information:



Phase: 8

Type: FLOW-CREATION

Subtype: 

Result: ALLOW

Config:

Additional Information:

New flow created with id 1, packet dispatched to next module



Result:

input-interface: inside

input-status: up

input-line-status: up

output-interface: outside

output-status: up

output-line-status: up

Action: allow

最終結果ではこのトラフィックが許可されており、これはコンフィギュレーションの NAT と ACL チェックを通過して外側の出力インターフェイスから送信されたことを意味します。 パケットはフェーズ 3 で変換されており、ヒットしたルールがこのフェーズの詳細に表示されていることに注目してください。 ホスト 192.168.0.125 はコンフィギュレーションに従って動的に 198.51.100.100 に変換されています。

次に、インターネットから Web サーバへの接続を実行します。 インターネット上のホストは外側のインターフェイスの 192.51.100.101 に接続することによって Web サーバにアクセスすることを思い出してください。 このコマンドは次のように翻訳できます。

外側のインターフェイスに到着した、IP アドレス 192.0.2.123 の送信元ポート 12345 から IP アドレス 198.51.100.101 のポート 80 宛の TCP パケットをシミュレートします。

ciscoasa# packet-tracer input outside tcp 192.0.2.123 12345 98.51.100.101 80



Phase: 1

Type: UN-NAT

Subtype: static

Result: ALLOW

Config:

object network webserver

 nat (dmz,outside) static webserver-external-ip service tcp www www 

Additional Information:

NAT divert to egress interface dmz

Untranslate 98.51.100.101/80 to 192.168.1.100/80



Phase: 2

Type: ACCESS-LIST

Subtype: log

Result: ALLOW

Config:

access-group outside_acl in interface outside

access-list outside_acl extended permit tcp any object webserver eq www 

Additional Information:



Phase: 3

Type: NAT

Subtype: per-session

Result: ALLOW

Config:       

Additional Information:



Phase: 4

Type: IP-OPTIONS

Subtype: 

Result: ALLOW

Config:

Additional Information:



Phase: 5

Type: NAT

Subtype: rpf-check

Result: ALLOW

Config:

object network webserver

 nat (dmz,outside) static webserver-external-ip service tcp www www 

Additional Information:



Phase: 6

Type: NAT

Subtype: per-session

Result: ALLOW

Config:

Additional Information:



Phase: 7

Type: IP-OPTIONS

Subtype: 

Result: ALLOW

Config:

Additional Information:



Phase: 8

Type: FLOW-CREATION

Subtype: 

Result: ALLOW

Config:

Additional Information:

New flow created with id 3, packet dispatched to next module



Result:

input-interface: outside

input-status: up

input-line-status: up

output-interface: dmz

output-status: up

output-line-status: up

Action: allow

結果は再びパケットが許可されています。 ACL がテストされ、コンフィギュレーションが正しいことがわかったので、インターネット上(外部)のユーザは外部 IP を使用して Web サーバにアクセスできます。

結論

基本的な NAT を行う ASA のコンフィギュレーションはそれほど大変な作業ではありません。 このドキュメントの例は、上記のサンプル コンフィギュレーションで使用されている IP アドレスとポートを変更することによって特定のシナリオに適用できます。 コンフィギュレーションをまとめると、この例の最終的な ASA の設定は、ASA 5510 に対しては次のようになります。

ASA Version 9.1(1) 

!

interface Ethernet0/0

 nameif outside

 security-level 0

 ip address 198.51.100.100 255.255.255.0 

!

interface Ethernet0/1

 nameif inside

 security-level 100

 ip address 192.168.0.1 255.255.255.0 

!

interface Ethernet0/2

 nameif dmz

 security-level 50

 ip address 192.168.1.1 255.255.255.0 

!

object network inside-subnet

 subnet 192.168.0.0 255.255.255.0

object network dmz-subnet

 subnet 192.168.1.0 255.255.255.0

object network webserver

 host 192.168.1.100

object network webserver-external-ip

 host 198.51.100.101

object network dns-server

 host 192.168.0.53



!

access-list outside_acl extended permit tcp any object webserver eq www 

access-list dmz_acl extended permit udp any object dns-server eq domain 

access-list dmz_acl extended deny ip any object inside-subnet 

access-list dmz_acl extended permit ip any any

!

object network inside-subnet

 nat (inside,outside) dynamic interface

object network dmz-subnet

 nat (dmz,outside) dynamic interface

object network webserver

 nat (dmz,outside) static webserver-external-ip service tcp www www 

access-group outside_acl in interface outside

access-group dmz_acl in interface dmz

!

route outside 0.0.0.0 0.0.0.0 198.51.100.1 1

たとえば ASA 5505 であれば、インターフェイスが前の説明と同様に接続されている場合(Ethernet0/0 に接続された外部ネットワーク、Ethernet0/1 に接続された内部ネットワーク、Ethernet0/2 に接続された DMZ)、次のようになります。

ASA Version 9.1(1) 

!

interface Ethernet0/0

 description Connected to Outside Segment

 switchport access vlan 2

!

interface Ethernet0/1

 description Connected to Inside Segment

 switchport access vlan 1

!

interface Ethernet0/2

 description Connected to DMZ Segment

 switchport access vlan 3

!

interface Vlan2

 nameif outside

 security-level 0

 ip address 198.51.100.100 255.255.255.0 

!

interface Vlan1

 nameif inside

 security-level 100

 ip address 192.168.0.1 255.255.255.0 

!

interface Vlan3

 nameif dmz

 security-level 50

 ip address 192.168.1.1 255.255.255.0 

!

object network inside-subnet

 subnet 192.168.0.0 255.255.255.0

object network dmz-subnet

 subnet 192.168.1.0 255.255.255.0

object network webserver

 host 192.168.1.100

object network webserver-external-ip

 host 198.51.100.101

object network dns-server

 host 192.168.0.53



!

access-list outside_acl extended permit tcp any object webserver eq www 

access-list dmz_acl extended permit udp any object dns-server eq domain 

access-list dmz_acl extended deny ip any object inside-subnet 

access-list dmz_acl extended permit ip any any 

!

object network inside-subnet

 nat (inside,outside) dynamic interface

object network dmz-subnet

 nat (dmz,outside) dynamic interface

object network webserver

 nat (dmz,outside) static webserver-external-ip service tcp www www 

access-group outside_acl in interface outside

access-group dmz_acl in interface dmz

!

route outside 0.0.0.0 0.0.0.0 198.51.100.1 1

関連するシスコ サポート コミュニティ ディスカッション

シスコ サポート コミュニティは、どなたでも投稿や回答ができる情報交換スペースです。


関連情報


Document ID: 115904