Trong ngữ cảnh của Firewall, các khái niệm “stateful” và “stateless” liên quan đến cách mà Firewall xử lý các gói tin mạng và xác định liệu chúng có được chấp nhận hay từ chối.
Stateful Firewall: Stateful Firewall (Firewall có trạng thái) là một loại Firewall có khả năng theo dõi và theo dõi trạng thái của các kết nối mạng. Nó giữ một bản ghi về các thông tin kết nối, bao gồm các thông tin về các giao thức, cổng nguồn và đích, và trạng thái kết nối (như thiết lập, gửi dữ liệu, hoặc kết thúc). Khi một gói tin đi qua Stateful Firewall, nó được so khớp với bản ghi kết nối hiện có để xác định liệu gói tin đó có liên quan đến kết nối hiện tại hay không. Điều này cho phép Firewall áp dụng các quy tắc lưu lượng mạng dựa trên trạng thái kết nối, như cho phép gói tin đi qua nếu nó là một phần của kết nối đang tồn tại hoặc từ chối gói tin nếu nó không có quan hệ với bất kỳ kết nối nào.
Stateless Firewall: Stateless Firewall (Firewall không có trạng thái) là một loại Firewall không giữ bất kỳ thông tin về trạng thái kết nối. Nó kiểm tra các gói tin mạng dựa trên các quy tắc cấu hình cụ thể mà không quan tâm đến trạng thái kết nối trước đó hoặc thông tin liên quan đến các giao thức. Stateless Firewall áp dụng các quy tắc lưu lượng mạng dựa trên các thông tin như địa chỉ IP nguồn và đích, cổng nguồn và đích, và các thông tin khác có sẵn trong các tiêu đề gói tin. Mỗi gói tin được xem xét độc lập, không có thông tin về các gói tin trước đó được lưu trữ.
Sự khác biệt chính giữa Stateful và Stateless Firewall nằm ở khả năng theo dõi và kiểm soát trạng thái kết nối. Stateful Firewall có khả năng nhìn vào lịch sử kết nối và xác định liệu gói tin có liên quan đến kết nối hiện tại hay không, trong khi Stateless Firewall chỉ xem xét mỗi gói tin riêng lẻ mà không biết về trạng thái trước đó và xem xét mỗi gói tin riêng lẻ. Khi một gói tin đi qua Stateless Firewall, nó sẽ được đánh giá dựa trên các quy tắc cấu hình cụ thể, như địa chỉ IP nguồn, địa chỉ IP đích, cổng nguồn và đích, và các thông tin khác có sẵn trong tiêu đề gói tin. Firewall không lưu trữ thông tin về các gói tin trước đó hoặc trạng thái kết nối, do đó mỗi gói tin được xem xét độc lập và không có khả năng theo dõi lịch sử kết nối.
Hình ảnh so sánh sự khác nhau giữa stateful và stateless
Trong khi Stateful Firewall có khả năng phân biệt gói tin theo trạng thái kết nối, Stateless Firewall không thể xác định liệu gói tin là một phần của kết nối hiện tại hay không. Do đó, Stateless Firewall phải xem xét lại các quy tắc cấu hình cho mỗi gói tin, dẫn đến một số đặc điểm như không thể theo dõi lịch sử kết nối và không thể áp dụng các quy tắc dựa trên trạng thái kết nối.
Cả Stateful và Stateless Firewall đều có ứng dụng và ưu điểm riêng. Sự lựa chọn giữa hai loại Firewall này phụ thuộc vào yêu cầu cụ thể của môi trường mạng và quyết định thiết kế bảo mật.
Ví dụ trong dịch vụ AWS, có hai loại Firewall phổ biến: Network Access Control List (NACL) và Security Group. Dưới đây là ví dụ về cách NACL hoạt động theo cách stateful, trong khi Security Group hoạt động theo cách stateless.
- Stateful Firewall trong AWS – Network Access Control List (NACL): Network Access Control List (NACL) trong AWS là một Firewall cấp mạng ở mức subnet. Nó có thể được cấu hình để kiểm soát lưu lượng mạng vào và ra khỏi subnet dựa trên quy tắc được xác định. NACL hoạt động theo cách stateful, có nghĩa là nó ghi nhớ trạng thái của các kết nối mạng.
Ví dụ: Giả sử bạn có một subnet trong VPC của bạn và bạn đã cấu hình NACL cho subnet đó. Bạn muốn cho phép các yêu cầu HTTP đi vào subnet, và cho phép các yêu cầu HTTP đã được thiết lập (kết nối đang tồn tại) đi ra khỏi subnet. Trong trường hợp này, NACL sẽ ghi nhớ trạng thái của các kết nối HTTP và cho phép chúng đi ra khỏi subnet mà không cần cấu hình quy tắc riêng cho các gói tin đi ra. Điều này cho phép các phản hồi HTTP trở lại qua cùng một kết nối đã được thiết lập.
- Stateless Firewall trong AWS – Security Group: Security Group trong AWS là một Firewall cấp Instance (EC2 Instance). Nó kiểm soát lưu lượng mạng vào và ra khỏi các EC2 Instance dựa trên quy tắc được xác định. Security Group hoạt động theo cách stateless, không ghi nhớ trạng thái kết nối.
Ví dụ: Giả sử bạn có một Security Group cho một EC2 Instance và bạn muốn cho phép lưu lượng SSH (port 22) vào EC2 Instance. Trong trường hợp này, mỗi gói tin SSH đến EC2 Instance sẽ được xem xét độc lập, và bạn cần cấu hình một quy tắc riêng cho các gói tin phản hồi đi ra (ví dụ: cấu hình cho phép các gói tin phản hồi đi ra trên các cổng nguồn lớn hơn 1024). Điều này là do Security Group không ghi nhớ trạng thái kết nối trước đó và xem xét mỗi gói tin riêng lẻ.