Khi một IP bị DDoS làm nghẽn link upstream, cần chặn traffic càng xa càng tốt: trên edge router của mình, hoặc nhờ upstream chặn hộ. BGP có hai cơ chế:
- RTBH (Remotely Triggered Black Hole): quảng bá
/32(/128) của nạn nhân kèm community blackhole, router nhận đặt next-hop về discard. Đơn giản, mọi thiết bị đều hỗ trợ, nhưng chặn luôn cả traffic hợp lệ: kẻ tấn công "thắng" vì IP đã ngừng phục vụ. - BGP FlowSpec (RFC 8955, IPv6 ở RFC 8956): quảng bá rule lọc (đích, nguồn, protocol, port, packet length...) kèm hành động (drop, rate-limit, redirect, mark). Router cài rule vào phần cứng như ACL. Chỉ chặn đúng loại traffic tấn công.
Luồng hoạt động
flowchart LR DET["Detector (FastNetMon, sFlow/NetFlow)"] -->|"/32 + 64500:666 hoặc FlowSpec rule"| TR["Trigger router / RR"] TR -->|iBGP| PE1["Edge PE1"] TR -->|iBGP| PE2["Edge PE2"] PE1 -->|"203.0.113.10/32 + 65535:666"| UP["Upstream AS64510"] PE1 --> DROP["next-hop discard / ACL phần cứng"] PE2 --> DROP
So sánh
| Tiêu chí | RTBH đích | RTBH nguồn (S/RTBH) | FlowSpec |
|---|---|---|---|
| Chặn theo | IP đích | IP nguồn (kết hợp uRPF loose) | Tổ hợp 12 loại match (RFC 8955) |
| Traffic hợp lệ tới nạn nhân | Bị chặn hết | Vẫn qua | Vẫn qua nếu không khớp rule |
| Hiệu quả với tấn công nhiều nguồn | Tốt | Kém (quá nhiều nguồn) | Tốt nếu có đặc trưng (vd UDP src port 123, 53, 11211) |
| Nhờ upstream chặn hộ | Có, community của upstream hoặc 65535:666 |
Hiếm | Ít upstream nhận FlowSpec từ khách |
| Tài nguyên router | Một route | Một route + uRPF trên interface | TCAM/ACL, giới hạn số rule theo platform |
| Rủi ro | Thấp | Chặn nhầm nếu uRPF cấu hình sai | Rule sai có thể chặn cả mạng, cần validate và giới hạn |
Thành phần FlowSpec
| Match (NLRI type) | Ví dụ |
|---|---|
| 1 Destination prefix | 203.0.113.10/32 |
| 2 Source prefix | 198.51.100.0/24 |
| 3 IP protocol | 17 (UDP) |
| 4/5/6 Port / dest port / source port | src port 123 |
| 7/8 ICMP type / code | type 8 |
| 9 TCP flags | SYN |
| 10 Packet length | >= 468 |
| 11 DSCP | 46 |
| 12 Fragment | is-fragment |
Hành động mang trong extended community: traffic-rate (rate 0 = drop), traffic-action (sample/terminal), redirect (sang VRF theo RT), traffic-marking (đặt DSCP).
Mặc định router chỉ nhận FlowSpec rule nếu đích của rule khớp best-path unicast từ cùng peer (validation theo RFC 8955). Rule do mình tự sinh hoặc từ controller nội bộ thì thường cần tắt validation có kiểm soát. Luôn giới hạn số rule nhận được và chỉ nhận từ nguồn tin cậy.
RTBH cho khách: cấu hình mẫu
Khách AS 65001 gửi /32 thuộc 203.0.113.0/24 kèm 65535:666 (hoặc 64500:666 theo bảng community của ISP). Edge chấp nhận /32 chỉ khi có community, đặt next-hop discard và gắn no-export để không lọt ra ngoài.
! IOS XR
prefix-set CUST-65001-HOST
203.0.113.0/24 ge 32 le 32
end-set
!
community-set BLACKHOLE
65535:666,
64500:666
end-set
!
route-policy CUST-65001-IN
if destination in CUST-65001-HOST and community matches-any BLACKHOLE then
set next-hop discard
set community (65535:65281) additive
done
endif
# ... phần lọc prefix thường như trang BGP route policy
end-policy# Junos
set policy-options community BLACKHOLE members [ 65535:666 ]
set policy-options community BLACKHOLE-ISP members [ 64500:666 ]
set policy-options community NO-EXPORT members no-export
set policy-options policy-statement CUST-65001-IN term RTBH from community [ BLACKHOLE BLACKHOLE-ISP ]
set policy-options policy-statement CUST-65001-IN term RTBH from route-filter 203.0.113.0/24 prefix-length-range /32-/32
set policy-options policy-statement CUST-65001-IN term RTBH then community add NO-EXPORT
set policy-options policy-statement CUST-65001-IN term RTBH then next-hop discard
set policy-options policy-statement CUST-65001-IN term RTBH then acceptTerm RTBH phải nằm trước term lọc prefix thông thường (vốn chỉ nhận /24). Cách viết phần còn lại xem BGP route policy.
FlowSpec: cấu hình mẫu
Junos: rule tĩnh chặn NTP amplification tới một IP, quảng bá qua iBGP family inet flow:
set routing-options flow route NTP-AMP match destination 203.0.113.10/32
set routing-options flow route NTP-AMP match protocol udp
set routing-options flow route NTP-AMP match source-port 123
set routing-options flow route NTP-AMP then discard
set protocols bgp group IBGP family inet flowIOS XR: nhận FlowSpec qua BGP và cài rule xuống mọi interface:
router bgp 64500
address-family ipv4 flowspec
!
neighbor 192.0.2.10
address-family ipv4 flowspec
!
!
!
flowspec
local-install interface-all
!| Mục đích | IOS XR | Junos |
|---|---|---|
| Rule FlowSpec đã nhận | show bgp ipv4 flowspec |
show route table inetflow.0 extensive |
| Rule đã cài và counter | show flowspec ipv4 detail |
show firewall filter __flowspec_default_inet__ |
| Route RTBH | show bgp ipv4 unicast 203.0.113.10/32 |
show route 203.0.113.10/32 detail |
Khi nào dùng
- RTBH đích: link upstream đã nghẽn, cần hạ ngay; chấp nhận hy sinh một IP để cứu cả PoP. Phối hợp với community blackhole của upstream để chặn từ phía họ.
- FlowSpec: tấn công có đặc trưng rõ (amplification theo source port, SYN flood tới một port), link còn chịu được, muốn giữ dịch vụ cho người dùng thật.
- Scrubbing center: tấn công lớn hoặc tầng ứng dụng, dùng FlowSpec
redirecthoặc BGP diversion sang hệ thống lọc. - Danh sách community well-known: BGP communities.