Iptables cung cấp nhiều lệnh để quản lý luật firewall trên máy chủ Linux. Thông qua các lệnh này, quản trị viên có thể kiểm tra cấu hình hiện tại, cho phép hoặc chặn kết nối, quản lý các luật lọc gói tin và sao lưu cấu hình firewall.
Bài viết dưới đây tổng hợp những lệnh iptables thường dùng trong quá trình quản trị VPS và máy chủ Linux, kèm giải thích ngắn gọn và ví dụ thực tế.
1. Kiểm tra cấu hình Iptables
Trước khi thay đổi firewall, bạn nên kiểm tra các luật đang được áp dụng để tránh ảnh hưởng đến kết nối hiện tại.
Liệt kê các luật trong bảng filter:
iptables -L -n -v
Trong đó, -L dùng để liệt kê luật, -n hiển thị địa chỉ IP và cổng dưới dạng số, còn -v hiển thị thêm thông tin chi tiết và bộ đếm gói tin.
Xem luật kèm số thứ tự:
iptables -L INPUT -n --line-numbers
Lệnh này giúp xác định vị trí của từng luật trong chain INPUT, thuận tiện khi cần xóa hoặc kiểm tra một luật cụ thể.
Hiển thị luật theo cú pháp cấu hình:
iptables -S
Để kiểm tra luật trong một chain cụ thể, sử dụng:
iptables -S INPUT
Kiểm tra các luật NAT:
iptables -t nat -L -n -v
Lệnh này hiển thị các luật trong bảng nat, thường được sử dụng để kiểm tra cấu hình chuyển đổi địa chỉ mạng.
2. Thêm và chèn luật Iptables
Iptables hỗ trợ thêm luật vào cuối chain hoặc chèn luật vào một vị trí cụ thể. Thứ tự luật rất quan trọng vì gói tin thường được kiểm tra lần lượt từ trên xuống dưới.
Thêm luật vào cuối chain:
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Lệnh trên thêm luật cho phép gói tin TCP có cổng đích 443 đi vào máy chủ, nếu gói tin đến được luật này và không bị xử lý bởi luật trước đó.
Chèn luật lên đầu chain:
iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT
Lệnh này chèn luật vào vị trí đầu tiên của chain INPUT. Đây là cách đưa một luật lên trước các luật hiện có.
Cho phép kết nối SSH:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Ví dụ trên áp dụng khi SSH sử dụng cổng mặc định 22. Nếu máy chủ sử dụng cổng SSH khác, cần thay 22 bằng cổng đang cấu hình.
Lưu ý rằng luật cho phép kết nối chỉ có hiệu lực theo thứ tự xử lý và chính sách của firewall. Trước khi thay đổi luật trên máy chủ từ xa, hãy bảo đảm kết nối SSH hiện tại không bị chặn.
3. Chặn kết nối theo địa chỉ IP hoặc cổng
Iptables có thể lọc lưu lượng theo địa chỉ IP nguồn, giao thức và cổng đích.
Chặn địa chỉ IP nguồn:
iptables -A INPUT -s 192.0.2.10 -j DROP
Lệnh này loại bỏ các gói tin đi vào máy chủ có địa chỉ IP nguồn 192.0.2.10.
Chặn kết nối TCP đến một cổng:
iptables -A INPUT -p tcp --dport 8080 -j DROP
Lệnh trên loại bỏ gói tin TCP có cổng đích 8080 khi khớp với luật.
Cho phép truy cập từ một địa chỉ IP cụ thể đến cổng SSH:
Luật này cho phép lưu lượng TCP từ địa chỉ IP 192.0.2.10 đến cổng 22, nếu không bị luật trước đó xử lý.
Các địa chỉ IP trong ví dụ trên thuộc dải dành cho tài liệu minh họa. Khi áp dụng thực tế, bạn cần thay bằng địa chỉ IP và cổng phù hợp với hệ thống của mình.
4. Xóa và thay đổi luật Iptables
Khi không còn cần một luật firewall, bạn có thể xóa luật theo số thứ tự hoặc theo nội dung luật.
Xóa luật theo số thứ tự:
iptables -D INPUT 3
Lệnh trên xóa luật thứ ba trong chain INPUT. Cần kiểm tra lại danh sách luật ngay trước khi thực hiện vì số thứ tự có thể thay đổi sau khi thêm hoặc xóa luật.
Xóa luật theo nội dung:
iptables -D INPUT -s 192.0.2.10 -j DROP
Lệnh này xóa luật khớp với nội dung đã chỉ định trong chain INPUT. Các tham số phải tương ứng với luật cần xóa.
Thay thế một luật hiện có:
iptables -R INPUT 3 -p tcp --dport 443 -j ACCEPT
Lệnh này thay thế luật thứ ba trong chain INPUT bằng luật cho phép TCP đến cổng 443. Hãy xác định đúng số thứ tự và nội dung luật trước khi thực hiện.
Xóa toàn bộ luật trong một chain:
iptables -F INPUT
Lệnh này xóa tất cả luật trong chain INPUT. Các chain khác không bị xóa bởi lệnh trên.
Cần thận trọng với lệnh iptables -F không chỉ định chain, vì lệnh này xóa các luật trong tất cả chain thuộc bảng đang chọn. Nếu cấu hình firewall phụ thuộc vào những luật này, việc xóa có thể làm thay đổi đáng kể khả năng bảo vệ và kết nối của máy chủ.
5. Kiểm tra và đặt chính sách mặc định
Để xem chính sách mặc định của các chain, sử dụng:
iptables -L -n -v
Kết quả sẽ hiển thị chính sách như ACCEPT hoặc DROP bên cạnh tên chain nếu có.
Bạn có thể đặt chính sách mặc định cho chain tích hợp bằng lệnh -P. Ví dụ:
iptables -P INPUT DROP
Lệnh này đặt chính sách mặc định của chain INPUT thành DROP, nghĩa là các gói tin không khớp với luật xử lý trước đó sẽ bị loại bỏ.
Cảnh báo: Không nên áp dụng chính sách DROP cho INPUT khi chưa kiểm tra đầy đủ các luật cho phép kết nối cần thiết, đặc biệt là SSH và các dịch vụ đang sử dụng. Thao tác không đúng có thể khiến bạn mất quyền truy cập máy chủ từ xa.
6. Sao lưu và khôi phục cấu hình Iptables
Các luật được thêm bằng lệnh iptables không mặc nhiên được lưu để tồn tại sau khi khởi động lại. Bạn nên xuất cấu hình trước khi thay đổi để có thể khôi phục khi cần.
Sao lưu cấu hình hiện tại:
iptables-save > /root/iptables-backup.rules
Lệnh này xuất bộ luật IPv4 hiện tại vào tệp /root/iptables-backup.rules. Hãy bảo đảm thư mục đích có đủ dung lượng và quyền ghi.
Khôi phục từ tệp đã sao lưu:
iptables-restore < /root/iptables-backup.rules
Lệnh này nạp cấu hình từ tệp đã lưu và có thể thay thế các luật hiện hành tương ứng với cấu hình trong tệp. Vì vậy, hãy kiểm tra nội dung bản sao lưu trước khi khôi phục.
Để cấu hình tồn tại sau khi khởi động lại, cần sử dụng cơ chế lưu và khôi phục phù hợp với hệ điều hành hoặc công cụ quản lý firewall đang sử dụng.
7. Một số lưu ý khi quản trị Iptables
Kiểm tra trước khi thay đổi: Sử dụng iptables -L -n -v hoặc iptables-save để xem cấu hình hiện tại.
Cẩn trọng với kết nối SSH: Kiểm tra cổng SSH và các luật cho phép truy cập trước khi thay đổi chính sách firewall.
Chú ý thứ tự luật: Luật được thêm vào cuối chain có thể không được áp dụng nếu gói tin đã khớp với một luật xử lý trước đó.
Sao lưu cấu hình: Xuất luật trước khi thực hiện các thao tác xóa hoặc thay đổi chính sách.
Kiểm tra công cụ quản lý firewall: Trên một số hệ thống, iptables sử dụng backend nf_tables; ngoài ra, firewalld, UFW hoặc các phần mềm khác có thể cùng quản lý luật mạng. Cần xác định cơ chế đang sử dụng để tránh xung đột cấu hình.
Kết luận
Các lệnh iptables giúp quản trị viên Linux kiểm tra, thêm, chèn, xóa và quản lý luật firewall theo nhu cầu. Việc nắm rõ chức năng của từng lệnh và thứ tự xử lý gói tin sẽ giúp quá trình quản trị VPS và máy chủ an toàn, hiệu quả hơn.
Trước khi thay đổi firewall trên máy chủ đang hoạt động, hãy kiểm tra cấu hình hiện tại, sao lưu các luật cần thiết và bảo đảm không chặn nhầm những kết nối quan trọng.