+2

Triển khai Web Application Firewall (WAF) trên Amazon Web Service (AWS)

1. Giới thiệu WAF

Web Application Firewall (WAF) là một dịch vụ của Amazon Web Services (AWS) cho phép người dùng bảo vệ các ứng dụng web khỏi các cuộc tấn công trên mạng bằng cách chặn các yêu cầu không mong muốn hoặc độc hại trước khi chúng đến được tới ứng dụng web. WAF AWS có thể xác định và chặn các yêu cầu web không mong muốn hoặc độc hại như các cuộc tấn công DDoS, SQL Injection, Cross-site scripting (XSS) và các cuộc tấn công khác. WAF AWS hoạt động bằng cách sử dụng các quy tắc bảo mật để phân tích các yêu cầu đến ứng dụng web và chặn các yêu cầu không phù hợp với quy tắc đó.

WAF AWS cung cấp cho người dùng nhiều tính năng bảo mật, bao gồm:

  • Bảo vệ trước các cuộc tấn công DDoS, SQL Injection, XSS và các cuộc tấn công khác.
  • Cấu hình quy tắc bảo mật linh hoạt để phù hợp với nhu cầu bảo mật của doanh nghiệp.
  • Tích hợp với các dịch vụ khác của AWS như Amazon CloudFront, AWS Application Load Balancer, AWS Elastic Beanstalk, AWS API Gateway để cung cấp một giải pháp bảo mật toàn diện cho ứng dụng web.
  • Tính năng giám sát và báo cáo để giúp người dùng quản lý các cuộc tấn công và đảm bảo tính ổn định và hiệu suất của ứng dụng web.

Cách thức hoạt động của WAF như sau:

  • Xác định quy tắc bảo mật: Người dùng có thể cấu hình các quy tắc bảo mật linh hoạt để xác định các loại yêu cầu mà WAF sẽ chặn hoặc cho phép.
  • Phân tích các yêu cầu web: WAF sử dụng các quy tắc bảo mật đã được cấu hình để phân tích các yêu cầu web đến ứng dụng web.
  • Kiểm tra các yêu cầu web: Các yêu cầu web sẽ được kiểm tra xem chúng có phù hợp với các quy tắc bảo mật hay không. Các yêu cầu không phù hợp sẽ bị chặn bởi WAF, trong khi các yêu cầu hợp lệ sẽ được chuyển tiếp đến ứng dụng web.
  • Báo cáo và giám sát: WAF AWS cung cấp các tính năng báo cáo và giám sát để người dùng có thể quản lý các cuộc tấn công và đảm bảo tính ổn định và hiệu suất của ứng dụng web.

2. Mô hình triển khai WAF cho môi trường Dev/Prod

Trong phạm vi bài viết này, mình sẽ triển khai WAF theo mô hình dưới đây:

3. Triển khai WAF

Để triển khai được WAF, cần cung cấp tối thiểu các quyền truy cập sau cho account:

* AWSWAFConsoleFullAccess 
* AWSWAFFullAccess
* AmazonS3FullAccess
* CloudFrontFullAccess
* ElasticLoadBalancingFullAccess
* AmazonEC2ReadOnlyAccess
* AmazonVPCFullAccess
* AWSMarketplaceFullAccess

Khởi tạo WebACLs cho môi trường Dev/Test gắn với Application Load Balancer (ALB)

  • Trên console aws tìm kiếm service WAF & Sheild => Web ACL => Create web ACL

  • Ở phần resource type => chọn resource cấu hình là cloudfront hoặc Regional resources (Application Load Balancers, AWS AppSync GraphQL APIs, Amazon API Gateway REST APIs, Amazon Cognito user pools, Amazon App Runner services)
  • Phần Add Associated AWS resources => chọn resources cần gắn

Khởi tạo các rule cho Web ACL vừa tạo.

  • Chọn ACL vừa khởi tạo => Add rule => Add managed rule groups

  • Ở đây chúng ta sẽ sử dụng Rule Amazon IP reputation list và Web Exploits OWASP Rules ( của F5 managed rule groups )
  • Expand list rule AWS managed rule groups => enable rule Amazon IP reputation list.
  • Expand list rule F5 managed rule groups => Subscribe in AWS Marketplace =? Ta sẽ tiến hành mua rule này, vì đây không phải là một rule miễn phí do aws cung cấp.

  • Sau khi enable các rule, ta sẽ edit lần lượt các rule và set action thành COUNT ( mục đích để count sẽ giúp chúng ta đánh giá thêm các yếu tố ảnh hưởng đến môi trường dev hoặc prod sau khi triển khai WAF, từ đó sẽ fix các vấn đề liên quan đến lỗ hổng bảo mật ) sau khi đã fix xong các vấn đề về bảo mật ta có thể chuyển action từ COUNT => BLOCK

Khởi tạo rule group

  • Ở trên console WAF & Shield => Rule groups => Create rule group

  • Đặt tên cho rule group & CloudWatch metric => Next

  • Add các rule vào rule group ( ở case này sẽ add các rule liên quan đến Mitigate DDOS )

Click Add Rule => đặt tên cho rule => Type : Rate-base rule => Rate limit ( ở đây sẽ giới hạn số request vào hệ thống của một ip trong 5p ) => Request aggregation: Source IP address => Action Count => Add rule

Sau khi add rule ta tạo thêm một rule nữa về Mitigate-DDOS-X-Forwarded-For

Click Add Rule => đặt tên cho rule => Type : Rate-base rule => Rate limit ( ở đây sẽ giới hạn số request vào hệ thống của một ip trong 5p ) => Request aggregation: IP address in header => Action Count => Add rule

Sau khi khởi tạo xong 2 rule chọn Next Lưu ý: ở phần Capacity nên để dư khoảng 20 để sau có thể add thêm rule vào group nếu cần.

Set thứ tự của các Rule sau đó Next => Create rule group Sau khi tạo xong rule group => trên console => click Web ACLs => chọn lại vào Web ACL vừa tạo ở bước trên => ở tab Rules => Add rules => Add my own rules and rule groups

Chọn Rule group vừa tạo ở bước trên để add vào Web ACL

Enable Logging lưu vào S3 Storage Khởi tạo S3 Storage theo document này : https://repost.aws/knowledge-center/waf-send-logs-centralized-account

Sau khi khởi tạo S3 Storage xong, ở tab Logging and metrics trên console Web ALC => Enabled logging => chọn S3 bucket vừa khởi tạo làm nơi lưu lại các logs về WAF => Save

4. Một số Tool hỗ trợ Test các case về bảo mật.

Dưới đây là một số tool hỗ trợ test và scan hệ thống mà chúng tôi khuyên dùng để scan các lỗ hổng bảo mật: Acunetix https://www.acunetix.com/product/ : Đây là tool giúp bạn nhanh chóng scan các lỗ hổng bảo mật của hệ thống, Acunetix sẽ thường xuyên cập nhật các lỗ hổng bảo mật mới nhất trên thế giới, vì vậy bạn không cần phải lo lắng về việc update các mối nguy hiểm mới đối với hệ thống của bạn.

Jmeter https://jmeter.apache.org/: Đây là tool về stress test hệ thống, Jmeter có thể giả lập các trường hợp DDOS hệ thống. JMeter™ là phần mềm mã nguồn mở, một ứng dụng Java thuần 100% được thiết kế để tải hành vi chức năng kiểm tra và đo lường hiệu suất. Ban đầu nó được thiết kế để thử nghiệm các Ứng dụng web nhưng sau đó đã được mở rộng sang các chức năng thử nghiệm khác.

5. Một số lỗi gặp phải khi triển khai

  • Lỗi thiếu quyền khi mua rule của F5 trong Marketplace.
  • Do khách chưa phân quyền subscribe Marketplace trong AIM.
  • Lỗi tạo S3 xong nhưng không thấy có trong tab Logging của Web ACL.
  • Đặt tên của bucket phải theo quy tắc aws-waf-logs-Namebucket.
  • Việc trỏ CNAME đến Cloudfront không được do ssl sử dụng của bên thứ 3.
  • Request SSL từ AWS và attack vào Cloudfront.

6. Kết luận

Qua việc triển khai AWS WAF, chúng ta đã thành công trong việc tăng cường đáng kể lớp bảo mật cho các ứng dụng web. Việc cấu hình các quy tắc tùy chỉnh, kết hợp với các bộ quy tắc quản lý đã giúp ngăn chặn hiệu quả các cuộc tấn công phổ biến, bảo vệ dữ liệu và đảm bảo tính sẵn sàng của dịch vụ.

Việc triển khai AWS WAF đã chứng minh tính linh hoạt và hiệu quả của giải pháp này trong việc bảo vệ các ứng dụng web trước các mối đe dọa ngày càng tinh vi. Với khả năng tùy biến cao và tích hợp dễ dàng vào hệ thống hiện có, AWS WAF là một lựa chọn đáng tin cậy cho doanh nghiệp.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí