Saturday, November 16, 2024

[AWS] VPC Flow Logs Hands On + Athena

-

VPC Flow Logs là một tính năng trong Amazon VPC cho phép người dùng theo dõi lưu lượng IP đi vào và ra khỏi các tài nguyên mạng của VPC. VPC Flow Logs có thể được kết hợp với Amazon S3 và Amazon CloudWatch để giám sát và phân tích lưu lượng mạng và tìm kiếm vấn đề kết nối.

Trong quá trình triển khai VPC, người dùng có thể bật tính năng VPC Flow Logs và cấu hình các thiết lập như tên, loại lưu lượng, thông tin liên lạc và định dạng đăng nhập. Sau đó, người dùng có thể tạo ra các quy tắc bộ lọc dữ liệu bằng cách sử dụng các trình lọc, trong đó có thể bao gồm địa chỉ IP nguồn và đích, cổng, tên giao thức và hành động.

Sau khi lưu lượng mạng được ghi lại trong VPC Flow Logs, nó có thể được chuyển đến Amazon S3 hoặc Amazon CloudWatch để lưu trữ. Các bản ghi này có thể được truy xuất và truy vấn bằng cách sử dụng công cụ như Amazon Athena để phân tích dữ liệu. Amazon Athena cung cấp các công cụ truy vấn và xử lý dữ liệu để xác định các xu hướng và vấn đề liên quan đến lưu lượng mạng.

Sau khi dữ liệu VPC Flow Logs được truy xuất và xử lý bởi Amazon Athena, người dùng có thể sử dụng Amazon QuickSight để tạo các báo cáo và biểu đồ để hiển thị dữ liệu và thống kê lưu lượng mạng của VPC.

Trong VPC Flow Logs, Filter là một phần quan trọng để tìm kiếm và lọc thông tin về lưu lượng mạng. Có ba loại Filter chính:

  • Accept (Chấp nhận): Lọc tất cả các bản ghi flow logs được chấp nhận (accept).
  • Reject (Từ chối): Lọc tất cả các bản ghi flow logs bị từ chối (reject).
  • All (Tất cả): Lọc tất cả các bản ghi flow logs kể cả được chấp nhận và từ chối.

“Maximum aggregation interval” trong AWS CloudWatch Logs Insights xác định khoảng thời gian tối đa giữa các sự kiện được gom nhóm lại trong kết quả truy vấn. Khi ta chọn giá trị “10 minutes”, tức là Insights sẽ tự động gom nhóm các sự kiện trong khoảng thời gian 10 phút và hiển thị kết quả truy vấn dưới dạng các bản ghi được tổng hợp theo mỗi 10 phút. Tương tự, khi chọn giá trị “1 minute”, kết quả truy vấn sẽ được tổng hợp theo mỗi 1 phút.

Việc chọn khoảng thời gian gom nhóm tối đa phụ thuộc vào mục đích sử dụng của người dùng và kích thước của dữ liệu đang được xử lý. Nếu ta chọn khoảng thời gian quá ngắn, sẽ dẫn đến số lượng bản ghi được trả về quá lớn và làm giảm hiệu suất truy vấn. Ngược lại, nếu chọn khoảng thời gian quá dài, Insights có thể bỏ qua các sự kiện nhỏ hơn và không gom nhóm chúng cùng nhau, dẫn đến kết quả truy vấn không chính xác.

Hãy mở 1 tab trình duyệt mới và tạo 1 bucket để lưu flow logs bằng cách vào Amazon S3 › Create bucket, mọi thông tin còn lại bạn có thể giữ nguyên mặc định và bấm Create bucket.

Tạo bucket thành công, bấm vào View details để xem chi tiết bucket này.

Hãy vào Properties và copy ARN của bucket.

Sau khi có địa chỉ ARN của bucket bạn hãy tiếp tục quay lại phần thiết lập flow tại Destination lựa chọn Send to an Amazon S3 bucket và tại S3 bucket ARN paste link ARN vừa copy vào đây.

Thông báo “a resource-based policy will be created for you and attached to the target bucket” có nghĩa là khi bạn tạo ra một S3 Bucket, AWS sẽ tự động tạo ra chính sách dựa trên nguồn tài nguyên cho bucket đó và gắn nó vào bucket. Việc này giúp đảm bảo an toàn và an ninh cho đối tượng bạn tạo ra, giúp kiểm soát quyền truy cập của người dùng.

Các cài đặt khác bạn có thể giữ nguyên và bấm Create flow log.

Bạn nhận được thông báo “Successfully created flow log for vpc-Oaf681dd122c911e5.” cho biết việc tạo flow log thành công.

Bạn đã thấy DemoS3FlowLog (1) xuất hiện ở phần Flow logs. Bây giờ bấm vào Create flow log (2). để tiếp tục tạo thêm 1 flow log khác.

Đặt tên cho Flow log này, ví dụ “DemoFlogLogCWLogs”. Các thiết lập Filter và Maximum aggregation interval giữ nguyên như flow log cũ. Bấm vào Set up permissions để tạo IAM role.

Giữ nguyên mặc định và bấm Allow để cho phép.

Tiếp theo bạn vào CloudWatch › Log groups (1) › Create log group (2) để tạo log group.

Tạo 1 log group với các thiết lập đơn giản như dưới.

Sau khi tạo xong các thành phần trên, bạn bấm vào tải lại và chọn VPCFlowLogs và flowlogsRole như hình dưới. Nếu không còn gì thay đổi, bạn hãy bấm Create flow log để tạo flow log.

Bây giờ bạn đã có thêm flow log “DemoFlogLogCWLogs”.

Giờ bạn có thể vào bucket kiểm tra, bạn sẽ thấy có thư mục được tạo tự động để lưu trữ logs.

Nếu đi sâu vào các thư mục bạn sẽ thấy file chứ logs.

Tương tự ở phần Log group của Cloud Watch bạn cũng sẽ thấy các log xuất hiện.

Bạn có thể kiểm tra bằng cách xác định tên card mạng của instance, ví dụ của mình là BastionHost, có tên card mạng là eni-083547dec5….

Hãy quay lại Cloud Watch, tìm eni-083547dec5…. và nhấp vào đó.

Và tại đây bạn sẽ thấy chi tiết các log. Loại dữ liệu tương tự cũng sẽ xuất hiện tại S3.

Bây giờ chúng ta hãy thử sử dụng Athena để phân tích đám log đã thu thập được xem kết quả như thế nào? Hãy vào Amazon Athena › Query editor › View settings.

Bấm vào Manage.

Chúng ta sẽ tạo 1 bucket để lưu thông tin Athena.

Đặt tên cho bucket, chọn region, hãy bỏ qua các tuỳ chọn còn lại (do đang demo) và kéo xuống dưới bấm Create bucket.

Thông báo Successfully created bucket “demo-athena-stephane-v2” cho biết bạn đã tạo bucket thành công. Để lấy đường dẫn ARN bucket hãy bấm vào View details.

Sao chép ARN tại Amazon Resource Name (ARN).

Quay trở lại phần Amazon Athena › Query editor › Manage settings và dán link ARN vừa mới copy được vào đây theo cú pháp s3://<arn_link>/<thư mục lưu thông tin Athena> và lưu lại.

Lưu thành công, hãy bấm vào Editor để thực hiện 1 số truy vấn dữ liệu.

Nhưng trước tiên bạn cần có 1 đoạn truy vấn mẫu. Bạn có thể vào google và tìm với từ khoá “aws vpc logs athena”, hãy vào link đầu tiên.

Nó sẽ dẫn bạn tới Amazon VPC (1) và bạn hãy bấm vào (2) để copy toàn bộ nội dung đoạn truy vấn mẫu.

Bạn hãy thay đổi nội dung LOCATION bằng thông tin s3 đang chứa thông tin flow logs của bạn.

Hãy vào bucket (1) của bạn và copy s3 url (2).

Nội dung LOCATION sau khi thay (1), bạn có thể bấm vào run (2), bạn nhận kết quả truy vấn thành công (3) và sau khi truy vấn thành công bạn sẽ thấy xuất hiện các tables (4).

Tiếp tục sang phần Amazon VPC document và copy đoạn truy vấn dưới. Đoạn truy vấn này là một câu lệnh truy vấn Athena để thêm phân vùng mới vào bảng vpc_flow_logs. Câu lệnh này cho phép Athena đọc các file log của VPC Flow Logs được lưu trữ trên S3.

Cụ thể, câu lệnh sẽ thêm một phân vùng mới vào bảng vpc_flow_logs với điều kiện rằng trong ngày đó, các file log của VPC Flow Logs được lưu trữ trên S3 trong thư mục có đường dẫn “s3://your_log_bucket/prefix/AWSLogs/{account_id}/vpcflowlogs/{region_code}/YYYY/MM/dd” trong đó:

  • {account_id}: là ID của tài khoản AWS sử dụng VPC Flow Logs.
  • {region_code}: là mã vùng của VPC Flow Logs, ví dụ như us-west-2.
  • YYYY/MM/dd: là ngày được xác định theo định dạng năm/tháng/ngày.

Việc thêm phân vùng mới này cho phép Athena tìm kiếm và truy vấn dữ liệu log trong phạm vi ngày được chỉ định.

Tiếp tục tìm đến đường dẫn bucket của bạn (1), qua tab “Properties” sao chép s3 url.

Dán s3 url vào (1) và chỉnh sửa lại thời gian (2) và tiếp tục kéo xuống dưới, bấm run.

Kết quả run thành công.

Tiếp tục sang phần Amazon VPC document sao chép đoạn truy vấn dưới. Đoạn truy vấn này là một truy vấn Athena để lấy dữ liệu từ bảng vpc_flow_logs. Truy vấn này lựa chọn các cột day_of_week, date, interfaceid, sourceaddress, action và protocol từ bảng vpc_flow_logs và sử dụng chúng để thực hiện các điều kiện lọc dữ liệu. Điều kiện lọc này yêu cầu lấy những bản ghi có giá trị trong cột action là REJECT và giá trị trong cột protocol là 6. Kết quả của truy vấn này được giới hạn tối đa 100 bản ghi. Các cột day_of_week và date được sử dụng để xác định ngày và thứ của bản ghi trong tuần. Cột interfaceid chứa thông tin về interface, còn sourceaddress chứa địa chỉ IP nguồn của giao thông mạng.

Dán vào đây và bấm run.

Bạn nhận được kết quả run thành công (1) và dữ liệu (2).

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories