Cần làm gì khi đối mặt với một cuộc tấn công DDoS vào ứng dụng được lưu trữ trên AWS?

Tram Ho

1. Việc xem xét

Một ngày nào đó, khi ứng dụng của bạn đột nhiên trở nên chậm chạp.

Bạn cố gắng thực hiện một yêu cầu đơn giản nhưng phải mất nhiều thời gian để phản hồi.

Cuối cùng, bạn gặp lỗi 502.

hình ảnh.png

Trong trường hợp đó, bạn chắc chắn muốn xem xét một cuộc tấn công DDoS.

Khi bạn chắc chắn về một cuộc tấn công DDoS. Bạn chắc chắn sẽ muốn chặn khách hàng tấn công dịch vụ của bạn.

Vì vậy, hãy thảo luận cách thực hiện với AWS Cloud.

2. Các cách tiếp cận khác nhau với các loại Kiến trúc khác nhau

Để xác định chính xác những việc cần làm, trước tiên chúng ta cần hiểu kiến ​​trúc ứng dụng của mình.

Hôm nay chúng ta sẽ thảo luận về ứng dụng kết nối internet nên chúng ta sẽ bỏ qua trường hợp máy khách và máy chủ sử dụng kết nối trực tiếp riêng tư ở đây.

Hãy liệt kê một số thiết kế phổ biến và xem xét các chiến lược cho từng thiết kế.

2.1 Chỉ một phiên bản EC2 hoặc các EC2 duy nhất có NLB

2.1.1 Xem lại kiến ​​trúc ứng dụng

Sơ đồ không có tiêu đề.drawio.png

Sơ đồ không có tiêu đề-Bản sao của Trang-1.drawio.png

Trong thiết kế này, chúng tôi có các thành phần sau:

  1. Máy khách
  2. NACL ( do VPC quản lý )
  3. Cân bằng tải mạng (Tùy chọn)
  4. Nhóm bảo mật
  5. Phiên bản EC2

Vì vậy, luồng kết nối sẽ trở thành một cái gì đó như vậy:

2.1.2 Những điều cần kiểm tra

Với Luồng mạng được xác định ở trên, mạng đang truyền một cách trong suốt sang máy EC2. Do đó, EC2 sẽ thực sự nhìn thấy Địa chỉ IP của máy khách. Và chúng tôi có thể kiểm tra những điều sau đây để xem khách hàng nào đang spam dịch vụ của chúng tôi:

  1. Nhật ký luồng VPC
  2. Nhật ký truy cập EC2
  3. Nhật ký truy cập ứng dụng

2.1.3 Hành động có thể thực hiện

  1. Chặn IP bên trong EC2 bằng một số loại phần mềm tường lửa.

Đây là một trong những hành động khả thi mà bạn có thể thực hiện vì bạn có khả năng cài đặt bất kỳ phần mềm nào trong EC2 của mình. Nhưng điều này có thể không hiệu quả khi cuộc tấn công DDoS khiến bạn thậm chí không thể SSH đến EC2 của mình.

Ngoài ra, việc cài đặt phần mềm bổ sung vào EC2 cũng có thể có tác động xấu đến ứng dụng của bạn. Từ quan điểm của tôi, tôi khuyên bạn chống lại điều này.

  1. Chỉ Danh sách trắng được phép Danh sách địa chỉ IP trong Nhóm bảo mật

Hành động khả thi thứ hai mà bạn có thể thực hiện là sửa đổi nhóm bảo mật được đính kèm với EC2. Nhóm bảo mật không hỗ trợ quy tắc “Từ chối”, chỉ hỗ trợ quy tắc “Cho phép”. Vì vậy, chúng tôi chỉ có thể chặn địa chỉ IP của khách hàng bằng cách xác định danh sách địa chỉ danh sách trắng và chỉ “Cho phép” chúng kết nối.

Nếu ứng dụng của bạn là công khai và mở cho mọi người, bạn không thể chặn các IP cụ thể theo cách này.

  1. Thêm quy tắc “Từ chối” trong NACL

Đây là cách dễ nhất và được khuyến nghị cho kiến ​​trúc này. Tất cả những gì bạn cần làm chỉ là tạo quy tắc “Từ chối” và áp dụng quy tắc đó cho Địa chỉ IP mà bạn muốn chặn và AWS sẽ làm tất cả phần còn lại cho bạn.

2.2 Phiên bản EC2 với Cân bằng tải ứng dụng

2.2.1 Xem lại kiến ​​trúc ứng dụng

Sơ đồ không có tiêu đề-Bản sao của Trang-1.drawio.png

Các thành phần trong thiết kế này:

  1. Máy khách
  2. NACL ( do VPC quản lý )
  3. Nhóm bảo mật ALB
  4. ALB
  5. Nhóm bảo mật EC2
  6. Phiên bản EC2

Cân bằng tải ứng dụng trong AWS sẽ thực hiện một việc gọi là “Chấm dứt kết nối”, nghĩa là kết nối của máy khách sẽ bị ngắt thành các giai đoạn Client => ALB & ALB => EC2 .

Luồng kết nối bây giờ trở thành:

2.2.2 Những điều cần kiểm tra

Trong trường hợp này, với “Kết thúc kết nối” đến từ ALB. EC2 của chúng tôi sẽ không phục vụ trực tiếp các yêu cầu đến từ máy khách. Thay vào đó, nó sẽ phục vụ yêu cầu của ALB. Chúng tôi sẽ cần sửa đổi nhóm bảo mật của EC2 để cho phép các kết nối từ ALB.

Do đó, các EC2 của chúng tôi sẽ không còn thấy Địa chỉ IP của khách hàng nữa. Nó sẽ chỉ thấy Địa chỉ IP từ ALB. Vì vậy, việc chặn Địa chỉ IP ở phía EC2 dường như khó khăn hơn. Vì vậy, hãy xem xét các hành động có thể trong trường hợp này

2.2.3 Hành động có thể thực hiện

  1. Chặn IP bên trong EC2 bằng một số loại phần mềm tường lửa.

Vì địa chỉ IP mà EC2 của chúng tôi thấy là Địa chỉ IP của ALB, nên chúng tôi gặp khó khăn khi áp dụng một số quy tắc tường lửa để từ chối yêu cầu từ máy khách. Nếu chúng tôi thực sự muốn làm điều này, ALB hỗ trợ X-Forwarded-For trong tiêu đề của yêu cầu, chuyển tiếp thông tin địa chỉ IP của máy khách. Một lần nữa, tôi không khuyên bạn nên làm theo cách đó!

  1. Chỉ Danh sách trắng được phép Danh sách địa chỉ IP trong Nhóm bảo mật

Nó có các cách tiếp cận tương tự như trong 2.1 . Sự khác biệt là, Bởi vì EC2 của chúng tôi không thấy địa chỉ IP của máy khách nữa. Vì vậy, thay vào đó, chúng tôi sẽ cần sửa đổi nhóm bảo mật của ALB.

  1. Thêm quy tắc “Từ chối” trong NACL

Một lần nữa. Giải pháp này cũng có hiệu quả trong trường hợp này. Việc thêm quy tắc “Từ chối” trong NACL sẽ khiến yêu cầu của địa chỉ IP cụ thể không thể đến được ALB, điều này làm giảm lưu lượng truy cập đến cả ALB và EC2.

Nhưng sẽ rất khó khăn cho chúng ta nếu kẻ tấn công sử dụng nhiều địa chỉ IP ngẫu nhiên từ khắp nơi trên thế giới để tấn công dịch vụ của chúng ta đúng không? Chúng ta sẽ cần phải chặn từng cái một với phương pháp này. Để có giải pháp tốt hơn, hãy xem xét 4 ~

  1. Đính kèm quy tắc Tường lửa ứng dụng web Sơ đồ không có tiêu đề-Bản sao của Trang-1.drawio (1).png

Với ALB, chúng tôi có thể đính kèm một thứ gọi là Tường lửa ứng dụng web do AWS cung cấp. Nó không chỉ hỗ trợ chặn Địa chỉ IP mà còn hỗ trợ một số quy tắc để lọc các yêu cầu, chẳng hạn như tạo giới hạn dựa trên tốc độ cho một URI cụ thể, v.v.. Ví dụ: Một địa chỉ IP chỉ có thể gửi một số lượng yêu cầu giới hạn trong khoảng thời gian 5 phút, ..

Vì vậy, khi bị tấn công bởi nhiều địa chỉ cùng một lúc. Bạn nên cân nhắc sử dụng một số quy tắc để lọc các yêu cầu gửi đến. Nhưng WAF là một dịch vụ bổ sung do AWS cung cấp, bạn sẽ phải trả nhiều tiền hơn khi sử dụng.

2.3 Khi sử dụng Cloudfront dưới dạng CDN

2.3.1 Xem lại kiến ​​trúc ứng dụng

Sơ đồ không có tiêu đề-Bản sao của Trang-1.drawio.png

Các thành phần trong thiết kế này:

  1. Máy khách
  2. CloudFront
  3. NACL ( do VPC quản lý )
  4. Nhóm bảo mật ALB
  5. ALB
  6. Nhóm bảo mật EC2
  7. Phiên bản EC2

Luồng kết nối bây giờ trở thành:

2.3.2 Những điều cần kiểm tra

Trong trường hợp này, chúng tôi có thêm CloudFront làm CDN và vì CloudFront là CDN nên Nó nằm bên ngoài VPC và ip nguồn của yêu cầu được gửi tới VPC hiện là IP của CloudFront. Khi đó, có thể nói, NACL giờ đã vô dụng hay WAF trong ALB cũng không còn hiệu quả nữa..

2.3.3 Hành động có thể thực hiện

Trong thiết kế này, bạn có thể làm điều gì đó như sau:

  1. Thêm giới hạn địa lý Nếu bạn thấy cuộc tấn công đến từ một quốc gia cụ thể. Bạn có thể sử dụng Hạn chế địa lý trong CloudFront để chặn tất cả Địa chỉ IP đến từ quốc gia đó nếu muốn. Tất nhiên, điều đó không được khuyến khích vì những người không phải là kẻ tấn công nhưng có địa chỉ IP của quốc gia đó cũng bị chặn!
  2. WAF một lần nữa Sơ đồ không có tiêu đề-Bản sao của Trang-1.drawio (2).png Không chỉ có thể đính kèm với ALB, nó còn được đính kèm với CloudFront. Tương tự, Bạn cũng có thể thực hiện lọc IP, tạo quy tắc dựa trên tỷ lệ để hạn chế quyền truy cập.

3. Tóm lại

Hãy cẩn thận khi bạn chặn một Địa chỉ IP. Kẻ tấn công có thể sử dụng một IP chung cụ thể từ một ISP và nếu bạn chặn IP đó, những người khác sử dụng cùng một ISP đó cũng có thể bị ảnh hưởng.

Chúng không phải là tất cả các giải pháp khả thi mà bạn có thể xem xét khi đối mặt với một cuộc tấn công DDoS trong Ứng dụng được lưu trữ trên AWS của chúng tôi.

Chúng tôi có các giải pháp tốt hơn như sau để ngăn chặn DDoS. Vì giá cả của 2 loại này khá cao, không phù hợp với tất cả mọi người nên mình sẽ không đi sâu vào vấn đề này.

  1. Sử dụng tính năng cao cấp ngăn chặn DDoS trong WAF
  2. Sử dụng AWS Shield Advanced

Hy vọng điều này có ý nghĩa và có một ngày tốt đẹp!

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo