キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
6789
閲覧回数
20
いいね!
0
コメント
Taisuke Nakamura
Cisco Employee
Cisco Employee

 

はじめに

Modular Policy Framework(MPF) を用いたサービスポリシーにより、以下の機能を柔軟に設定できます。

  ・ サービスモジュール (例:FirePOWER(SFR)、IPS、CX、CSC) との通信連携

  ・ アプリケーションインスペクション

  ・ コネクション制御 (例:タイムアウト値変更、最大接続可能数制限、DoS攻撃対策など)


サービスモジュールとの通信連携や、コネクションの高度な管理のためには、新規設定が必要です。

一部のアプリケーションインスペクション(例:FTPやSIPやSMTPなど)は デフォルトで有効です。 該当の通信が発生時、ASAはパケット内部まで確認し、セカンダリチャネルの動的な許可や 埋め込み型IPアドレスの変換、セキュリティチェックを行います。

本ドキュメントでは、MPFを用いたサービスポリシーの動作仕様、及び その設定例と動作確認方法について説明します。

本ドキュメントは、ASAバージョン 9.3(3)1、ASDMバージョン 7.4(2)を元に確認、作成しております。 
  

  

パケットの処理順序について

既存コネクションの無いパケットの場合、宛先アドレス変換(UnNAT) or ルーティングの後に ACLチェックが行われ、その後に サービスポリシーのチェックが行われます。


 
  

サービスポリシーの処理順序について

サービスポリシーは、任意インターフェイス もしくは グローバルに適用できます。 サービスポリシーを 指定インターフェイスと グロ―バルの両方に設定した場合、インターフェイス ポリシーが優先し処理されます。

ポリシーマップ内に複数クラスを定義した場合、各機能別に上から順にチェックされ、マッチした場合、後続のクラスは処理されません。

この処理をよく理解するために、以下に実際の設定例と、Insideから WEB・FTP・ICMP通信が発生時の処理について説明します。

サービスポリシー設定例:

access-list CLASS-01-ACL extended permit ip any any
access-list CLASS-02-ACL extended permit tcp any any eq ftp
!
class-map CLASS-01 
match access-list CLASS-01-ACL
class-map CLASS-02 match access-list CLASS-02-ACL ! policy-map GLOBAL-PMAP class inspection_default inspect ftp inspect icmp policy-map INSIDE-PMAP class CLASS-01
sfr fail-open class CLASS-02 sfr fail-open inspect ftp ! service-policy GLOBAL-PMAP global service-policy INSIDE-PMAP interface inside


Inside側から WEB通信が発生時は、インターフェイス ポリシー(INSIDE-PMAP)の CLASS-01に定義した FirePOWER(SFR)サービスモジュールと通信連携を行うための sfr fail-open にのみマッチします。  CLASS-02は FTP(=tcp21) のみ対象ですのでマッチしません。その後の グローバルポリシー (GLOBAL-PMAP)にも マッチ対象の inspect機能が無いため、マッチしません。 

Inside側から FTP通信が発生時は、CLASS-01の sfr fail-open にマッチ後、CLASS-02では 既にサービスモジュールには前クラスでマッチしてますので inspect ftpのみマッチします。 既に inspect ftp にマッチしてますので、その後の グローバルポリシー (GLOBAL-PMAP)の inspect ftp にはマッチしません。

Inside側から  ICMP通信 (PING) が発生時は、CLASS-01の sfr fail-open にマッチ後、CLASS-02は FTP(=tcp21) のみ対象ですのでマッチしません。 その後の グローバルポリシー(GLOBAL-PMAP)の inspect icmpにマッチします。

上記 設定時の、Inside側から WEB、FTP、ICMP通信 (PING) が発生時の処理フローは、まとめますと以下となります。

 

 

サービスモジュールとの通信連携の設定例

本項では、以下の構成例と通信要件における設定例と動作確認方法について説明します。
 

試験構成と通信要件

以下構成において、以下の通信要件があるものとします。 ASAは FirePOWER(SFR)サービスモジュールを搭載し、アプリケーションレイヤー制御と 侵入検知・防御処理を提供します。


 
 送信元  送信元IP
 nameif名
 宛先IP  宛先ポート  SFR処理  目的・通信タイプ

 Internal
 Segments

 172.16.0.0/16
 inside側
 Any  http(=tcp80)
 https(=tcp443)
 有効   Web通信
 各種アップデート
 監視対象の通信
 Internal
 Servers
 172.16.200.0/24
 inside側
 172.17.200.0/24  https(=tcp443)  無効  定期バックアップ 
 信頼された通信


 

設定例

CLIでのサービスモジュールへのリダイレクト設定は以下となります。 ACLは上からマッチングを行いますので、インターナルサーバ(172.16.200.1)から リモートサイト(172.17.200.1:443) 宛の通信のDenyエントリを 上位に設定する事で、FirePOWER (SFR) サービスモジュールの処理対象から除外できます。

access-list SFR-ACL extended deny tcp 172.16.200.0 255.255.255.0 172.17.200.0 255.255.255.0 eq https
access-list SFR-ACL extended permit tcp 172.16.0.0 255.255.0.0 any eq www
access-list SFR-ACL extended permit tcp 172.16.0.0 255.255.0.0 any eq https
!
class-map SFR-CMAP
 match access-list SFR-ACL    <--- SFR-ACLを、クラスマップ SFR-CMAPに紐付け
!
policy-map INSIDE-PMAP
 class SFR-CMAP
  sfr fail-open       <--- FirePOWER(SFR)サービスモジュールにリダイレクト設定
!
service-policy INSIDE-PMAP interface inside     <---- insideインターフェイスに適用
!

 

動作確認

以下は実際の、Inside側のクライアント(172.16.100.1)から WEBサーバ(1.0.0.2:80)に通信時のコネクションテーブルの出力です。 サービスモジュールでインスペクション時は、Xフラグが立ちます。

ASA/pri/act# show conn protocol tcp port 80
15 in use, 67539 most used

TCP outside  1.0.0.2:80 inside  172.16.100.1:2719, idle 0:00:00, bytes 1818575, flags UIOX


以下は実際の、Inside側のインターナルサーバ(172.16.200.1)から リモートサイト(172.17.200.1:443)に通信時のコネクションテーブルの出力です。 サービスモジュールでインスペクションが行われない為、Xフラグが立ちません。

ASA/pri/act(config)# show conn protocol tcp port 443
58 in use, 67539 most used

TCP outside  172.17.200.1:443 inside  172.16.200.1:4712, idle 0:00:00, bytes 95708, flags UFRIO
TCP outside  172.17.200.1:443 inside  172.16.200.1:4706, idle 0:00:00, bytes 150730, flags UFRIO
TCP outside  172.17.200.1:443 inside  172.16.200.1:4705, idle 0:00:00, bytes 163046, flags UFRIO
TCP outside  172.17.200.1:443 inside  172.16.200.1:4704, idle 0:00:00, bytes 148665, flags UFRIO
TCP outside  172.17.200.1:443 inside  172.16.200.1:4703, idle 0:00:00, bytes 100004, flags UFRIO
TCP outside  172.17.200.1:443 inside  172.16.200.1:4694, idle 0:00:00, bytes 307592, flags UFRIO


以下は show access-listコマンドの出力です。 インターナルサーバ(172.16.200.1)から リモートサイト(172.17.200.1:443)に通信時は、SFR-ACL line 1 の アクセスコントロールエントリにマッチし、サービスモジュールの処理は拒否されます。

ASA/pri/act(config)# show access-list SFR-ACL
access-list SFR-ACL; 3 elements; name hash: 0xbb46b9db
access-list SFR-ACL line 1 extended deny tcp 172.16.200.0 255.255.255.0 172.17.200.0 255.255.255.0 eq https (hitcnt=34) 0x2f841f94
access-list SFR-ACL line 2 extended permit tcp 172.16.0.0 255.255.0.0 any eq www (hitcnt=72) 0xbdbee4c4
access-list SFR-ACL line 3 extended permit tcp 172.16.0.0 255.255.0.0 any eq https (hitcnt=195) 0xccc4bb49


以下は show service-policyコマンドの出力です。 ヒット時にパケットカウンタの増加を確認できます。

ASA/pri/act(config)# show service-policy

Interface inside:
  Service-policy: INSIDE-PMAP
    Class-map: SFR-CMAP
      SFR: card status Up, mode fail-open
        packet input 75954, packet output 76209, drop 0, reset-drop 0


なお、実通信試験を行わなくても、packet-tracer ユーティリティと show access-list コマンドを用いて、期待の設定にマッチするかの簡易確認が可能です。

以下は、Inside側のクライアント(172.16.100.1)から WEBサーバ(1.0.0.2:443)宛の通信の簡易試験の結果です。

ASA/pri/act# packet-tracer input inside tcp 172.16.100.1 1234 1.0.0.2 443 detail
              --- snip ---
Phase: 6
Type: SFR
Subtype:
Result: ALLOW
Config:                          <----- マッチしたサービスポリシー
class-map SFR-CMAP
 match access-list SFR-ACL
policy-map INSIDE-PMAP
 class SFR-CMAP
  sfr fail-open
service-policy INSIDE-PMAP interface inside
Additional Information:
 Forward Flow based lookup yields rule: in  id=0x7fffe2635f40, priority=73, domain=sfr, deny=false
        hits=227, user_data=0x7fffe1a7b8f0, cs_id=0x0, use_real_addr, flags=0x0, protocol=6
        src ip/id=172.16.0.0, mask=255.255.0.0, port=0, tag=any
        dst ip/id=0.0.0.0, mask=0.0.0.0, port=443, tag=any, dscp=0x0
        input_ifc=inside, output_ifc=any

ASA/pri/act# show access-list SFR-ACL
access-list SFR-ACL; 3 elements; name hash: 0xbb46b9db
access-list SFR-ACL line 1 extended deny tcp 172.16.200.0 255.255.255.0 172.17.200.0 255.255.255.0 eq https (hitcnt=37) 0x2f841f94
access-list SFR-ACL line 2 extended permit tcp 172.16.0.0 255.255.0.0 any eq www (hitcnt=74) 0xbdbee4c4
access-list SFR-ACL line 3 extended permit tcp 172.16.0.0 255.255.0.0 any eq https (hitcnt=227) 0xccc4bb49     <----- マッチしたアクセスコントロールエントリ


以下は、Inside側のインターナルサーバ(172.16.200.1)から リモートサイト(172.17.200.1:443)宛の通信の簡易試験の結果です。

ASA/pri/act# packet-tracer input inside tcp 172.16.200.1 1234 172.17.200.1 443 detail
              --- snip ---
Phase: 6
Type: SFR
Subtype:
Result: ALLOW
Config:                     <----- マッチしたサービスポリシー
class-map SFR-CMAP
 match access-list SFR-ACL
policy-map INSIDE-PMAP
 class SFR-CMAP
  sfr fail-open
service-policy INSIDE-PMAP interface inside
Additional Information:
 Forward Flow based lookup yields rule:
 in  id=0x7fffe1e9d390, priority=73, domain=sfr, deny=true   <----- DENY        hits=38, user_data=0x7fffe1a7b8f0, cs_id=0x0, use_real_addr, flags=0x0, protocol=6
        src ip/id=172.16.200.0, mask=255.255.255.0, port=0, tag=any
        dst ip/id=172.17.200.0, mask=255.255.255.0, port=443, tag=any, dscp=0x0
        input_ifc=inside, output_ifc=any

ASA/pri/act# show access-list SFR-ACL
access-list SFR-ACL; 3 elements; name hash: 0xbb46b9db
access-list SFR-ACL line 1 extended deny tcp 172.16.200.0 255.255.255.0 172.17.200.0 255.255.255.0 eq https (hitcnt=38) 0x2f841f94    <----- マッチしたアクセスコントロールエントリ
access-list SFR-ACL line 2 extended permit tcp 172.16.0.0 255.255.0.0 any eq www (hitcnt=74) 0xbdbee4c4
access-list SFR-ACL line 3 extended permit tcp 172.16.0.0 255.255.0.0 any eq https (hitcnt=236) 0xccc4bb49

 

ベストプラクティス

サービスモジュール (例:FirePOWER(SFR)、IPSなど) での アプリケーション制御や URLフィルタリング、侵入検知や防御の処理は、パケット内部までの検査、およびフローの検査と制御を行うため、高度かつ柔軟な制御が可能ですが、負荷の高い処理となります。

通信負荷の高い環境の場合は、不要な通信は ACLでの破棄を優先して行い、高度な処理が必要な通信のみサービスモジュールにリダイレクトする事で、パフォーマンスの最適化が可能です。


 
  

コネクション タイムアウト値変更と流量制限の設定例

本項では、以下の構成例と通信要件における設定例と動作確認方法について説明します。

 

試験構成と通信要件

以下構成において、以下の通信要件があるものとします。 ASAは 外部(インターネット)から 公開サーバ宛の http(tcp=80)通信の、コネクションのタイムアウト値の短縮、および 最大コネクション数の制限を行います。

MPF-Conn-setting-01

 送信元名  送信元IP
 nameif名
 宛先IP
 宛先Port
 TCP
 アイドル
 タイムアウト
 TCP
 ハーフクローズ
 タイムアウト
 最大同時
 コネクション数

 Internet
 Clients

 Any
 outside側
 内部:192.168.200.1
 外部: 1.100.100.1
 http(=tcp80)
 10分  30秒  最大 1000 まで
 Any  Any  Any  1時間
 (デフォルト)
 10分
 (デフォルト)
 制限無し
 (デフォルト)


 

設定例

CLIでの コネクションタイムアウト値の変更と 流量制限の設定は以下となります。

access-list OUT-CONN-ACL extended permit tcp any host 192.168.200.1 eq www
!
class-map OUT-CONN-CMAP
 match access-list OUT-CONN-ACL
!
policy-map OUT-CONN-PMAP
 class OUT-CONN-CMAP
  set connection conn-max 1000      <---- コネクションを最大1000に制限
  set connection timeout half-closed 0:00:30 idle 0:10:00    <---- タイムアウト値を変更
!
service-policy OUT-CONN-PMAP interface outside   <---- outsideインターフェイスに適用
!

 

動作確認

以下は実際の、DMZ内の公開サーバ(192.168.200.1)から WEB上の任意サイト(1.0.0.2:80)に 通信時のコネクションテーブルの出力です。 show conn long コマンドで、そのコネクションのアイドルタイムアウト値を確認できます。 タイムアウト値の変更対象にマッチしない為、TCPコネクションのアイドルタイムアウト値は 1時間 (1h0m) です。

ASA/pri/act# show conn long address 192.168.200.1
27 in use, 67539 most used
Flags: A - awaiting inside ACK to SYN, a - awaiting outside ACK to SYN,
       B - initial SYN from outside, b - TCP state-bypass or nailed,
       C - CTIQBE media, c - cluster centralized,
       D - DNS, d - dump, E - outside back connection, F - outside FIN, f - inside FIN,
       G - group, g - MGCP, H - H.323, h - H.225.0, I - inbound data,
       i - incomplete, J - GTP, j - GTP data, K - GTP t3-response
       k - Skinny media, M - SMTP data, m - SIP media, n - GUP
       O - outbound data, P - inside back connection, p - Phone-proxy TFTP connection,
       q - SQL*Net data, R - outside acknowledged FIN,
       R - UDP SUNRPC, r - inside acknowledged FIN, S - awaiting inside SYN,
       s - awaiting outside SYN, T - SIP, t - SIP transient, U - up,
       V - VPN orphan, W - WAAS,
       w - secondary domain backup,
       X - inspected by service module,
       x - per session, Y - director stub flow, y - backup stub flow,
       Z - Scansafe redirection, z - forwarding stub flow

TCP outside: 1.0.0.2/80 (1.0.0.2/80) DMZ: 192.168.200.1/10991 (1.100.100.1/10991), flags UO , idle 0s, uptime 9s, timeout 1h0m, bytes 2


以下は実際の、Outside側の外部クライアント(1.100.0.29)から 公開Webサーバ(外部IP=1.100.100.1、内部IP=192.168.200.1)に WEB通信時のコネクションテーブルの出力です。 タイムアウト値の変更対象にマッチする為、TCPコネクションのアイドルタイムアウト値は 10分 (10m0s) です。

ASA/pri/act# show conn long address 192.168.200.1
15 in use, 67539 most used
Flags: A - awaiting inside ACK to SYN, a - awaiting outside ACK to SYN,
       B - initial SYN from outside, b - TCP state-bypass or nailed,
       C - CTIQBE media, c - cluster centralized,
       D - DNS, d - dump, E - outside back connection, F - outside FIN, f - inside FIN,
       G - group, g - MGCP, H - H.323, h - H.225.0, I - inbound data,
       i - incomplete, J - GTP, j - GTP data, K - GTP t3-response
       k - Skinny media, M - SMTP data, m - SIP media, n - GUP
       O - outbound data, P - inside back connection, p - Phone-proxy TFTP connection,
       q - SQL*Net data, R - outside acknowledged FIN,
       R - UDP SUNRPC, r - inside acknowledged FIN, S - awaiting inside SYN,
       s - awaiting outside SYN, T - SIP, t - SIP transient, U - up,
       V - VPN orphan, W - WAAS,
       w - secondary domain backup,
       X - inspected by service module,
       x - per session, Y - director stub flow, y - backup stub flow,
       Z - Scansafe redirection, z - forwarding stub flow

TCP outside: 1.100.0.29/8672 (1.100.0.29/8672) DMZ: 192.168.200.1/80 (1.100.100.1/80), flags UIB , idle 0s, uptime 30s, timeout 10m0s, bytes 26


以下は実際の、Outside側の外部クライアント(1.100.0.*)から 公開Webサーバ(外部IP=1.100.100.1、内部IP=192.168.200.1)に  同時1000コネクション以上の http(tcp=80)通信が発生時に、ASAがコネクション流量制限を行ったことを示すログメッセージです。

ASA/pri/act# show log
Jul 13 2015 11:49:51: %ASA-3-201011: Connection limit exceeded 1000/1000 for input packet from 1.100.0.12/3667 to 192.168.200.1/80 on interface outside
Jul 13 2015 11:49:51: %ASA-3-201011: Connection limit exceeded 1000/1000 for input packet from 1.100.0.12/3668 to 192.168.200.1/80 on interface outside
Jul 13 2015 11:49:51: %ASA-3-201011: Connection limit exceeded 1000/1000 for input packet from 1.100.0.12/3669 to 192.168.200.1/80 on interface outside


以下は show service-policyコマンドの出力です。 現在のコネクション数と 超過によるドロップ数を確認できます。

ASA/pri/act# show service-policy interface outside

Interface outside:
  Service-policy: OUT-CONN-PMAP
    Class-map: OUT-CONN-CMAP
      Set connection policy: conn-max 1000
        current conns 1000, drop 1670     <---- 現在コネクション数とドロップ数
      Set connection timeout policy:
        half-closed 0:00:30 idle 0:10:00
        DCD: disabled, retry-interval 0:00:15, max-retries 5
        DCD: client-probe 0, server-probe 0, conn-expiration 0


なお、実通信試験を行わなくても、packet-tracer ユーティリティと show access-list コマンドを用いて、期待の設定にマッチするかの簡易確認が可能です。

以下は、Outside側の外部クライアント(1.0.0.2)から 公開Webサーバ(外部IP=1.100.100.1、内部IP=192.168.200.1)への http(tcp=80)通信の簡易試験の結果です。

ASA/pri/act# packet in out tcp 1.0.0.2 1234 1.100.100.1 80 detail

Phase: 1
Type: UN-NAT
Subtype: static
Result: ALLOW
Config:
object network DMZ-192.168.200.1
 nat (DMZ,outside) static 1.100.100.1
Additional Information:
NAT divert to egress interface DMZ
Untranslate 1.100.100.1/80 to 192.168.200.1/80     <---- 宛先アドレス変換

Phase: 2
Type: ACCESS-LIST
Subtype: log
Result: ALLOW
Config:
access-group OUT in interface outside
access-list OUT extended permit ip any any    <---- ACLチェック
Additional Information:
 Forward Flow based lookup yields rule:
 in  id=0x7fffe1a7b6b0, priority=13, domain=permit, deny=false
        hits=28823, user_data=0x7fffd3eeca00, cs_id=0x0, use_real_addr, flags=0x0, protocol=0
        src ip/id=0.0.0.0, mask=0.0.0.0, port=0, tag=any
        dst ip/id=0.0.0.0, mask=0.0.0.0, port=0, tag=any, dscp=0x0
        input_ifc=outside, output_ifc=any

Phase: 3
Type: CONN-SETTINGS
Subtype:
Result: ALLOW
Config:                       <----- マッチしたサービスポリシーclass-map OUT-CONN-CMAP
match access-list OUT-CONN-ACL
policy-map OUT-CONN-PMAP
class OUT-CONN-CMAP
  set connection conn-max 1000 embryonic-conn-max 0 random-sequence-number enable
  set connection timeout idle 0:10:00 embryonic 0:00:30 half-closed 0:00:30        half-closed 0:00:30 idle 0:10:00     <----- 適用のタイムアウト値        DCD: disabled, retry-interval 0:00:15, max-retries 5
        DCD: client-probe 0, server-probe 0, conn-expiration 0
service-policy OUT-CONN-PMAP interface outside
Additional Information:
 Forward Flow based lookup yields rule:in  id=0x7fffe2a0db20, priority=8, domain=conn-set, deny=false
        hits=7783, user_data=0x7fffe262e630, cs_id=0x0, use_real_addr, flags=0x0, protocol=6
        src ip/id=0.0.0.0, mask=0.0.0.0, port=0, tag=any
        dst ip/id=192.168.200.1, mask=255.255.255.255, port=80, tag=any, dscp=0x0
        input_ifc=outside, output_ifc=any

ASA/pri/act# show access-list OUT-CONN-ACL
access-list OUT-CONN-ACL; 1 elements; name hash: 0xb9547993
access-list OUT-CONN-ACL line 1 extended permit tcp any host 192.168.200.1 eq www (hitcnt=7784) 0xeadecbc1    <----- マッチしたアクセスコントロールエントリ

    

   

TCP SYN Flood 攻撃の緩和策

本項では、ASAを利用した DoS/DDoS攻撃の緩和策を紹介します。なお、設定や確認方法は ご利用バージョンの設定ガイドや、ASA/PIX 7.x 以降: ネットワーク攻撃の緩和策 も合わせて参照ください。

緩和方法

SYN Cookie機能 (別名 TCP Intercept) を利用することで TCP SYN Flood攻撃からの一定の保護が可能です。SYN Cookieは 2010年以前から実装されている利用実績も多い機能です。予め定義した embryonic connection count を越えるSYN Floodが発生した場合、ASAのSYN Cookie機能が動作し、その後の 問題のSYNパケットに対し ASAがProxyのように動作し、ASAが代理応答を行います。 SYN Cookieが動作することにより、Attacker (攻撃者) から Victim (被害者) へのSYN Flood攻撃を途中で遮断と 攻撃の緩和が可能です。また、SYN CookieはASAで高速に処理されるため、SYN Flood攻撃発生時のASAの処理リソース(コネクションテーブルやCPUやメモリ)枯渇のある程度の緩和にも役立ちます。

100830-asa-pix-netattacks2.gif

通常、Attackerは ASAからのSYN/ACKに応答せず、正常なClientは ASAからのSYN/ACKに ACKを応答します。SYN Cookieが動作すると、前者の正しいACKを返さないClient (すなわちAttacker)のSYNパケットはASAを通過できなくなります。 後者の正しいClientからのACK応答があった場合、ASAはコネクションの生成と サーバー向けのSYNパケット生成を行い、その後の正しいClientとサーバー間の通信を許可します。

 

設定例

以下は、Inside InterfaceからきたWEB/FTPサーバ(10.xx.xx.1)宛のHTTP/HTTPS/FTP通信の、不完全な同時初期TCP接続数 (embryonic connection count) の最大許可数を 50 に、コネクションの最大許可数を500 にする設定例です。

access-list ACL-Protect-WEB01 extended permit tcp any host 10.xx.xx.1 eq http
access-list ACL-Protect-WEB01 extended permit tcp any host 10.xx.xx.1 eq https
access-list ACL-Protect-WEB01 extended permit tcp any host 10.xx.xx.1 eq ftp
!
class-map CMAP-Protect-WEB01
 match access-list ACL-Protect-WEB01
!
policy-map PMAP-Protect-WEB01
 class CMAP-Protect-WEB01
  set connection embryonic-conn-max 50
  set connection conn-max 500
!
service-policy PMAP-Protect-WEB01 interface inside

 

(オプション) 攻撃発生時の分析するための統計機能を有効化したい場合は、以下機能を有効化します。なお、当threat-detection機能を利用すると、SYN Flood発生時の情報収集で更に1-2割ほどCPU処理負荷が上がる恐れがあるため、CPU処理負荷が低い時のみ有効化をお勧めします。

threat-detection statistics tcp-intercept

 

動作確認

設定後、パケットトレーサ機能を利用して、仮に指定のWEBサーバ宛のWEB通信が発生した場合に、設定したMPFに正しくマッチするか確認を行います。

ASA(config)# packet-tracer in inside tcp 1.0.0.101 1024 [サーバIP] 443

--- 略 ---

Phase: 3
Type: CONN-SETTINGS
Subtype:
Result: ALLOW
Config:
class-map CMAP-Protect-WEB01
match access-list ACL-Protect-WEB01
policy-map PMAP-Protect-WEB01
class CMAP-Protect-WEB01
set connection conn-max 500 embryonic-conn-max 50 random-sequence-number enable <--- THIS
service-policy PMAP-Protect-WEB01 interface inside
Additional Information:

 

以下は実際に WEB/FTPサーバ宛のSYN Flood攻撃を実施時のログ出力例です。閾値(50)を超過する不完全なTCPコネクション(SYN Flood)が発生したこと、及び その送信元と宛先のIPアドレス/Portを確認できます。

Jul 21 2020 11:22:49: %ASA-6-201010: Embryonic connection limit exceeded 50/50 for input packet from 1.150.0.39/11368 to 10.xx.xx.1/21 on interface inside
Jul 21 2020 11:22:49: %ASA-6-201010: Embryonic connection limit exceeded 50/50 for input packet from 1.150.0.39/11369 to 10.xx.xx.1/21 on interface inside
Jul 21 2020 11:22:49: %ASA-6-201010: Embryonic connection limit exceeded 50/50 for input packet from 1.150.0.39/11370 to 10.xx.xx.1/21 on interface inside

 

SYN Cookie (TCP Intercept) が動作時は、show perfmon コマンドで、TCP Intercept Attempts の上昇を確認できます。以下例の場合、秒間 863 程度のSyn Cookie処理を実施してることがわかります。

ASA(config)# show perfmon

PERFMON STATS:                     Current      Average
Xlates                                1/s          7/s
Connections                         143/s         56/s
TCP Conns                           138/s         36/s
UDP Conns                             4/s         17/s
URL Access                            0/s          0/s
URL Server Req                        0/s          0/s
TCP Fixup                             0/s          0/s
TCP Intercept Established Conns       0/s          0/s
TCP Intercept Attempts              863/s          0/s  <---
TCP Embryonic Conns Timeout           1/s         23/s
FTP Fixup                           408/s          0/s
AAA Authen                            0/s          0/s
AAA Author                            0/s          0/s
AAA Account                           0/s          0/s
HTTP Fixup                            0/s          0/s

VALID CONNS RATE in TCP INTERCEPT:    Current      Average
                                       N/A          4.71%

 

"threat-detection statistics tcp-intercept"設定が有効の場合、show threat-detection statistics top tcp-intercept コマンドで 被害者のIPアドレスやポートと、攻撃者のIPアドレスを確認できます。以下例の場合、WEB/FTPサーバ(10.xx.xx.1:21)のTCP21宛のSYN Flood攻撃が発生中(=Current Rateが2512)であり、AttackerのIPアドレスは 1.150.0.39である事を確認できます。

ASA(config)# show threat-detection statistics top tcp-intercept
Top 10 protected servers under attack (sorted by average rate)
Monitoring window size: 30 mins    Sampling interval: 30 secs
<Rank> <Server IP:Port> <Interface> <Ave Rate> <Cur Rate> <Total> <Source IP (Last Attack Time)>
--------------------------------------------------------------------------------
1    10.xx.xx.1:21 inside 58 2512 105427 1.150.0.39 (41 secs ago)
2    10.xx.xx.1:80 inside 2 0 4978 1.150.0.39 (13 mins ago)
--------------------------------------------------------

 

なお、AttackerのIPアドレスはランダム抽出された送信元IPアドレスが表示されます。単一の送信元からのDoS攻撃の場合 Attackerの送信元IPと一致しますが、複数の送信元からのDDoS攻撃の場合は その中の1つのAttackerのIPアドレスしか表示されないことに注意してください。

 

  

MPFでコネクション管理時の注意事項

サービスモジュール (例:FirePOWER(SFR)、CXなど) での検査を行っている通信は、コネクションタイムアウト値の変更は避けてください。 サービスモジュールは ASAのデフォルトのコネクションタイムアウト値に最適化されているためです。

ASAバージョン 9.1(2)より、ハーフクローズ タイムアウトが、従来の最短5分から 最短30秒に設定変更が可能に拡張されました。 これは、ハーフクローズのコネクションフラッド攻撃への対応のための実装変更です。

コネクション流量制限や SYN Cookie機能は、マルチコアによる分散処理が可能なモデル(例: ASA5585)の場合、実際のコネクション流量制限の発生が、設定数より若干多い事があります。  例えば、ASA5585-20 でコネクション流量制限を実施した場合、CPU 8コアで分散処理を行います為、最大 n-1個 (nはコア数) の 7個までの 最大コネクション制限数の超過が発生する事があります。 これは、各コアがコネクションを分散処理している事、及び 各コアのコネクション処理状況の確認と制限発生タイミングにより発生する実装です。 モデルのコア数は show cpu core コマンドで確認できます。

DoS攻撃の対策にASAを利用する場合、SYN FloodやConnection Flood攻撃が継続していると、ASAの処理負荷上昇や、経路の帯域不足の原因となるため、SYN Flood攻撃元の調査や遮断、経路でQoSの実施などの対策をお勧めします。ASAの処理パフォーマンスが高いモデルほど ASAのDoS攻撃の防御性能も上昇し ある程度の攻撃緩和が可能ですが、ASAはDoS攻撃対策の専用機ではありません。そのため、特に大規模なシステムの場合は、ASAの処理能力低下を抑えるため、DoSが発生時の周囲機器も利用しての検知や遮断や、もしくは、専用のDoS/DDoS攻撃対策装置の別途導入をお勧めします。     
     

 

TCPステートバイパスの設定例

TCPステートバイパスを有効化すると、ASAでデフォルト有効な TCPのステート監視や セキュリティチェックをバイパスするようになります。 これは、非対称ルーティング構成や RFCに準拠しない特殊なTCP通信のASA通過のサポートに有効です。

設定や確認方法について詳しくは、ASA: TCPステートバイパスを有効時の注意点と、設定と確認 を参照してください。

      
     

サービスポリシー 変更時の通信影響について

サービスポリシーの変更後、新規コネクションから その新ポリシーは適用され始めます。 既存コネクションは、そのコネクションが生成時に適用されたポリシーを利用し続けます。

既存コネクションにも新規ポリシーを適用したい場合は、通信影響は発生しますが、既存コネクションを clear conn コマンドで指定 or 全削除し、新規コネクションでの再接続を促す方法が有効です。

もしくは、対象の既存コネクションが無い時間帯を見極めての ポリシー設定変更が有効です。

     
   

特定通信だけ アクションを適用しない方法

何らかの理由で特定通信だけ アクションを適用したくない場合、ACL設定で その対象通信をDenyしたクラスマップを利用てください。

例えば以下は、insideインターフェイスを経由する、1.0.0.1宛のFTP通信は inspect ftpは適用せず、それ以外のFTP通信はinspect ftpを適用する設定例です。

 

access-list CLASS-02-ACL extended deny tcp any host 1.0.0.1 eq ftp
access-list CLASS-02-ACL extended permit tcp any any eq ftp
!
class-map CLASS-02
 match access-list CLASS-02-ACL
!
policy-map INSIDE-PMAP
 class CLASS-02
  inspect ftp
!
service-policy INSIDE-PMAP interface inside

     
      

参考情報

ASA 9.3: モジュラ ポリシー フレームワークを使用したサービス ポリシーの設定
http://www.cisco.com/cisco/web/support/JP/docs/SEC/Firewall/ASA5500-XNext-GenerationF/CG/004/mpf-service-policy.html?bid=0900e4b1840506ef

ASA 8.3 以降: MPF を使用した SSH/Telnet/HTTP 接続のタイムアウトの設定例
http://www.cisco.com/cisco/web/support/JP/110/1107/1107707_asa83x-mpf-config-00.html

ASA/PIX 7.x 以降: ネットワーク攻撃の緩和策
https://www.cisco.com/c/ja_jp/support/docs/security/asa-5500-x-series-next-generation-firewalls/100830-asa-pix-netattacks.html

ファイアウォール トラブルシューティング
https://community.cisco.com/t5/-/-/ta-p/3161736

Firepower System and FTDトラブルシューティング
https://community.cisco.com/t5/-/-/ta-p/3161733

 

Getting Started

検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう

シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします