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

 

はじめに

本ドキュメントでは、Secure Firewall Threat Defense (FTD) を利用した DoS/DDoS攻撃の緩和方法を紹介します。なお、より詳細な設定や確認方法は、ご利用バージョンの設定ガイド「chapter: Service Policies」を参照してください。なお、FTDの DoS/DDoS 保護機能は簡易機能のため、専用のDoS/DDoS保護装置に比べると、設定の柔軟性は大きく劣りますが、ベーシックな DoS/DDoS 攻撃からの保護には十分有効です。

本ドキュメントは、Firewall Management Center (FMC) 管理の、Firepower 1010 モデルの FTD バージョン 7.4.1 を利用し確認、作成しております。

 

動作原理と試験構成

本ドキュメントでは、一般的な DoS/DDoS攻撃の1つである「TCP SYN Flood 攻撃」の保護設定について紹介します。なお、項番 2.7. の「Threat Defense Service Policy」の設定を変更するとで、TCP/UDP Connection Flood 攻撃からも保護が可能です。

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

つまり、FTDで DoS/DDoS 攻撃からの保護機能の有効化は、Victim(被害者)、及び FTD自身の処理リソースの保護の上で有効です。

本ドキュメントでは、以下の構成の「Attacker(送信元不明)」から、192.168.0.0/24のセグメント内にある「Victim(社内サーバー)」への、SYN Flood 攻撃からの保護設定と、動作確認例を紹介します。

TaisukeNakamura_0-1724777812947.png

 

設定方法

1. Extended Access List の設定

まず、保護対象の公開サーバーのIPアドレスやセグメントを Extended Access List で定義します。

 1.1. Object > Object Management にアクセスし、Access List から Extendedをクリック

TaisukeNakamura_6-1724777890657.png

 

1.2. Add Extended Access List」ボタンをクリックし、「Edit Extended Access List Object」がポップアップするため、任意ACL名をName欄に入力。今回は「Trusted-Server-IPs」と入力

 
TaisukeNakamura_7-1724777900943.png

   

1.3. 「Add」ボタンをクリックすると「New Extended Access List Object」がポップアップするため、今回はDestination Networkに保護対象セグメント「192.168.0.0/24」を入力

 
TaisukeNakamura_8-1724777908416.png

   

1.4. Portタブをクリックし、Selected Source Portに「TCP (6)」を登録した後、「Add」ボタンを押して保存

 
TaisukeNakamura_9-1724777916464.png

   

1.5. Edit Extended Access List Object」画面に戻るため、TCPプロトコルの任意宛先宛のACL設定がされていることを確認し、「Save」ボタンをクリック

 
TaisukeNakamura_10-1724777923513.png

 

 

2. DoS/DDoS 攻撃からの保護設定

本例では、TCP SYN Flood 攻撃からの防御設定(Embryonic Connection Limit)の有効化を行います。

2.1. Policies > Access Control をクリックし、防御設定を有効にしたいFTDに適用している Access Control Policyを Edit

 

2.2. 「More」のDrop Down メニューから Advanced Settings を選択

 
TaisukeNakamura_23-1724778154205.png

  

2.3. 「Threat Defense Service Policy」のEditアイコンをクリック

 
TaisukeNakamura_24-1724778158533.png

 

2.4. 「Threat Defense Service Policy」画面がポップアップするため、「Add Rule」をクリック

 

2.5. 「Interface Object」で「Global」にチェックが入っている状態で「>>Next」をクリック

 
TaisukeNakamura_25-1724778174613.png

 

2.6. 手順1で作成した「Extended Access List」を選択し、「>>Next」をクリック

 
TaisukeNakamura_26-1724778181666.png

   

2.7. 以下のような画面が表示されるため、今回は以下設定を実施した後、「Finish」をクリック。各数値はカスタマイズ可能

Connection Maximu Embryonic 1,000 ・・・ 不完全なTCP通信は最大1000まで許可(それ以上はブロック)

Connection Per Client Maximum Embryonic 100 ・・・端末1台当たりの不完全なTCP通信は最大 100まで許可

      補足①:同時にTCPやUDPの最大コネクション数を制限したい場合は「Maximum TCP & UDP」に最大コネクション数を入力

      補足②:「Connection Timeout」はデフォルト値のままが推奨

TaisukeNakamura_27-1724778199384.png

  

2.8. 「Threat Defense Service Policy」画面に戻るため、「OK」をクリック

 
TaisukeNakamura_28-1724778214739.png

  

2.9. 「Save」ボタンをクリックし変更設定を保存し、「Deploy」ボタンをクリックしFTDデバイスに設定適用

 
TaisukeNakamura_29-1724778227728.png

 

  

3. (任意) シスログIDの出力レベル変更

Syn Cookie (TCP Intercept)機能が動作時のシスログID 201010で、デフォルト Informational レベルのため、攻撃発生と防御に気付きやすくするためデフォルトのログ出力レベルを変更します。本例では「Error」レベルに変更します

 

3.1. Devices > Platform Settings から、任意のSYN Flood 防御を有効化したいFTDデバイスを選択

    

3.2. Syslog > Syslog Settings タブをクリックし、「+ Add」ボタンをクリック

TaisukeNakamura_30-1724778238714.png

 

3.3.  Connection Maximu Embryonic の閾値超えを示す Syslog Id201010」のLogging Levelを、「(default)」から、今回は「3 - Error」に変更し「OK」ボタンをクリック

 
TaisukeNakamura_31-1724778271961.png

  

3.4. 同様の手順で、 Connection Per Client Maximum Embryonic の閾値超えを示すSyslog Id201012」のLogging Levelも、「(default)」から、今回は「3 - Error」に変更し「OK」ボタンをクリック

 
TaisukeNakamura_32-1724778279798.png

  

3.5. 「Logging Destinations」タブから、「Internal Buffer (=show log)」で「Errors」以下のログ出力が有効であることを確認

 
TaisukeNakamura_33-1724778287341.png

  

3.6. 設定を「Save」した後、対象デバイスに設定を「Deploy」

 

 

 

動作確認

FTDのCLIから「system support diag」>「enable」で、FTD内部の ASA(LINA)のコンソールにアクセスし、CLIで状況確認が可能です。以下はCLIを用いた動作確認例を紹介します。

 

ケース1) SYN Flood 攻撃を受け、FTDで未対策時

FTD 内の L3/L4処理エンジン(ASA)が、SYN Flood 攻撃により、毎秒 1,700 程度のTCP通信処理を行い、CPU負荷が 100%近くにあがっている状態。 DoS/DDoS攻撃が発生すると、その宛先サーバー(Victim)のみでなく、中継Firewallにも高いコネクション処理負荷とCPU負荷が発生することがわかる。

なお、以下は実際の攻撃は 毎秒 8,000の TCP SYN Flood 攻撃をしており、ただ、コネクション 1,700 程度で FTD のCPU処理負荷が不足し、処理欠けも発生している状態で、他のFTDを経由する通信にも大きな遅延やダウンが発生している。

firepower# show cpu

CPU utilization for 5 seconds = 86%; 1 minute: 34%; 5 minutes: 24%
firepower#
firepower# show perfmon

PERFMON STATS:                     Current      Average
Xlates                             1729/s          4/s
Connections                        1730/s         15/s   <--- THIS
TCP Conns                          1728/s         14/s   <--- THIS
UDP Conns                             1/s          0/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                0/s         21/s
TCP Embryonic Conns Timeout        1062/s          7/s
FTP Fixup                             0/s          0/s

   

ケース2) SYN Flood 攻撃を受け、FTDで SYN Cookie 有効時

FTDは、不完全なTCPコネクションの閾値を超えた場合、自動で SYN Cookie(TCP Intercept)機能が発動。当処理は高速に行われるため、当機能動作時は show cpu コマンドから CPU負荷が大きく下がることを確認できる。

また、show log コマンドで、170.72.0.94から 192.168.0.17のコネクションが Per-client embryonic connection limit を超過してることを確認できる。

firepower# show cpu
CPU utilization for 5 seconds = 63%; 1 minute: 25%; 5 minutes: 23%

firepower# show log
Syslog logging: enabled
    Facility: 20
    Timestamp logging: disabled
    Hide Username logging: enabled
    Standby logging: disabled
    Debug-trace logging: enabled (persistent)
    Console logging: disabled
    Monitor logging: disabled
    Buffer logging: level errors, 4825 messages logged
    Trap logging: disabled
    Permit-hostdown logging: enabled
    History logging: disabled
    Device ID: disabled
    Mail logging: disabled
    ASDM logging: disabled
    FMC logging: list MANAGER_VPN_EVENT_LIST, 0 messages logged
%FTD-3-201012: Per-client embryonic connection limit exceeded 100/100 for input packet from 170.72.0.94/13406 to 192.168.0.17/443 on interface dmz
%FTD-3-201012: Per-client embryonic connection limit exceeded 100/100 for input packet from 170.72.0.94/28687 to 192.168.0.17/443 on interface dmz
%FTD-3-201012: Per-client embryonic connection limit exceeded 100/100 for input packet from 170.72.0.94/43750 to 192.168.0.17/443 on interface dmz
%FTD-3-201012: Per-client embryonic connection limit exceeded 100/100 for input packet from 170.72.0.94/58225 to 192.168.0.17/443 on interface dmz
%FTD-3-201012: Per-client embryonic connection limit exceeded 100/100 for input packet from 170.72.0.94/8891 to 192.168.0.17/443 on interface dmz
%FTD-3-201012: Per-client embryonic connection limit exceeded 100/100 for input packet from 170.72.0.94/23415 to 192.168.0.17/443 on interface dmz
%FTD-3-201012: Per-client embryonic connection limit exceeded 100/100 for input packet from 170.72.0.94/39682 to 192.168.0.17/443 on interface dmz

  

show perfmon コマンドから 毎秒 8,000 の SYN FLOOD 攻撃が発生しており、SYN Cookie (TCP Intercept) でFTDが高速にブロックしていることがわかる。 つまり、SYN Cookie (TCP Intercept) を有効化すると、5倍以上の攻撃にも耐え、FTDが攻撃を遮断し、自身や対向サーバーと、その経路機器のリソースを保護できることが確認できる。

firepower# show perfmon

PERFMON STATS:                     Current      Average
Xlates                                1/s          6/s
Connections                           5/s         43/s
TCP Conns                             3/s         42/s
UDP Conns                             1/s          0/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             8098/s         57/s   <--- THIS
TCP Embryonic Conns Timeout           3/s          9/s
FTP Fixup                             0/s          0/s

 

 

よくある質問

Q: FTDで保護できる DoS/DDoS 攻撃の種類を教えてください

以下は、ネットワークレイヤーにおける、一般的な DoS/DDoS 攻撃の主な手法と、FTDによる対応可否です。インターネットからの攻撃の大部分は、SYN Flood と UDP Flood (DNS含む) であり、これら攻撃にFTDは対応します。 なお、FTDのDoS/DDoS攻撃からの保護は、閾値ベースの簡易保護機能のため、攻撃発生時のシステム負荷を大きく下げることに有効ではありますが、特にコネクション全体の流量制限は、正常な他通信もつながり辛くなったり遮断してしまう恐れがあります。

より複雑な攻撃への柔軟な対処や、攻撃者の通信を分離しての遮断などを希望時は、専用のDoS/DDoS攻撃対策装置の導入を検討してください。

種類

説明

攻撃割合
(Cloud
flare調査)

FTD
対応
可否

設定方法と補足

DNS Flood
攻撃

DNSサーバーに対し大量の不正なリクエストを送信しサーバーに負荷をかける

30%

クライアント毎の特定DNSサーバ宛のUDP コネクション数を制限。なお、DNSは最短でRequestとReplyの2パケットで処理が終わるため、FTDによるコネクション数制限での保護効果は低い。なお、DNSサーバー非公開時は影響は無視できる

SYN Flood
攻撃

Webやファイル・リモートアクセスVPNなど公開サーバーに対し大量のTCP SYN を送付し、サーバーや中継機器の処理リソース枯渇とダウンを引き起こす

22%

本ドキュメントで紹介する SYN Cookie による保護有効化。 FTDは高速処理モードに移行し、正しくACK応答するクライアントのみ通信を通すため、遮断時も正常な通信は継続可能

UDP
Flood
攻撃

公開サーバーに対し、主にランダムなポート番号と偽の送信元addressを持つUDPパケットを大量に送信し、サーバーや中継機器の処理リソース枯渇とダウンを引き起こす

21%

本ドキュメントで紹介する TCP/UDP Connection の流量制限で保護有効化。DoS攻撃の場合は特定クライアントの攻撃を遮断可能。DDoS攻撃時は、閾値を超えると全UDP通信が遮断されるため、攻撃発生中は正常な通信も遮断される恐れ。UDPベースのサービスを外部公開しておらず、FWで遮断してる場合は影響を無視できる

TCP
Reset
Flood
攻撃

正常な通信のRSTパケットと偽り、既存通信の切断指令(RST)により、正規のユーザーのトラフィックを不正終了させる

7%

FTDはデフォルトで保護が有効。開いてないコネクションのRSTは遮断。また、連続性のないTCP通信のパケットも通過を拒否する

SSDP
Flood
攻撃

Simple Service Discovery Protocol (SSDP)の略で、プリンタやモデム、監視カメラなどIoTデバイス宛の DoS / DDoS攻撃

6%

標準でUDP 1900番ポートが使われるため、UDP Flood からの保護が有効。DoS攻撃の場合は特定クライアントの攻撃を遮断可能。DDoS攻撃時は、閾値を超えると全UDP通信が遮断されるため、攻撃発生中は正常な通信も遮断される恐れ。SSDPベースのサービスを外部公開しておらず、FWで遮断している場合は影響を無視できる

出展: Cloudflare 「DDoS threat report for 2023 Q1」,閲覧日: 2024/08/28

 

Q: TCP や UDP コネクションの Flood 攻撃からの保護方法を教えてください

本ドキュメントの項番 2.7. を参考に、「Maximum TCP & UDP」の設定を変更してください。

TaisukeNakamura_27-1724778199384.png

 
例えば、「特定宛先へのUDPのみの最大コネクション数を 最大 1,000」に制限したい場合は、「1. Extended Access List の設定」で指定のUDP通信のみマッチする Access List を定義してから、その Access List を使ったサービスポリシーを作成、 上記絵の「Connections:」の「Maximum TCP & UDP」を「1,000」と設定します。

Client 毎の最大UDP コネクション数も制限したい場合は、「Connection Per Client :」の「Maximum TCP & UDP」も設定します。

Connection Limit を超過時にログは、Syslog ID 201011 と 201013 で出力され、どちらも Error レベルになります。以下はシスログの出力フォーマットです。

 %Threat Defense-3-201011: Connection limit exceeded cnt /limit for dir packet from sip /sport to dip /dport on interface if_name .
%Threat Defense-3-201013: Per-client connection limit exceeded curr num /limit for [input|output] packet from ip /port to ip /port on interface interface_name

  

Q: CLI での設定状況の確認方法を教えてください

FTD CLI から「System support diag」で、FTD内部の ASAエンジン(LINA)にアクセスし、「show access-list | in extended」と「show run policy-map」コマンドで、「1. Extended Access List の設定」と「2. DoS/DDoS 攻撃からの保護設定」の設定状況を確認できます。

Last login: Tue Aug 27 16:03:14 UTC 2024 from 170.72.0.11 on pts/0
Successful login attempts for user 'admin' : 4
Last login: Wed Aug 28 00:10:50 2024 from 170.72.0.11

Copyright 2004-2023, Cisco and/or its affiliates. All rights reserved.
Cisco is a registered trademark of Cisco Systems, Inc.
All other trademarks are property of their respective owners.

Cisco Firepower Extensible Operating System (FX-OS) v2.14.1 (build 131)
Cisco Firepower 1010 Threat Defense v7.4.1 (build 172)

> system support diagnostic-cli
Attaching to Diagnostic CLI ... Press 'Ctrl+a then d' to detach.
Type help or '?' for a list of available commands.

firepower#
firepower# show access-list | in extended
access-list Trusted-Server-IPs line 1 extended permit object-group ProxySG_ExtendedACL_317827580802 any 192.168.0.0 255.255.255.0 (hitcnt=10303775) 0x5bcdd123
  access-list Trusted-Server-IPs line 1 extended permit tcp any 192.168.0.0 255.255.255.0 (hitcnt=10303775) 0x7a1eefa3
firepower#
firepower# show run policy-map
!
policy-map type inspect dns preset_dns_map
 parameters
  message-length maximum client auto
  message-length maximum 512
  no tcp-inspection
policy-map global_policy
 class inspection_default
  inspect dns preset_dns_map
  inspect ftp
  inspect h323 h225
  inspect h323 ras
  inspect rsh
  inspect rtsp
  inspect sqlnet
  inspect skinny
  inspect sunrpc
  inspect sip
  inspect netbios
  inspect tftp
  inspect ip-options
  inspect icmp
  inspect icmp error
 class class_map_Trusted-Server-IPs     <--- THIS
  set connection embryonic-conn-max 1000 per-client-embryonic-max 100     <--- THIS
 class class_snmp
  inspect snmp
 class class-default
  set connection advanced-options UM_STATIC_TCP_MAP
policy-map type inspect ip-options UM_STATIC_IP_OPTIONS_MAP
 parameters
  eool action allow
  nop action allow
  router-alert action allow
!

   

Q: FTD でも CLI からの設定は可能ですか

いいえ、設定は FMC の GUI から設定が必要です。 設定後の設定状況やログ確認は、ASAと同様に CLI でも確認可能です。

  

Q: ASA での DoS / DDoS 攻撃の保護設定を教えてください 

ASA: MPFを用いたサービスポリシーの設定例と動作確認 の「TCP SYN Flood 攻撃の緩和策」や「コネクション タイムアウト値の変更と流量制限の設定例」を参照してください。

  

  

参考情報

Cisco FTD How TO
https://community.cisco.com/t5/-/-/ta-p/5024782

Getting Started

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

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