Mục lục

Iptables là công cụ dòng lệnh trên Linux, cho phép quản trị viên thiết lập, kiểm tra và quản lý các luật lọc gói tin mạng thông qua hệ thống Netfilter trong nhân Linux. Công cụ này thường được sử dụng để kiểm soát kết nối ra vào máy chủ, giới hạn truy cập theo địa chỉ IP, cổng mạng và giao thức.
Iptables thường cần quyền quản trị hệ thống để thay đổi các luật firewall. Trên nhiều hệ thống Linux, bạn có thể sử dụng lệnh iptables hoặc sudo iptables để thao tác.
1. Iptables hoạt động như thế nào?
Iptables sử dụng các bảng (table), chuỗi (chain) và luật (rule). Mỗi luật xác định điều kiện áp dụng cho gói tin và hành động tương ứng khi gói tin đáp ứng điều kiện đó.
Các thành phần chính gồm:
- Table: Nhóm các luật theo mục đích xử lý, chẳng hạn lọc gói tin hoặc thực hiện NAT.
- Chain: Tập hợp các luật được kiểm tra theo thứ tự khi gói tin đi qua một điểm xử lý mạng.
- Rule: Quy định điều kiện đối với gói tin, ví dụ địa chỉ IP nguồn, giao thức hoặc cổng đích.
- Target: Hành động được thực hiện khi gói tin khớp với luật, chẳng hạn
ACCEPTđể cho phép,DROPđể loại bỏ hoặcREJECTđể từ chối kết nối.
Một số bảng thường gặp là filter dùng để lọc gói tin, nat dùng cho các thao tác chuyển đổi địa chỉ mạng và mangle dùng để điều chỉnh một số thuộc tính của gói tin.
Các chain tích hợp phổ biến gồm:
INPUT: Xử lý gói tin đi vào máy chủ.OUTPUT: Xử lý gói tin do máy chủ tạo ra.FORWARD: Xử lý gói tin được định tuyến qua máy chủ.PREROUTINGvàPOSTROUTING: Xử lý gói tin ở các giai đoạn tương ứng trước và sau quá trình định tuyến trong những bảng hỗ trợ chúng.
Không phải bảng nào cũng có đầy đủ các chain trên. Việc xử lý thực tế phụ thuộc vào bảng, chain và loại lưu lượng mạng.
2. Các lệnh iptables thường dùng
Bạn nên kiểm tra các luật hiện có trước khi thay đổi cấu hình firewall.
Kiểm tra các luật hiện tại
Lệnh sau hiển thị các luật trong bảng filter, bao gồm thông tin địa chỉ, cổng và bộ đếm gói tin.
iptables -L -n -v
Để xem các luật trong chain INPUT kèm số thứ tự, sử dụng:
iptables -L INPUT -n --line-numbers
Để xuất cấu hình luật hiện tại theo định dạng có thể lưu hoặc khôi phục, sử dụng:
iptables-save
Thêm luật cho phép kết nối
Ví dụ, để cho phép kết nối TCP đến cổng 443, sử dụng:
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Trong đó:
-A INPUT: Thêm luật vào cuối chainINPUT.-p tcp: Áp dụng cho giao thức TCP.--dport 443: Chỉ định cổng đích 443.-j ACCEPT: Cho phép gói tin khớp với luật.
Lệnh này chỉ thêm luật vào cấu hình hiện tại. Khả năng truy cập thực tế còn phụ thuộc vào thứ tự các luật, chính sách mặc định, dịch vụ đang chạy và những lớp firewall khác.
Xóa một luật
Sau khi xác định số thứ tự của luật trong chain INPUT, bạn có thể xóa luật đó bằng lệnh:
iptables -D INPUT <số_thứ_tự>
Thay <số_thứ_tự> bằng số thứ tự thực tế của luật cần xóa.
Lưu ý: Thứ tự luật có ảnh hưởng đến kết quả xử lý gói tin. Hãy kiểm tra kỹ trước khi thêm hoặc xóa luật để tránh làm gián đoạn kết nối.
3. Iptables được sử dụng để làm gì?
Iptables có thể được sử dụng trong nhiều tình huống quản trị máy chủ Linux, bao gồm:
- Kiểm soát truy cập: Cho phép hoặc chặn lưu lượng theo địa chỉ IP, giao thức và cổng mạng.
- Bảo vệ dịch vụ: Thiết lập luật kiểm soát kết nối đến các dịch vụ như SSH, HTTP và HTTPS.
- Thực hiện NAT: Hỗ trợ chuyển đổi địa chỉ mạng trong các cấu hình phù hợp.
- Kiểm soát định tuyến: Lọc các gói tin được chuyển tiếp qua máy chủ Linux.
Việc sử dụng iptables cần phù hợp với cấu hình mạng và mục đích bảo vệ hệ thống. Một luật firewall không thể thay thế việc cập nhật phần mềm, bảo mật dịch vụ và kiểm tra cấu hình máy chủ.
4. Phân biệt iptables, ip6tables và nftables
- iptables: Công cụ quản lý luật lọc gói tin IPv4.
- ip6tables: Công cụ tương ứng để quản lý luật IPv6.
- nftables: Nền tảng quản lý lọc gói tin hiện đại hơn, được phát triển để thay thế các công cụ thuộc bộ iptables truyền thống.
- firewalld: Công cụ quản lý firewall cấp cao, có thể sử dụng các backend như nftables hoặc iptables tùy hệ thống.
Trên một số bản phân phối Linux hiện đại, lệnh iptables có thể hoạt động thông qua backend nf_tables. Vì vậy, không nên mặc định rằng mọi máy chủ đều sử dụng cùng một cơ chế backend.
5. Những lưu ý khi cấu hình iptables
Khi quản lý firewall trên VPS hoặc máy chủ Linux, bạn cần lưu ý:
- Sao lưu cấu hình: Sử dụng
iptables-saveđể xuất các luật hiện tại trước khi thay đổi. - Tránh khóa kết nối SSH: Nếu đang thao tác từ xa, hãy kiểm tra kỹ các luật liên quan đến SSH trước khi áp dụng chính sách chặn.
- Lưu cấu hình lâu dài: Các luật được thêm bằng lệnh iptables không mặc nhiên tồn tại sau khi khởi động lại. Cách lưu và khôi phục phụ thuộc vào hệ điều hành và công cụ quản lý firewall.
- Kiểm tra công cụ đang quản lý firewall: Nếu máy chủ đang sử dụng firewalld hoặc một công cụ khác, cần xác định cách các công cụ này tương tác để tránh cấu hình không nhất quán.
Kết luận
Iptables là công cụ hữu ích để quản lý luật firewall trên Linux, hỗ trợ kiểm soát lưu lượng mạng theo địa chỉ IP, giao thức và cổng kết nối. Nắm được cách hoạt động của bảng, chain và rule sẽ giúp quản trị viên kiểm tra, cấu hình và xử lý các vấn đề liên quan đến kết nối mạng hiệu quả hơn.
Khi thay đổi luật firewall trên máy chủ đang hoạt động, hãy sao lưu cấu hình và kiểm tra kỹ để hạn chế nguy cơ gián đoạn dịch vụ.
