Tìm hiểu cách Cloudflare bảo vệ khách hàng khỏi các cuộc tấn công DDoS Layer 3/4 lớn nhất từ trước đến nay. Bài viết phân tích chi tiết về một chiến dịch tấn công nhằm vào nhiều ngành, giải thích cấu trúc và cơ chế của các cuộc tấn công DDoS, cũng như cách Cloudflare sử dụng mạng toàn cầu và công nghệ thông minh để tự động phát hiện và giảm thiểu các mối đe dọa mà không làm giảm hiệu suất. Khám phá các biện pháp phòng ngừa và chiến lược an ninh mạng hiệu quả để bảo vệ doanh nghiệp của bạn trong thời đại số! Các thuật ngữ sử dụng trong bài
Tags: #cloudflare, #ddosDDoS: Distributed Denial of Service hay Cuộc tấn công từ chối dịch vụ phân tán nhắm mục tiêu vào các website và máy chủ qua việc gây gián đoạn các dịch vụ trực tuyến hoặc mạng máy tính bằng cách gửi một lượng lớn lưu lượng truy cập giả mạo từ nhiều nguồn khác nhau.
DDoS L3/4: Tấn công DDoS (từ chối dịch vụ) cũng có nhiều loại khác nhau. Đây là cách định nghĩa, đây là một cuộc tấn công xảy ra ở tầng 3 (Network Layer) và tầng 4 (Transport Layer) trong mô hình OSI (Open Systems Interconnection).
OSI: Open Systems Interconnection hay Mô hình Kết nối các hệ thống mở (OSI) là một khung khái niệm chia các chức năng truyền thông mạng thành 7 lớp:
Từ đầu tháng Chín, các hệ thống bảo vệ DDoS của Cloudflare đã phải đối mặt với một chiến dịch tấn công DDoS L3/4 có quy mô cực lớn kéo dài suốt một tháng.
Trong suốt thời gian này, hệ thống phòng thủ của Cloudflare đã giảm thiểu hơn một trăm cuộc tấn công L3/4 với lưu lượng cực lớn. Nhiều cuộc tấn công trong đó đã đạt đến mức có hơn 2 tỷ gói dữ liệu mỗi giây (Bpps) với hơn 2 terabits mỗi giây (Tpbs) được gửi đến máy chủ. Và đáng sợ nhất đó là cuộc tấn công lớn nhất đã đạt đỉnh điểm là 3.8 Terabits mỗi giây. Với con số này, nó vượt qua hết tất cả những cuộc tấn công lớn mà trước giờ được công khai bởi bất kỳ tổ chức nào trước đây.
Hệ thống phòng thủ của Cloudflare đã phát hiện và ngăn chặn các cuộc tấn công này một cách chủ động và tự động mà không cần sự can thiệp của con người. Dưới đây là hai biểu đồ thể hiện hai cuộc tấn công riêng biệt nhắm vào cùng một khách hàng của Cloudflare. Và hệ thống của Cloudflare đã thực hiện việc ngăn chặn tự động một cách hiệu quả.
Một cuộc tấn công DDoS với lưu lượng 3.8 Terabits mỗi giây kéo dài 65 giây được ngăn chặn
Một cuộc tấn công DDoS với lưu lượng 2.14 tỷ gói mỗi giây kéo dài 60 giây được ngăn chặn.
Mức độ và tần suất của các cuộc tấn công nhắm vào Cloudflare lần này là chưa từng có tiền lệ. Với kích thước khổng lồ và kích thước bit hoặc gói tin mỗi giây cực lớn, những cuộc tấn công này "thừa sức" có thể làm sập các tài nguyên Internet không được bảo vệ, kể cả những tài nguyên đã có biện pháp bảo vệ nhưng không đủ khả năng xử lý lưu lượng "cực lớn" mà cuộc tấn công đem đến.
Đặc biệt đây cũng là một bài toán cực kỳ khó là đối các cloud provider nếu không đủ khả năng về tài nguyên mạng hoặc khả năng phủ sóng toàn cầu để xử lý khối lượng lớn này. Thì gần như khi gặp các cuộc tấn công như thế này, tỉ lệ sống sót gần như bằng không.
Tuy nhiên, thật may mắn khi Cloudflare có đủ khả năng cũng về mạng lưới, độ phủ và một hệ thống đủ thông minh cần thiết để "nuốt gọn" và "xử lý" những cuộc tấn công khổng lồ này.
Các kỹ sư của Cloudflare đã nhận ra những cuộc tấn công được nổ ra, dường như họ đã nhận ra một chiến dịch nào đó đang được nhắm đến họ, những cuộc tấn công nhắm đến nhiều khách hàng trong các ngành như dịch vụ tài chính, mạng viễn thông, cũng như nhiều ngành khác. Điều này cho thấy rằng các cuộc tấn công không chỉ tập trung vào một lĩnh vực cụ thể mà là một mối đe doạ rộng rãi.
Và họ nhận ra rằng chiến dịch tấn công lần này nhắm đến việc làm ngập băng thông của các hệ thống. Điều này có nghĩa là những kẻ tấn công đang cố gắng tạo tạo ra lưu lượng cực lớn đế khiến cho các hệ thống bị treo, dẫn đến các dịch vụ bị gián đoạn. Ngoài việc làm ngập băng thông, các cuộc tấn công cũng đang cố gắng vào việc làm cạn kiệt tài nguyên của các ứng dụng và thiết bị đang hoạt động trực tiếp (in-line) trong mạng lưới.
Các cuộc tấn công chủ yếu sử dụng giao thức UDP trên một port cố định và được xuất phát từ khắp nơi trên thế giới, trong đó có phần lớn đến từ Việt Nam, Nga, Brazil, Tây Ban Nha và Mỹ.
Các cuộc tấn công với tầng suất gói dữ liệu lớn có vẻ được gửi đến từ các thiết bị bị xâm nhập. Những thiết bị này bao gồm các thiết bị như MikroTik, đầu ghi hình DVR và các máy chủ web. Các thiết bị này được điều phối để hoạt động cùng nhau nhằm tạo ra một lực lượng tấn công đồng bộ. Mục tiêu của việc này là làm "ngập" hệ thống với lượng dữ liệu khổng lồ trong một thời điểm, gây gián đoạn dịch vụ.
Các cuộc tấn công có bitrate cao dường như xuất phát từ những bộ router gia đình của ASUS bị xâm nhập, người ta nhận định rằng những kẻ tấn công đã khai thác một lỗ hổng bảo mật CVE 9.8, một lỗ hổng được đánh giá với mức nghiêm trọng là "Nguy hiểm" mà Censys vừa phát hiện.
Russia | 12.1% |
Vietnam | 11.6% |
United States | 9.3% |
Spain | 6.5% |
Brazil | 4.7% |
France | 4.7% |
Romania | 4.4% |
Taiwan | 3.4% |
United Kingdom | 3.3% |
Italy | 2.8% |
Trước khi bàn về cách Cloudflare phát hiện và ngăn chặn các cuộc tấn công DDoS, việc hiểu rõ những điều cơ bản về DDoS là rất quan trọng.
Sơ đồ cơ bản của một cuộc tấn công từ chối dịch vụ DDoS
Mục tiêu của một cuộc tấn công DDoS là ngăn chặn người dùng hợp pháp truy cập vào dịch vụ. Điều này thường được thực hiện bằng cách làm cạn kiệt tài nguyên cần thiết để cung cấp dịch vụ.
Những kẻ tấn công DDoS sẽ nhằm vào việc tiêu tốn tài nguyên của các nạn nhân. Trong bối cảnh các cuộc tấn công DDoS L3/4 gần đây, tài nguyên chủ yếu bị ảnh hưởng là:
Như chúng ta biết, để xử lý một gói dữ liệu thì sẽ phải tiêu tốn tài nguyên CPU. Đối với lưu lượng truy cập thông thường (không phải tấn công), khi một gói dữ liệu hợp lệ được nhận, hệ thống sẽ thực hiện một số tác vụ, với mỗi tác vụ được thực hiện, tuỳ vào độ phức tạp sẽ yêu cầu mức xử lý CPU khác nhau. Tuy nhiên, trước khi một gói dữ liệu được gửi đến, thì sẽ cần thực hiện nhiều bước xử lý như sau:
Nếu những kẻ tấn công gửi các gói dữ liệu với tốc độ đủ cao, họ có thể làm ngợp tài nguyên CPU, dẫn đến việc cạn kiệt tài nguyên khi xử lý yêu cầu của người dùng bình thường.
Để bảo vệ chống lại các cuộc tấn công với tần suất gói cao, cần:
"Băng thông mạng" là tổng lượng dữ liệu có thể được gửi đến một máy chủ trong một khoảng thời gian nhất định.
Có thể hình dung băng thông giống như một ống để vận chuyển nước. Có thể hình dung như sau:
Nếu kẻ tấn công cố gắng đẩy những dữ liệu rác vào trong đường ống, và những dữ liệu này vượt khả năng mà ống có thể vận chuyển thì cả dữ liệu hợp không hợp lệ và dữ liệu hợp lệ sẽ bị tắc lại ở đầu đường ống. Và khi dữ liệu hợp lệ bị tắc lại thì có thể nói một cuộc tấn công DDoS được coi là thành công, vì những người dùng bình thường không thể truy cập vào dịch vụ được nữa.
Việc phòng thủ chống lại các cuộc tấn công làm ngập băng thông có nhiều khó khăn vì khi bạn nằm ở phía đầu hạ lưu (downstream) của một đường ống đã bị ngập (tắc), có rất ít biện pháp có thể thực hiện để khắc phục tình hình.Tất nhiên cũng có một số giải pháp như:
Kẻ tấn công phải xem xét những hạn chế tương tự khi tạo ra các cuộc tấn công. Cũng giống như việc nhận gói dữ liệu cần CPU cycles, việc tạo ra gói dữ liệu cũng yêu cầu tài nguyên xử lý. Nếu chi phí để gửi và nhận một gói dữ liệu là như nhau, thì kẻ tấn công sẽ cần một lượng CPU tương đương để tạo ra tấn công như những gì mà bên phòng thủ cần để ngăn chặn.
Trong hầu hết các trường hợp, có sự mất cân bằng về chi phí, vì kẻ tấn công có thể tạo ra các gói dữ liệu với ít CPU cycles hơn so với việc nhận các gói đó. Tuy nhiên, việc tạo ra các cuộc tấn công không phải là miễn phí và cũng cần một lượng lớn tài nguyên CPU.
Làm ngập băng thông mạng còn khó khăn hơn đối với kẻ tấn công. Họ cần phải có khả năng phát ra nhiều băng thông hơn mức mà dịch vụ mục tiêu đã phân bổ. Điều này có thể rất khó khăn, dẫn đến việc.
Kẻ tấn công cần phải có hoặc truy cập vào nhiều thiết bị để tạo ra cuộc tấn công. Các thiết bị này có thể là:
Tất cả những thiết bị này cùng nhau tạo thành một botnet, mà kẻ tấn công sử dụng để thực hiện các cuộc tấn công DDoS.
Được rồi rất vui khi các bạn đã đọc đến đây, khi chúng ta đã hiểu các nguyên tắc cơ bản về cách thức hoạt động của các cuộc tấn công DDoS thì chúng ta sẽ bắt đầu có thể giải thích cách Cloudflare có thể phòng thủ chống lại những cuộc tấn công này.
Nguyên liệu đầu tiên không hề bí mật là mạng lưới của Cloudflare được xây dựng trên công nghệ Anycast.
Anycast là một công nghệ cho phép một địa chỉ IP được sử dụng bởi nhiều máy chủ trên toàn thế giới. Cũng có thể hiểu là cùng một địa chỉ IP có thể được nhận diện và xử lý bởi nhiều máy chủ khác nhau.
Nói ngắn gọn về cách thức này, khi một gói dữ liệu được gửi đến địa chỉ IP đó, nó sẽ được xử lý bởi máy chủ gần nhất. Điều này có nghĩa là khi kẻ tấn công sử dụng botnet bao gồm nhiều mũi tấn công từ khắp nơi trên thế giới để phát động tấn công, lưu lượng tấn công sẽ được nhận một cách phân tán qua mạng lưới của Cloudflare. Có thể hiểu rằng, các mũi tấn công sẽ được phân tán, chuyển đến những máy chủ gần nơi mà nó bắt đầu.
Ý nghĩa của cách này là khi kẻ tấn công sử dụng các thiết bị bị nhiễm để gửi gói dữ liệu, các gói đó sẽ được gửi đến máy chủ Cloudflare gần vị trí của thiết bị đó. Điều này giúp Cloudflare nhận được các gói tấn công từ nhiều địa điểm khác nhau trên thế giới, đồng thời làm giảm tải cho một điểm cụ thể trong mạng.
Ví dụ: Cloudflare có các máy chủ ở Hà Nội, Đà Nẵng và HCM với cùng 1 IP thông qua anycast. Thì khi một thiết bị DVR bị nhiễm ở Bắc Ninh gửi tấn công, thì gói tin sẽ được gửi đến máy chủ ở Hà Nội, tương tự nếu một thiết bị Webcam bị nhiễm ở Cần Thơ, thì gói tin sẽ được gửi đến HCM thay vì Hà Nội hay Đà Nẵng.
(Anycast và Unicast networks)
Mạng lưới anycast của Cloudflare cũng cho phép phân bổ tài nguyên tính toán và băng thông gần nhất với các khu vực cần thiết nhất. Những khu vực đông dân cư sẽ tạo ra lượng lưu lượng hợp pháp lớn hơn, vì vậy các trung tâm dữ liệu đặt ở những khu vực này sẽ có nhiều băng thông và tài nguyên CPU hơn để đáp ứng nhu cầu.
Ngược lại, những khu vực thưa dân sẽ tự nhiên tạo ra ít lưu lượng hơn, các trung tâm dữ liệu ở những khu vực này sẽ được tối ưu hóa về kích thước và tài nguyên cho phù hợp.
Do lưu lượng tấn công chủ yếu đến từ các thiết bị bị xâm phạm, các thiết bị này thường sẽ phân bố theo cách giống với các luồng lưu lượng hợp pháp, gửi lưu lượng tấn công đến các trung tâm dữ liệu có khả năng xử lý. Tương tự, phía bên trong trung tâm dữ liệu, lưu lượng cũng được phân phối trên nhiều máy chủ khác nhau nhằm giúp tăng khả năng xử lý và giảm tải cho từng máy chủ.
Thêm vào đó, đối với các cuộc tấn công với băng thông cao, mạng lưới của Cloudflare còn có một lợi thế khác. Phần lớn lưu lượng trong mạng lưới Cloudflare không sử dụng băng thông theo cách đối xứng. Chẳng hạn như khi có một HTTP request để tải một trang web từ một hệ thống sử dụng Cloudflare, thì request này sẽ gửi một gói dữ liệu đầu vào tương đối nhỏ, nhưng khi phản hồi thì sẽ tạo ra một lượng lớn lưu lượng băng thông.
Điều này có nghĩa là mạng Cloudflare thường tạo ra nhiều lưu lượng hơn so với lưu lượng nhận vào. Các liên kết mạng và băng thông được phân bổ là đối xứng, có nghĩa là hạ tầng băng thông của Cloudflare còn đủ cho lưu lượng tạo ra thì tất nhiên nó sẽ đủ mạnh để xử lý lượng lưu lượng tấn công đi vào.
Điều này cho phép Cloudflare có khả năng xử lý hiệu quả các cuộc tấn công DDoS, vì họ có đủ băng thông để tiếp nhận lưu lượng tấn công mà không bị cạn kiệt tài nguyên.
Như phần trên đã có nói qua, khi lưu lượng tấn công đã đến được một máy chủ riêng lẻ trong trung tâm dữ liệu, băng thông của cuộc tấn công đã được phân phối đủ để không có liên kết upstream nào bị ngập. Và tất nhiên, đó chỉ là mới là bước đầu, điều này không có nghĩa là cuộc tấn công đã hoàn toàn bị ngăn chặn, vì các gói tệp tin xấu của những kẻ tấn công vẫn chưa bị loại bỏ.
Để làm điều đó, các kỹ sư của Cloudflare cần xác định lấy mẫu lưu lượng để phát hiện ra các đặc điểm nghi ngờ cho thấy một cuộc tấn công đang diễn ra để tạo ra các quy tắc để chặn các gói tin xấu.
Công việc xác định lấy mẫu lưu lượng cũng như loại bỏ các gói tin xấu là nhiệm vụ của l4drop component. l4drop component sử dụng XDP (eXpress Data Path) và một phiên bản mở rộng của Berkeley Packet Filter có tên là eBPF. Điều này cho phép họ thực thi mã tùy chỉnh trong không gian kernel và xử lý từng gói dữ liệu trực tiếp ở cấp độ card giao tiếp mạng (NIC). Thành phần này giúp hệ thống loại bỏ các gói dữ liệu một cách hiệu quả mà không tiêu tốn quá nhiều tài nguyên CPU trên máy chủ.
(Tổng quan về hệ thống bảo vệ DDoS của Cloudflare)
XDP được sử dụng để lấy mẫu các gói dữ liệu nhằm tìm kiếm các thuộc tính nghi ngờ cho thấy rằng đang có một cuộc tấn công. Các mẫu này cơ bản bao gồm các trường như địa chỉ
Phân tích này được thực hiện bởi một chương trình gọi là denial of service daemon (dosd). Dosd là phần quan trọng của Cloudflare, với nhiều bộ lọc được thiết kế dựa trên các quy tắc đã được chọn lọc đã giúp họ xác định thời điểm nào cần bắt đầu thực hiện quá trình giảm thiểu tấn công
Đối với khách hàng, những filters (các bộ lọc) này sẽ được sắp xếp theo từng kiểu tấn công và được gọi là Quy tắc Quản lý DDoS. Các khách hàng có thể tùy chỉnh các quy tắc này theo nhu cầu của mình
Khi nhận các mẫu từ XDP, dosd sẽ tạo ra nhiều phiên bản khác nhau của các đặc điểm lưu lượng nghi ngờ. Sau đó, bằng cách sử dụng một thuật toán đặc biệt, dosd sẽ tìm ra những dấu hiệu tốt nhất để giảm thiểu cuộc tấn công. Khi một cuộc tấn công được xác nhận, dosd sẽ áp dụng một quy tắc giảm thiểu trực tiếp dưới dạng chương trình eBPF để loại bỏ chính xác lưu lượng tấn công
Quá trình phát hiện và giảm thiểu tấn công của dosd diễn ra ở cấp độ máy chủ, cấp độ trung tâm dữ liệu và cấp độ toàn cầu. Và tất cả đều được quản lý và định nghĩa bởi phần mềm. Điều này giúp mạng lưới của Cloudflare rất vững chắc và cho phép giảm thiểu các cuộc tấn công một cách tự động ngay lập tức.
Mỗi máy chủ trong mạng lưới hoạt động với đầy đủ bộ sản phẩm của Cloudflare, bao gồm có cả những công cụ, thành phần nhằm phát hiện và giảm thiểu DDoS. Việc phi tập trung này loại bỏ sự phụ thuộc vào các trung tâm hay dịch vụ bên ngoài, có thể gây ra độ trễ.
Và một trong những điểm mấu chốt của phương thức này chính là các máy chủ giao tiếp thông qua một giao thức gossip để chia sẻ các hướng dẫn giảm thiểu. Điều này có nghĩa là khi một máy chủ nào đó xác định được một chiến lược giảm thiểu tấn công, nó sẽ chia sẻ thông tin này với các máy chủ khác cả trong cùng một trung tâm dữ liệu và sau đó là giữa các trung tâm dữ liệu trên toàn cầu. Việc chia sẻ thời gian thực này đảm bảo rằng tất cả các máy chủ đều được trang bị những biện pháp phòng ngừa mới nhất, cho dù cuộc tấn công là cục bộ hay trải rộng. Điều này đảm bảo rằng bất kể cuộc tấn công xảy ra ở đâu, dosd sẽ nhanh chóng cài đặt các quy tắc để bảo vệ hiệu quả.
Hệ thống phát hiện và giảm thiểu DDoS tự động, định nghĩa bằng phần mềm của Cloudflare hoạt động trên toàn bộ mạng lưới. Trong bài viết này, nội dung chủ yếu tập trung vào khả năng nhận diện động, thực tế thì bộ công cụ phòng thủ của các kỹ sư Cloudflare còn khủng hơn rất nhiều.
Hệ thống Bảo vệ TCP Nâng cao và Hệ thống Bảo vệ DNS Nâng cao hoạt động song song với khả năng nhận diện động để xác định các cuộc tấn công DDoS dựa trên TCP phức tạp và ngẫu nhiên cao, đồng thời họ cũng sử dụng việc phân tích thống kê để ngăn chặn các cuộc tấn công DDoS dựa trên các DNS phức tạp.
Ngoài ra, các biện pháp phòng thủ của Cloudflare còn tích hợp các thông tin tình báo về mối đe dọa theo thời gian thực, phân tích lưu lượng và phân loại bằng học máy (Machine Learning) nhằm giảm thiểu các bất thường về lưu lượng.
Tất cả những hệ thống, quy trình này nhằm để đảm bảo rằng khách hàng của Cloudflare luôn được bảo vệ khỏi những cuộc tấn công, dù ở mức độ nào, bất kể đó có phải là cuộc tấn công lớn nhất trên toàn cầu hay không.