-m | --match state OPTION DESCRIPTION
--state <state>[,<state>] Gói tin là match lệ nếu trạng thái kết nối là một trong những trạng thái được liệt kê. Gồm những giá trị sau NEW, ESTABLISHED, RELATED, hoặc INVALID.
Bảng 2.14 Bổ trợ match state filter
Trạng thái kết nối bằng giao thức TCP hay thông tin trao đổi bằng giao thức UDP đều có thể lưu lại, cho phép Firewall có thể lọc thông tin đó như NEW, ESTABLISHED, RELATED, hoặc INVALID:
NEW tương đương với khởi đầu yêu cầu bằng SYN, hoặc gói tin UDP đầu tiên
ESTABLISHED muốn nói đến những gói tin truyền sau thông điệp ACK báo hiệu kết nối đã được thiết lập bằng giao thức TCP hoặc những gói datagram chuyển đổi giữa hai trạm với địa chỉ cổng trước đó đã được sử dụng truyền gói tin đầu tiên, hoặc thông điệp echo-reply trả lời cho một thông điệp echo-request trước đó.
RELATED muốn nói đến chỉ những thông điệp lỗi ICMP hay kết nối thứ hai của giao thức FTP.
Trang 46
INVALID chỉ những thông điệp lỗi ICMP nhưng không phải là trả lời của một phiên hiện tại, hoặc một echo-reply không phải là trả lời của một echo-request trước đó.
Được sử dụng nhiều nhất là ESTABLISHED, cho phép những cặp luật Firewall cho một dịch vụ nào đó match thành một luật duy nhất là cho phép gói tin gửi yêu cầu đầu tiên. Ví dụ, sử dụng ESTABLISHED, một web client chỉ cần cho phép gói tin SYN khởi đầu khi đi ra hay một DNS client chỉ cần cho phép gói tin khởi đầu gửi đi.
Với chính sách loại bỏ mặc định, về mặc lý thuyết ta có thể theo vết kết nối và có thể thay thế toán bộ những luật riêng biệt cho từng giao thức thành hai luật tổng quát đó là cho phép gói tin vào/ra nếu nó là một phần của một kết nối trước đó, hoặc gói tin của một kết nối thứ hai được mở thêm từ một kết nối trước đó.
Tuy nhiên, với cách cài đặt Firewall như vậy chỉ có thể áp dụng cho những trường match mô hình Firewall nhỏ, không phải xử lý quá nhiều kết nối đồng thời. Lý do nằm ở bảng trạng thái có thời gian giới hạn cho mỗi mục lưu trạng thái cho một kết nối, đồng thời bảng trại thái bị giới hạn kích thước và yêu cầu về bộ nhớ. Nếu gói tin tiếp theo đáng ra được nhận nhưng mục lưu trạng thái đã bị xóa thì gói tin đó vẫn bị từ chối.
Ví dụ đơn giản về sử dụng ESTABLISHED. Những luật sau sẽ cho phép DNS server ở trên máy local hoặc động như là một server trung chuyển (cache-and-forward)r. Một DNS server trung chuyển sử dụng kết nối server-to-server. Nội dung sẽ được chuyển đổi giữa hai trạm đều có số hiệu cổng nguồn và đích là 53.
iptables -A INPUT -m state \
--state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT --out-interface <interface> -p udp \ -s $IPADDR --source-port 53 -d $NAME_SERVER \
--destination-port 53 -m state \ --state NEW,RELATED -j ACCEPT
Trang 47
DNS sử dụng giao thức truy vấn và trả lời đơn giản. Giả sử một ứng dụng đòi hỏi một kết nối kéo dài thời gian chẳng hạn như phiên làm việc của FTP, telnet hay một phiên SSH thì thế nào? Nếu mục thông tin kết nối trong bảng trạng thái đã bị xóa vĩnh viễn vì một lý do nào đó, những gói tin trong tương lai sẽ không có trạng thái dùng để định danh là một phần của một kết nối được thiết lập trước đó. Ví dụ sau đây cho phép kết nối SSH và cho phép điều cần ở trên.