

iptables là gì? Đây là công cụ dòng lệnh trên Linux được sử dụng để thiết lập, quản lý và kiểm tra các quy tắc xử lý lưu lượng mạng. Thông qua iptables, quản trị viên có thể cho phép hoặc chặn kết nối, kiểm soát port, giới hạn truy cập theo địa chỉ IP cũng như thực hiện NAT trên Linux Server.
iptables là công cụ quản trị các bảng quy tắc dùng cho việc lọc packet và Network Address Translation (NAT) trong Linux. Công cụ cho phép người quản trị xây dựng các rule xác định lưu lượng nào được phép đi qua, lưu lượng nào cần loại bỏ và packet phải được xử lý như thế nào.

Chức năng của iptables không chỉ giới hạn ở việc "đóng hoặc mở port". Công cụ có thể tham gia vào nhiều hoạt động xử lý lưu lượng mạng khác nhau.
Đây là chức năng phổ biến nhất của iptables.
Quản trị viên có thể xây dựng rule dựa trên các thông tin như:
Ví dụ, server có thể cho phép TCP traffic đi vào port 443 nhưng từ chối traffic tới một port quản trị không được sử dụng công khai.
iptables có thể giới hạn những hệ thống được phép kết nối tới một dịch vụ.
Chẳng hạn, thay vì cho phép toàn bộ Internet truy cập SSH port 22, quản trị viên có thể chỉ cho phép kết nối từ mạng nội bộ hoặc một địa chỉ IP quản trị cụ thể.
Điều này giúp giảm bề mặt tấn công của server.
iptables cũng hỗ trợ Network Address Translation, bao gồm những trường hợp như:
NAT thường được sử dụng khi một Linux Server đóng vai trò router hoặc gateway giữa các mạng khác nhau.
Nếu packet không có đích là chính máy chủ mà cần đi qua máy chủ để tới một hệ thống khác, iptables có thể kiểm tra traffic bằng chain FORWARD.
Chức năng này đặc biệt quan trọng khi Linux được sử dụng làm gateway, router hoặc host chạy các kiến trúc mạng phức tạp.

Các bộ lọc trong iptables được tổ chức thành nhiều table. Bên trong mỗi table là các chain, còn mỗi chain chứa một danh sách các rule.
Khi một gói tin đi qua hệ thống, iptables sẽ kiểm tra gói tin dựa trên các rule tương ứng. Các rule được xử lý theo thứ tự trong chain. Khi một rule phù hợp với gói tin, hệ thống sẽ thực hiện target được xác định trong rule đó.
Cấu trúc có thể hiểu đơn giản như sau:
Table → Chain → Rule → Target
Trong đó, table xác định nhóm chức năng xử lý, chain xác định vị trí hoặc giai đoạn của gói tin, còn rule quy định điều kiện và hành động cần thực hiện.
Một table là tập hợp các chain phục vụ một chức năng cụ thể.
Ba table chính trong iptables gồm:
Mỗi table có các chain riêng để xử lý lưu lượng trong những tình huống khác nhau.
| Table | Chain |
|---|---|
| Filter | INPUT, FORWARD, OUTPUT |
| NAT | INPUT, OUTPUT, PREROUTING, POSTROUTING |
| Mangle | INPUT, FORWARD, OUTPUT, PREROUTING, POSTROUTING |
Filter Table được sử dụng để kiểm soát luồng gói tin đi vào và đi ra khỏi hệ thống.
Đây cũng là table chịu trách nhiệm chủ yếu cho việc cho phép hoặc chặn kết nối và là table lọc mặc định được sử dụng trong iptables.
NAT Table được sử dụng để chuyển hướng các kết nối sang những network interface khác.
Table này bao gồm các chain như INPUT, OUTPUT, PREROUTING và POSTROUTING.
Mangle Table được sử dụng để thay đổi header của gói tin.
Table này có các chain INPUT, FORWARD, OUTPUT, PREROUTING và POSTROUTING.
Chain là một danh sách các rule được xử lý theo thứ tự.
Iptables có 5 chain chính:
INPUT được sử dụng để quản lý các gói tin hoặc kết nối đi vào một dịch vụ hoặc giao thức trên hệ thống.
Ví dụ, khi một kết nối được gửi tới web server đang chạy trên máy, rule trong INPUT chain có thể được sử dụng để xác định kết nối đó được phép hay bị chặn.
OUTPUT xử lý các gói tin đi ra sau khi chúng đã được tạo hoặc xử lý trên hệ thống.
FORWARD được sử dụng để chuyển tiếp các gói tin đi vào từ nguồn đến đích trong quá trình routing.
PREROUTING xử lý gói tin sau khi gói tin đi vào network interface.
POSTROUTING xử lý gói tin trước khi nó rời network interface, sau khi quyết định định tuyến đã được thực hiện.
Khi một gói tin đi vào hệ thống, nó được phân tích tại từng chain và kiểm tra với tập hợp các rule.
Nếu gói tin phù hợp với một rule, iptables sẽ thực hiện target tương ứng.
Các target được đề cập trong iptables gồm:
| Target | Chức năng |
|---|---|
| ACCEPT | Dừng xử lý và cho phép gói tin đi qua |
| REJECT | Loại bỏ gói tin và gửi phản hồi |
| DROP | Dừng xử lý tại chain hiện tại và loại bỏ gói tin |
| LOG | Ghi thông tin vào /var/log/messages |
ACCEPT cho phép gói tin tiếp tục đi qua và dừng quá trình kiểm tra hiện tại.
REJECT loại bỏ gói tin nhưng có phản hồi lại về việc kết nối bị từ chối.
DROP dừng quá trình xử lý tại chain hiện tại và loại bỏ gói tin.
LOG được sử dụng để ghi thông tin vào /var/log/messages.
Ví dụ, nếu muốn chặn tất cả kết nối đi vào web server qua port 80, có thể thêm một rule vào incoming chain trong Filter Table và đặt target là REJECT.
Nếu gói tin đi tới cuối chain mà không khớp với bất kỳ rule nào, default rule sẽ được sử dụng. Theo nội dung nguồn, nếu không có default rule thì gói tin được chấp nhận.
Để làm việc với iptables, quản trị viên nên nắm một số tùy chọn phổ biến sau:
Tham số | Chức năng |
| -A | Append – thêm rule vào cuối chain |
| -I | Insert – chèn rule vào vị trí chỉ định |
| -D | Delete – xóa rule |
| -L | Liệt kê rule |
| -S | Hiển thị rules theo dạng rule specification |
| -F | Xóa toàn bộ rule trong chain/table |
| -P | Thiết lập policy mặc định |
| -N | Tạo user-defined chain |
| -X | Xóa user-defined chain |
| -p | Chỉ định protocol |
| -s | Chỉ định source |
| -d | Chỉ định destination |
| -j | Chỉ định target |
Các ví dụ dưới đây giúp hình dung cách iptables được sử dụng trong thực tế.
iptables -A INPUT -p tcp --dport 22 -j ACCEPTRule cho phép TCP traffic đi tới port 22.
Nếu SSH Server sử dụng port khác, cần thay 22 bằng port tương ứng.
iptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp --dport 443 -j ACCEPTiptables -A INPUT -s 203.0.113.10 -j DROPPacket có source IP 203.0.113.10 sẽ bị loại bỏ nếu đi tới rule này.
Ví dụ:
iptables -A INPUT -p tcp -s 203.0.113.20 --dport 22 -j ACCEPTRule cho phép địa chỉ 203.0.113.20 truy cập SSH.
Tuy nhiên, chỉ thêm rule ACCEPT chưa có nghĩa các IP khác tự động bị chặn. Kết quả cuối cùng còn phụ thuộc vào các rule tiếp theo và policy của chain.
iptables vẫn xuất hiện trên nhiều Linux Server, nhưng nftables hiện là hướng phát triển kế nhiệm trong hệ sinh thái Netfilter.
nftables được thiết kế nhằm cung cấp cơ chế quản lý ruleset linh hoạt và khả năng mở rộng tốt hơn. Netfilter Project xác định nftables là successor của iptables và đây cũng là nơi các tính năng firewall mới được phát triển.
Tiêu chí | iptables | nftables |
| Thế hệ | Cũ hơn | Mới hơn |
| CLI chính | iptables | nft |
| Cách tổ chức rule | Tables, chains, rules | Tables, chains, rules với mô hình linh hoạt hơn |
| IPv4/IPv6 | Thường dùng iptables/ip6tables riêng | Có thể quản lý thống nhất hơn |
| Hướng phát triển | Duy trì tương thích | Framework kế nhiệm |
| Phù hợp | Hệ thống cũ, ruleset hiện hữu | Hệ thống Linux mới |
Sai một rule INPUT có thể khiến SSH bị chặn và quản trị viên mất kết nối với server.
Trước khi áp dụng policy DROP, cần chắc chắn traffic quản trị cần thiết đã được cho phép.
iptables xử lý các rule trong chain theo thứ tự. Vì vậy, một rule DROP đặt phía trên có thể khiến rule ACCEPT phía dưới không bao giờ được áp dụng cho traffic tương ứng.
Nếu server chỉ chạy website, không nên mở hàng loạt port không sử dụng.
Nguyên tắc giảm bề mặt tấn công vẫn nên được áp dụng khi xây dựng firewall rule.
Một ruleset IPv4 chặt chẽ không đồng nghĩa IPv6 cũng đã được bảo vệ tương tự.
Trong mô hình iptables truyền thống, iptables quản lý IPv4 còn ip6tables được sử dụng cho IPv6.
Rule được cấu hình trực tiếp bằng command không phải lúc nào cũng tự động được khôi phục sau khi máy chủ khởi động lại.
Cơ chế lưu và phục hồi ruleset phụ thuộc vào Linux distribution, công cụ quản lý firewall và phương thức cấu hình đang sử dụng.
Do đó, sau khi hoàn thiện ruleset, cần kiểm tra cách hệ điều hành lưu cấu hình firewall lâu dài.
iptables thường được gọi ngắn gọn là Linux firewall, nhưng về kỹ thuật cần phân biệt giữa iptables và Netfilter.
Netfilter cung cấp framework xử lý packet bên trong Linux kernel, trong khi iptables cung cấp công cụ để cấu hình và quản lý các rule liên quan.
Netfilter hoạt động trong Linux kernel và cung cấp các hook cho quá trình xử lý packet.
iptables là công cụ ở userspace giúp quản trị viên thiết lập các tables, chains và rules để làm việc với cơ chế xử lý packet đó.
Có. iptables vẫn xuất hiện trên nhiều hệ thống Linux và trong nhiều ruleset hiện hữu.
Tuy nhiên, nftables hiện là framework kế nhiệm và đã trở thành lựa chọn mặc định trên một số Linux distribution. Ngoài ra còn tồn tại iptables-nft, cho phép tiếp tục sử dụng cú pháp iptables trên backend nftables.
ACCEPT cho phép packet đi qua.
DROP loại bỏ packet mà không tiếp tục xử lý theo luồng bình thường và không phản hồi cho phía gửi theo cách REJECT thường làm.
Hiểu iptables là gì giúp quản trị viên nắm được cách Linux kiểm soát traffic ở cấp độ packet. Thay vì chỉ ghi nhớ câu lệnh, cần hiểu rõ mối quan hệ giữa Table, Chain, Rule và Target, cũng như xác định packet đang đi qua INPUT, OUTPUT hay FORWARD.
Với các hệ thống mới, nftables ngày càng đóng vai trò quan trọng, nhưng kiến thức về iptables vẫn hữu ích khi quản trị Linux Server, xử lý hệ thống cũ hoặc làm việc với môi trường sử dụng lớp tương thích iptables-nft.
Đối với doanh nghiệp triển khai ứng dụng trên hạ tầng đám mây, VNPT Cloud Server cung cấp tài nguyên máy chủ linh hoạt, giúp doanh nghiệp chủ động xây dựng môi trường Linux, triển khai ứng dụng và kết hợp các lớp kiểm soát bảo mật phù hợp với từng hệ thống.
