概要
このドキュメントでは、ネットワークの入口での中継トラフィックとエッジ トラフィックのフィルタリングについて、ガイドラインおよび推奨する展開方法を示します。アクセス コントロール リスト(ACL)を使用して、ネットワークへの必要なトラフィックのみを明示的に許可して、ネットワークのセキュリティを向上させます。
中継フィルタ
一般的なセットアップ
一般的な企業ネットワークのインターネット接続点(Point of Presence)など、大部分のエッジ ネットワーク環境では、入力フィルタリングを使用して無許可トラフィックをネットワークのエッジで廃棄する必要があります。一部のサービス プロバイダーの展開では、この形式によるエッジ トラフィックや中継トラフィックのフィルタリングを効果的に使用して、顧客に出入りする中継トラフィックの流れを特定の許可されたプロトコルだけに制限できます。このドキュメントでは、エンタープライズ導入モデルについて重点的に説明します
次の例は、一般的な企業のインターネット接続形態を示しています。2 台のエッジ ルータ(IR1 と IR2)によってインターネットに直接接続しています。2 台のルータの背後にある 1 対のファイアウォール(この例では Cisco PIX)は、ステートフル インスペクション機能を備えており、内部ネットワークと緩衝地帯(DMZ)の両方へのアクセスを許可します。DMZには、DNSやWebなどのパブリック向けサービスが含まれています。これは、パブリックインターネットから直接アクセスできる唯一のネットワークです。インターネットから内部ネットワークに直接アクセスすることはできませんが、内部ネットワークから送信されたトラフィックはインターネット上のサイトに到達できます。
着信 ACL を使用して一次レベルのセキュリティを確保するように、エッジ ルータを設定する必要があります。この ACL によって、特別に許可されたトラフィックだけを DMZ にアクセスさせ、インターネットにアクセスしている内部ユーザに返されるリターン トラフィックを許可します。無許可トラフィックはすべて、入力インターフェイスで廃棄されます。
トランジット ACL のセクション
一般的に、トランジット ACL は次の 4 つのセクションから構成されます。
-
特定用途のアドレスとアンチスプーフィングのエントリ。ネットワーク内のアドレスを送信元とするパケットや不正な送信元が、外部ソースからネットワーク内に入ることを拒否します。
注:RFC 1918では、インターネット上で有効な送信元アドレスではない予約済みアドレス空間が定義されています。RFC 3330 では、フィルタリングが必要となる可能性のある特定用途アドレスを定義しています。RFC 2827には、アンチスプーフィングのガイドラインが記載されています。
-
インターネットへの内部接続に対して明示的に許可されたリターン トラフィック
-
保護されている内部アドレスを宛先とする、明示的に許可された外部ソース トラフィック
-
明示的 deny
statement
注:すべてのACLには暗黙の deny
明示的なNAT設定を使用する場合、 deny
ステートメントの例: deny ip any any
.ほとんどのプラットフォームでは、このような文は拒否されたパケットのカウントを保持します。この数は、 show access-list
コマンドが表示されない場合もあります。
トランジット ACL の作成方法
トランジット ACL を作成する第一歩は、自身のネットワークに必要なプロトコルを決定することです。各サイトには固有の要件がありますが、ある種のプロトコルやアプリケーションは広く使用されており、ほとんどの場合、許可されています。たとえば、パブリック アクセス可能な Web サーバへの接続を DMZ セグメントによって提供する場合は、ポート 80 でインターネットから DMZ サーバ アドレスへの TCP を使用する必要があります。同様に、インターネットへの内部接続の場合は、確立された TCP のリターン トラフィック(確認応答(ACK)ビットが設定されているトラフィック)を ACL で許可する必要があります。
必要なプロトコルの識別
必要なプロトコルのリストの作成は大変な作業になることもありますが、必要なトラフィックの識別に役立ついくつかのテクニックを必要に応じて使用できます。
-
ローカルのセキュリティ ポリシー/サービス ポリシーの検討。
ローカル サイトのポリシーは、サービスを許可または拒否する基準を策定する上で役立つものでなければなりません。
-
ファイアウォール設定の検討/監査。
現在のファイアウォール設定には、明示的な設定が含まれている必要があります permit
許可されたサービスのステートメント。多くの場合、この設定を ACL 形式に変換して使用することで、ACL の大部分のエントリを作成できます。
注:ステートフルファイアウォールには通常、許可された接続へのリターントラフィックに関する明示的なルールはありません。ルータ ACL はステートフルではないため、リターン トラフィックを明示的に許可する必要があります。
-
使用するアプリケーションの検討/監査。
DMZ にホストされているアプリケーションと内部で使用されるアプリケーションは、フィルタリング要件の決定に役立ちます。アプリケーションの要件を検討することで、フィルタリングの設計に不可欠な詳細事項を把握できます。
-
分類 ACL の使用。
分類ACLは次の要素で構成されます permit
内部ネットワーク宛てに使用される可能性があるさまざまなプロトコルのステートメント。(一般的に使用されるプロトコルとアプリケーションのリストについては、「付録 A」を参照)。 show access-list
必要なプロトコルを識別するために、アクセスコントロールエントリ(ACE)のヒット数を表示するコマンド。明示的に作成する前に、疑わしい結果や意外な結果を調査して理解します permit
予期しないプロトコルに対するステートメント。
-
Netflow スイッチング機能の使用。
Netflow は一種のスイッチング機能であり、有効にすると詳細なフロー情報を得ることができます。エッジルータでNetFlowが有効になっている場合、 show ip cache flow
コマンドは、NetFlowによって記録されたプロトコルのリストを提供します。Netflow であらゆるプロトコルを識別できるわけではないので、このテクニックは他のテクニックと組み合わせて使用する必要があります。
無効なトラフィックの識別
直接的に保護することに加え、トランジット ACL は、インターネット上の特定タイプの無効トラフィックに対する防御の最前線としても機能します。
その他の考慮すべきトラフィック タイプは、以下のとおりです。
-
エッジ ルータとの通信に必要な外部プロトコルと IP アドレス
-
インターネットへの内部接続に対して明示的に許可されたリターン トラフィック
-
特定タイプのインターネット制御メッセージ プロトコル(ICMP)
-
発信用ドメイン ネーム システム(DNS)クエリーの応答
-
TCP established
-
ユーザ データグラム プロトコル(UDP)のリターン トラフィック
-
FTP データ接続
-
TFTP データ接続
-
マルチメディア接続
-
保護されている内部アドレスを宛先とする、明示的に許可された外部ソース トラフィック
ACL の適用
新たに作成した ACL は、エッジ ルータのインターネット接続インターフェイスで着信に適用する必要があります。「一般的なセットアップ」の項で示した図では、IR1 と IR2 のインターネット接続インターフェイスの「in」に ACL が適用されています。
詳細については、「導入ガイドライン」および「展開例」の項を参照してください。
ACL の例
次のアクセス リストは、トランジット ACL に必要な一般的エントリのシンプルかつ実用的な例を示しています。この基本的な ACL は、ローカル サイト固有の設定事項を反映するようにカスタマイズする必要があります。
!--- Add anti-spoofing entries.
!--- Deny special-use address sources.
!--- Refer to RFC 3330 for additional special use addresses.
access-list 110 deny ip 127.0.0.0 0.255.255.255 any
access-list 110 deny ip 192.0.2.0 0.0.0.255 any
access-list 110 deny ip 224.0.0.0 31.255.255.255 any
access-list 110 deny ip host 255.255.255.255 any
!--- The deny statement should not be configured
!--- on Dynamic Host Configuration Protocol (DHCP) relays.
access-list 110 deny ip host 0.0.0.0 any
!--- Filter RFC 1918 space.
access-list 110 deny ip 10.0.0.0 0.255.255.255 any
access-list 110 deny ip 172.16.0.0 0.15.255.255 any
access-list 110 deny ip 192.168.0.0 0.0.255.255 any
!--- Permit Border Gateway Protocol (BGP) to the edge router.
access-list 110 permit tcp host bgp_peer gt 1023 host router_ip eq bgp
access-list 110 permit tcp host bgp_peer eq bgp host router_ip gt 1023
!--- Deny your space as source (as noted in RFC 2827).
access-list 110 deny ip your Internet-routable subnet any
!--- Explicitly permit return traffic.
!--- Allow specific ICMP types.
access-list 110 permit icmp any any echo-reply
access-list 110 permit icmp any any unreachable
access-list 110 permit icmp any any time-exceeded
access-list 110 deny icmp any any
!--- These are outgoing DNS queries.
access-list 110 permit udp any eq 53 host primary DNS server gt 1023
!--- Permit older DNS queries and replies to primary DNS server.
access-list 110 permit udp any eq 53 host primary DNS server eq 53
!--- Permit legitimate business traffic.
access-list 110 permit tcp any Internet-routable subnet established
access-list 110 permit udp any range 1 1023 Internet-routable subnet gt 1023
!--- Allow ftp data connections.
access-list 110 permit tcp any eq 20 Internet-routable subnet gt 1023
!--- Allow tftp data and multimedia connections.
access-list 110 permit udp any gt 1023 Internet-routable subnet gt 1023
!--- Explicitly permit externally sourced traffic.
!--- These are incoming DNS queries.
access-list 110 permit udp any gt 1023 host <primary DNS server> eq 53
!-- These are zone transfer DNS queries to primary DNS server.
access-list 110 permit tcp host secondary DNS server gt 1023 host primary DNS server eq 53
!--- Permit older DNS zone transfers.
access-list 110 permit tcp host secondary DNS server eq 53 host primary DNS server eq 53
!--- Deny all other DNS traffic.
access-list 110 deny udp any any eq 53
access-list 110 deny tcp any any eq 53
!--- Allow IPSec VPN traffic.
access-list 110 permit udp any host IPSec headend device eq 500
access-list 110 permit udp any host IPSec headend device eq 4500
access-list 110 permit 50 any host IPSec headend device
access-list 110 permit 51 any host IPSec headend device
access-list 110 deny ip any host IPSec headend device
!--- These are Internet-sourced connections to
!--- publicly accessible servers.
access-list 110 permit tcp any host public web server eq 80
access-list 110 permit tcp any host public web server eq 443
access-list 110 permit tcp any host public FTP server eq 21
!--- Data connections to the FTP server are allowed
!--- by the permit established ACE.
!--- Allow PASV data connections to the FTP server.
access-list 110 permit tcp any gt 1023 host public FTP server gt 1023
access-list 110 permit tcp any host public SMTP server eq 25
!--- Explicitly deny all other traffic.
access-list 101 deny ip any any
注:トランジットACLを適用する際には、次の点に注意してください。
-
「 log
キーワードは、特定のプロトコルの送信元と宛先に関する詳細情報を提供するために使用できます。このキーワードは、ACLヒットの詳細に関する有益な情報を提供しますが、ACLエントリに対する過剰なヒットは、 log
キーワードincrease CPU utilization.ロギングに関連したパフォーマンスへの影響は、プラットフォームによって異なります。
-
ACL によって管理上拒否されたパケットに対して、ICMP unreachable メッセージが生成されます。これはルータとリンクのパフォーマンスに影響を与えることがあります。次の使用を検討してください。 no ip unreachables
コマンドを発行して、トランジット(エッジ)ACLが展開されているインターフェイスでIP到達不能を無効にします。
-
このACLは、最初にACLを設定する前に、 permit
ビジネス上の正当なトラフィックが拒否されないことを保証するための文。ビジネスの正当なトラフィックが特定され、説明されると、 deny
要素を設定できます。
ACLS と断片化パケット
ACLには fragments
特別なフラグメント化されたパケット処理動作を有効にするキーワード。一般に、ACLのレイヤ4情報に関係なく、レイヤ3ステートメント(プロトコル、送信元アドレス、宛先アドレス)に一致する先頭以外のフラグメントは、 permit
または deny
一致したエントリのステートメント。このコマンドを使用すると、 fragments
キーワードを使用すると、非先頭フラグメントをより詳細に拒否または許可するようにACLに強制できます。
フラグメントをフィルタリングすることにより、非初期フラグメント(FO > 0 など)だけを使用するサービス拒否(DoS)攻撃に対する保護がさらに強化されます。Cisco IOSソフトウェアリリース12.2以降では、 deny
aclの先頭にある非先頭フラグメントに対するステートメントは、すべての非先頭フラグメントのルータへのアクセスを拒否します。まれな状況では、有効なセッションが断片化を必要とする場合があります。そのため、次の場合にフィルタリングされます。 deny fragment
ステートメントがACLに存在します。断片化が必要となる状況としては、ISAKMP 認証にデジタル認証を使用する場合や、IPSec NAT Traversal を使用する場合などがあります。
たとえば、次に示す部分的な ACL について考えてください。
access-list 110 deny tcp any Internet routable subnet fragments
access-list 110 deny udp any Internet routable subnet fragments
access-list 110 deny icmp any Internet routable subnet fragments
<rest of ACL>
これらのエントリをACLの先頭に追加すると、ネットワークへの非先頭フラグメントのアクセスはすべて拒否されますが、フラグメント化されていないパケットまたは先頭フラグメントは、ACLの次の行に渡され、 deny fragment
ステートメントです。上記の部分的な ACL では、プロトコル(UDP、TCP、ICMP)ごとに ACL で個別のカウンタが増分されるので、攻撃の分類が容易になります。
攻撃の多くは断片化パケットによるフラッディングに依存しているため、内部ネットワークに着信するフラグメントをフィルタリングすることにより、防御を強化できます。また、トランジット ACL のレイヤ 3 ルールと照合するだけで、フラグメントを送信する攻撃を阻止できます。
この方法の詳細な説明については、「アクセス コントロール リストと IP 断片化」を参照してください。
リスク評価
中継トラフィックを保護する ACL を展開する際は、リスクに関する次の 2 つの主要事項を考慮してください。
展開する前にラボでテストすることを推奨します。
付録
一般的に使用されるプロトコルとアプリケーション
TCP のポート名
Cisco IOS® ソフトウェアで ACL を設定する際は、次のリストの TCP ポート名をポート番号の代わりに使用できます。これらのプロトコルの参考情報については、現在割り当てられている番号の RFC を参照してください。これらのプロトコルに対応するポート番号は、ポート番号の代わりに?を入力してACLを設定する際にでも確認できます。
bgp |
kshell |
chargen |
login |
cmd |
lpd |
daytime |
nntp |
discard |
pim |
domain |
pop2 |
echo |
pop3 |
exec |
smtp |
finger |
sunrpc |
ftp |
syslog |
ftp-data |
tacacstalk |
gopher |
telnet |
hostname |
time |
ident |
uucp |
irc |
whois |
klogin |
www |
UDP のポート名
Cisco IOS ソフトウェアで ACL を設定する際は、次のリストの UDP ポート名をポート番号の代わりに使用できます。これらのプロトコルの参考情報については、現在割り当てられている番号の RFC を参照してください。これらのプロトコルに対応するポート番号は、ポート番号の代わりに?を入力してACLを設定する際にでも確認できます。
biff |
ntp |
bootpc |
pim-auto-rp |
bootps |
rip |
discard |
snmp |
dnsix |
snmptrap |
domain |
sunrpc |
echo |
syslog |
isakmp |
tacacs |
mobile-ip |
talk |
nameserver |
tftp |
netbios-dgm |
time |
netbios-ns |
who |
netbios-ss |
xdmcp |
導入ガイドライン
シスコは控えめな導入プラクティスを推奨します。トランジット ACL を適切に展開するには、必要なプロトコルを明確に把握しておく必要があります。以降のガイドラインでは、反復的な方法を使用して保護 ACL を展開する非常に保守的な方法について説明します。
- 分類ACLネットワークで使用されるプロトコルを指定します。
ネットワークで使用される既知のプロトコルをすべて許可する ACL を展開します。このディスカバリまたは分類では、ACLの送信元アドレスは any
IPアドレスまたはインターネットでルーティング可能なIPサブネット全体の宛先です。許可する最後のエントリの設定 ip any any log
許可する必要がある追加のプロトコルを特定するために使用します。
目的は、ネットワークで使用されている必要なプロトコルをすべて特定することです。分析のロギングを使用して、ルータと通信する可能性があるその他のプロトコルを判別します。
注: log
このキーワードを使用すると、ACLヒットの詳細に関する有益な情報が得られます。このキーワードを使用するACLエントリに対するヒットが多すぎると、ログエントリの数が膨大になり、ルータのCPU使用率が高くなる可能性があります。 log
トラフィックの分類に役立てるために必要な場合のみ、キーワードを使用します。
ネットワークは攻撃の危険にさらされますが、ACLは次の要素で構成されます。 permit
ステートメントが配置されています。本来のアクセス制御を実施できるように、分類処理を可能な限り迅速に実行してください。
- 識別したパケットを検討して、内部ネットワークへのアクセスのフィルタリングを開始します。
ステップ 1 で ACL によりフィルタしたパケットを識別して検討したら、分類 ACL を更新して、新たに識別したプロトコルと IP アドレスを設定します。アンチスプーフィングに関する ACL エントリを追加します。必要に応じて、特定の deny
エントリ permit
分類ACL内のステートメント。コントローラ GUI または CLI を使用して show access-list
特定の deny
ヒットカウントのエントリをモニタできます。この方法を使用すると、ACL エントリのロギングを有効にしなくても、禁止されているネットワーク アクセスの試みについて情報を得ることができます。ACLの最後の行は deny ip any any
.この最後のエントリに対するヒット カウントを調べることにより、禁止されているアクセスの試みについて情報を得ることができます。
- ACL をモニタして更新します。
完成した ACL をモニタして、新たに導入した必要なプロトコルが制御された方法で追加されていることを確認します。ACL をモニタすることにより、禁止されているネットワーク アクセスの試みについて情報を得ることもできます。このような試みは攻撃の兆候を示していることがあります。
展開例
以下の例は、次のアドレスに基づいてネットワークを保護するトランジット ACL を示しています。
-
ISP ルータの IP アドレス:10.1.1.1
エッジ ルータのインターネット側の IP アドレス:10.1.1.2
インターネット ルーティング可能なサブネット:192.168.201.0 255.255.255.0
VPN ヘッドエンド:192.168.201.100
Web サーバのアドレス:192.168.201.101
FTP サーバのアドレス:192.168.201.102
SMTP サーバのアドレス:192.168.201.103
プライマリ DNS サーバのアドレス:192.168.201.104
セカンダリ DNS サーバのアドレス:172.16.201.50
以下に示すトランジット保護 ACL は、これらの情報に基づいて作成されています。この ACL は、ISP ルータへの eBGP ピアリングの許可、アンチスプーフィング フィルタの提供、特定のリターン トラフィックの許可、特定の着信トラフィックの許可を実施し、その他のトラフィックをすべて明示的に拒否します。
no access-list 110
!--- Phase 1 – Add anti-spoofing entries.
!--- Deny special-use address sources.
!--- See RFC 3330 for additional special-use addresses.
access-list 110 deny ip 127.0.0.0 0.255.255.255 any
access-list 110 deny ip 192.0.2.0 0.0.0.255 any
access-list 110 deny ip 224.0.0.0 31.255.255.255 any
access-list 110 deny ip host 255.255.255.255 any
!--- This deny statement should not be configured
!--- on Dynamic Host Configuration Protocol (DHCP) relays.
access-list 110 deny ip host 0.0.0.0 any
!--- Filter RFC 1918 space.
access-list 110 deny ip 10.0.0.0 0.255.255.255 any
access-list 110 deny ip 172.16.0.0 0.15.255.255 any
access-list 110 deny ip 192.168.0.0 0.0.255.255 any
!--- Permit BGP to the edge router.
access-list 110 permit tcp host 10.1.1.1 gt 1023 host 10.1.1.2 eq bgp
access-list 110 permit tcp host 10.1.1.1 eq bgp host 10.1.1.2 gt 1023
!--- Deny your space as source (as noted in RFC 2827).
access-list 110 deny ip 192.168.201.0 0.0.0.255 any
!--- Phase 2 – Explicitly permit return traffic.
!--- Allow specific ICMP types.
access-list 110 permit icmp any any echo-reply
access-list 110 permit icmp any any unreachable
access-list 110 permit icmp any any time-exceeded
access-list 110 deny icmp any any
!--- These are outgoing DNS queries.
access-list 110 permit udp any eq domain host 192.168.201.104 gt 1023
!--- Permit older DNS queries and replies to primary DNS server.
access-list 110 permit udp any eq domain host 192.168.201.104 eq domain
!--- Permit legitimate business traffic.
access-list 110 permit tcp any 192.168.201.0 0.0.0.255 established
access-list 110 permit udp any range 1 1023 192.168.201.0 0.0.0.255 gt 1023
!--- Allow FTP data connections.
access-list 110 permit tcp any eq ftp-data 192.168.201.0 0.0.0.255 gt 1023
!--- Allow TFTP data and multimedia connections.
access-list 110 permit udp any gt 1023 192.168.201.0 0.0.0.255 gt 1023
!--- Phase 3 – Explicitly permit externally sourced traffic.
!--- These are incoming DNS queries.
access-list 110 permit udp any gt 1023 host 192.168.201.104 eq domain
!--- Zone transfer DNS queries to primary DNS server.
access-list 110 permit tcp host 172.16.201.50 gt 1023 host 192.168.201.104 eq domain
!--- Permit older DNS zone transfers.
access-list 110 permit tcp host 172.16.201.50 eq domain host 192.168.201.104 eq domain
!--- Deny all other DNS traffic.
access-list 110 deny udp any any eq domain
access-list 110 deny tcp any any eq domain
!--- Allow IPSec VPN traffic.
access-list 110 permit udp any host 192.168.201.100 eq isakmp
access-list 110 permit udp any host 192.168.201.100 eq non500-isakmp
access-list 110 permit esp any host 192.168.201.100
access-list 110 permit ahp any host 192.168.201.100
access-list 110 deny ip any host 192.168.201.100
!--- These are Internet-sourced connections to
!--- publicly accessible servers.
access-list 110 permit tcp any host 192.168.201.101 eq www
access-list 110 permit tcp any host 192.168.201.101 eq 443
access-list 110 permit tcp any host 192.168.201.102 eq ftp
!--- Data connections to the FTP server are allowed
!--- by the permit established ACE in Phase 3.
!--- Allow PASV data connections to the FTP server.
access-list 110 permit tcp any gt 1023 host 192.168.201.102 gt 1023
access-list 110 permit tcp any host 192.168.201.103 eq smtp
!--- Phase 4 – Add explicit deny statement.
access-list 110 deny ip any any
Edge-router(config)#interface serial 2/0
Edge-router(config-if)#ip access-group 110 in
関連情報