DDoS là gì: các kiểu tấn công, khuếch đại và cách phòng chống

DDoS là gì: các kiểu tấn công, kỹ thuật khuếch đại và cách phòng chống

DDoS (Distributed Denial of Service) là kiểu tấn công từ chối dịch vụ phân tán, trong đó lưu lượng tràn ngập máy chủ nạn nhân đến từ rất nhiều nguồn khác nhau nên việc chặn một địa chỉ IP đơn lẻ gần như vô nghĩa. Sức tàn phá không chỉ đến từ số lượng thiết bị tham gia mà còn từ hệ số khuếch đại mà kẻ tấn công lợi dụng từ các dịch vụ mở như DNS, NTP hay Memcached. Bài viết này phân tích các kiểu tấn công phổ biến, giải thích cơ chế phản xạ khuếch đại theo tiêu chuẩn mạng, và tổng hợp các biện pháp phòng thủ thực tế.

DDoS khác gì với DoS

DoS cổ điển dùng một nguồn duy nhất để làm quá tải. DDoS khó chịu hơn bậc nhiều lần vì nguồn tấn công phân tán trên hàng nghìn máy, thường là thiết bị bị chiếm đoạt mà chủ nhân không hề hay biết. Theo định nghĩa trên Wikipedia, chính đặc điểm phân tán này khiến việc chặn một nguồn đơn lẻ không đủ để dập tắt cuộc tấn công.

Một ví dụ điển hình là botnet Mirai, theo trang Wikipedia về botnet, nhắm vào thiết bị IoT như camera và router bằng cách dò mật khẩu mặc định. Quy mô botnet trung bình vào khoảng 20 nghìn máy, còn những botnet lớn có thể chạm tới hàng triệu thiết bị.

Botnet: đội quân máy bị điều khiển

Botnet là mạng lưới máy tính đã bị xâm nhập và bị kẻ tấn công điều khiển từ xa. Mỗi máy trong botnet gọi là một bot, và chúng nhận lệnh tập trung từ một máy điều khiển để đồng loạt gửi lưu lượng về nạn nhân.

sơ đồ botnet gồm kẻ tấn công, máy điều khiển, các máy zombie và máy chủ nạn nhân

Sơ đồ trên mô tả đúng chuỗi điều khiển: kẻ tấn công chỉ cần liên hệ với máy điều khiển, máy này phát lệnh tới hàng loạt máy zombie, và toàn bộ lưu lượng đổ dồn về nạn nhân. Chính vì kẻ tấn công không bao giờ chạm trực tiếp vào nạn nhân mà toàn bộ đường đi đều qua thiết bị trung gian nên việc truy nguồn gốc gần như không thể.

Cơ chế khuếch đại: vũ khí lớn nhất của DDoS

Điểm cốt lõi của các cuộc tấn công nghiêm trọng là khuếch đại. Kẻ tấn công gửi một yêu cầu rất nhỏ, nhưng dịch vụ trung gian trả về một câu trả lời lớn hơn nhiều, và câu trả lời đó lại được chuyển thẳng tới nạn nhân. Không có tài nguyên nào của kẻ tấn công bị tiêu hao, trong khi đích đến nhận lưu lượng khổng lồ từ những máy chủ hoàn toàn vô tội.

RFC 4732 mô tả hiện tượng này dưới tên bộ khuếch đại tấn công, giải thích rằng kẻ tấn công gửi yêu cầu giả mạo địa chỉ nguồn rồi nhận phản hồi lớn hơn từ máy phản xạ, nhân khoảng nhiều lần lưu lượng đi vào nạn nhân.

Dịch vụ bị lợi dụng Hệ số khuếch đại ghi nhận Cơ chế
Memcached Lên tới 50.000 lần Yêu cầu UDP nhỏ, phản hồi cực lớn qua cổng 11211
NTP Khoảng 557 lần Truy vấn monlist trả về danh sách rất dài
DNS Tới khoảng 179 lần Câu hỏi bất kỳ với nhiều bản ghi phụ

Các con số trên là mức US-CERT ghi nhận và được dẫn trong bài viết về tấn công từ chối dịch vụ. Sự chênh lệch giữa 50.000 lần và 179 lần cho thấy vì sao việc đóng các dịch vụ phản xạ mở lại là biện pháp phòng thủ có tỷ lệ hiệu quả cao nhất, ngay cả khi bạn không phải là nạn nhân.

Biện pháp kỹ thuật chuẩn cho phía máy chủ mở được quy định tại RFC 5358, tài liệu Best Current Practice về việc ngăn open resolver phục vụ trong tấn công phản xạ. Tài liệu chỉ ra vấn đề cốt lõi: máy chủ DNS đệ quy mở sẽ lưu phản hồi lớn và chuyển tiếp nó tới bất kỳ ai hỏi, kể cả nạn nhân. Cách khắc phục là giới hạn việc đệ quy chỉ cho các máy khách được dự kiến, thông qua danh sách địa chỉ nguồn cho phép hoặc xác thực chữ ký giao dịch. Cùng họ, RFC 8499 định nghĩa thuật ngữ chuẩn về hệ thống tên miền và dẫn chiếu tới RFC 5358 như một văn bản thực hành tốt.

sơ đồ phản xạ DNS trong tấn công DDoS: botnet gửi truy vấn, phản hồi từ máy chủ DNS bị chuyển thẳng tới nạn nhân

Ví dụ kinh điển là tấn công phản xạ DNS. Botnet gửi truy vấn với địa chỉ nguồn giả là địa chỉ nạn nhân. Máy chủ DNS tưởng là khách hợp lệ nên trả lời, và câu trả lời đi thẳng tới đích. Vấn đề nằm ở chỗ máy chủ DNS không có cách nào biết địa chỉ nguồn kia là giả mạo, vì UDP không có cơ chế bắt tay xác thực.

Các kiểu tấn công phổ biến

Tấn công phủ nhấn lưu lượng

Đây là kiểu truyền thống: bơm lưu lượng càng nhiều càng tốt để đầy băng thông và làm nghẽn hàng đợi. Nếu hệ thống có băng thông dự phòng dưới ngưỡng, phần dư hoạt động bình thường vẫn nhận được yêu cầu và dịch vụ tạm thời chậm đi.

Tấn công khuếch đại giao thức

Dựa trên chính cơ chế vừa mô tả, kẻ tấn công không gửi lưu lượng lớn mà khai thác dịch vụ trung gian. Đây là kiểu tấn công gây thiệt hại lớn nhất với chi phí thấp nhất, và cũng là kiểu mà các chuẩn RFC tập trung xử lý.

Tấn công chậm, băng thông thấp

Ngược lại với tấn công bão tố băng thông, Slowloris chỉ cần băng thông rất nhỏ. Nó mở rất nhiều kết nối HTTP rồi gửi từng phần header, không bao giờ hoàn thành yêu cầu. Mỗi kết nối chỉ chiếm rất ít tài nguyên ở phía kẻ tấn công nhưng vẫn giữ một suất trong pool kết nối đồng thời của máy chủ, khiến người dùng thật không còn chỗ nối vào.

Kỹ thuật này hiệu quả với máy chủ Apache phiên bản 1.x và 2.x vì cách chúng quản lý kết nối. Bài học ở đây là không nên chỉ chuẩn bị phòng thủ dựa trên giả định tấn công tốn nhiều băng thông.

Tấn công thuộc tầng ứng dụng

Các tấn công nhắm vào truy vấn cơ sở dữ liệu, truy vấn tìm kiếm hoặc API nội bộ không tiêu tốn nhiều băng thông nhưng lại khiến máy chủ bận rộn xử lý tính toán. Theo mục 2.13 của RFC 7457, ngay cả TLS cũng bổ sung một vectơ tấn công từ chối dịch vụ, vì máy khách có thể buộc máy chủ tiêu tốn công việc tính toán lớn với chi phí rất nhỏ.

Phòng thủ: những việc nên làm trước khi bị tấn công

  • Đóng dịch vụ phản xạ mở: kiểm tra máy chủ DNS, NTP, Memcached của bạn có đang trả lời cho mọi nguồn hay không. Đây là việc làm giúp cả thế giới, không chỉ giúp bạn.
  • Áp dụng giới hạn tốc độ theo địa chỉ và theo phiên, đặt trước lớp CDN hoặc dịch vụ lọc để chặn ngay từ biên mạng.
  • Giám sát lưu lượng và cảnh báo khi băng thông tăng đột ngột, vì nhiều đợt tấn công bắt đầu bằng lượng nhỏ để dò cấu hình phòng thủ.
  • Chuẩn bị kế hoạch mở rộng trước: dự phòng băng thông, sẵn sàng chuyển lưu lượng sang vùng dự phòng.
  • Giới hạn tài nguyên theo kết nối để chặn kỹ thuật băng thông thấp như Slowloris, thay vì chỉ giới hạn tốc độ tổng.

Kết luận

DDoS nguy hiểm không chỉ vì lớn, mà vì bất đối xứng: kẻ tấn công dùng rất ít tài nguyên để tạo ra rất nhiều lưu lượng nhờ khai thác dịch vụ phản xạ mở. Chính vì vậy, biện pháp phòng thủ hiệu quả nhất lại mang tính cộng đồng, nằm ở việc mỗi máy chủ không vô tình trở thành vũ khí. Nếu bạn đang vận hành dịch vụ công cộng, hãy rà lại cấu hình chống khuếch đại trước, bởi đây là bước có tỷ lệ lợi ích trên chi phí cao nhất trong toàn bộ biện pháp bảo vệ.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Sự cố CrowdStrike là gì: nguyên nhân gốc rễ và cách khắc phục

Sự cố CrowdStrike là gì: nguyên nhân gốc rễ và cách khắc phục Sự cố CrowdStrike là một sự cố công nghệ toàn cầu xảy ra vào ngày 19 tháng…

Xem thêm

Năng lượng nhiệt hạch là gì: nguyên lý và thách thức còn lại

Năng lượng nhiệt hạch là gì: nguyên lý và thách thức còn lại Năng lượng nhiệt hạch là gì? Đây là quá trình hợp nhất hai hạt nhân nhẹ thành…

Xem thêm

Starship là gì: tên lửa tái sử dụng toàn diện của SpaceX

Starship là gì: tên lửa tái sử dụng toàn diện của SpaceX Starship là tên lửa hai tầng của SpaceX gồm tầng tăng tốc Super Heavy và tầng trên cùng…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất