Fast Byte - Thuê VPS Giá Rẻ
VPS & Server

Iptables Là Gì? Hướng Dẫn Cấu Hình Firewall VPS Từ A-Z An Toàn

Iptables là gì là thắc mắc cốt lõi của bất kỳ ai bắt đầu bước chân vào thế giới quản trị máy chủ Linux, đặc biệt khi hệ thống phải liên tục đối mặt với hiểm họa rà quét cổng, tấn công từ chối dịch vụ hay brute-force mật khẩu. Khi khởi tạo máy chủ […]

Ảnh đại diện Thanh Lam NguyễnThanh Lam Nguyễn22 phút đọc

Iptables là gì là thắc mắc cốt lõi của bất kỳ ai bắt đầu bước chân vào thế giới quản trị máy chủ Linux, đặc biệt khi hệ thống phải liên tục đối mặt với hiểm họa rà quét cổng, tấn công từ chối dịch vụ hay brute-force mật khẩu. Khi khởi tạo máy chủ tại ThueVPSGiaRe.vn, nắm vững cách vận hành iptables sẽ giúp bạn dựng nên một lá chắn vững chắc ngay từ nhân hệ điều hành, bảo vệ an toàn toàn bộ dữ liệu và tiến trình máy chủ.

1. Iptables là gì? Bản chất và vị trí trong nhân Linux

Iptables là một tiện ích dòng lệnh giao tiếp trực tiếp với framework Netfilter bên trong nhân Linux, đóng vai trò như một hệ thống tường lửa lọc gói tin mạng ở tầng 3 và tầng 4. Công cụ này cho phép quản trị viên cho phép, chặn hoặc điều hướng luồng dữ liệu dựa trên địa chỉ IP, cổng dịch vụ và giao thức mạng.

Iptables LINUX

Để hiểu đúng bản chất, bạn cần phân biệt rõ hai thành phần: Netfilter và Iptables. Nhiều người thường gọi chung là “tường lửa iptables”, nhưng về mặt kỹ thuật, Netfilter mới chính là bộ lọc gói tin thực thụ nằm sâu trong Linux Kernel. Netfilter cung cấp các móc kiểm soát (hooks) tại các thời điểm quan trọng trong chu trình xử lý mạng của hệ điều hành.

Trong khi đó, iptables là chương trình không gian người dùng (userspace tool). Người quản trị sử dụng iptables để định nghĩa các quy tắc (rules), sau đó đẩy các quy tắc này vào kernel để Netfilter áp dụng trực tiếp lên từng gói tin mạng đi qua card giao tiếp. Do làm việc ở tầng nhân, iptables xử lý với tốc độ cực kỳ ấn tượng và tiêu hao rất ít tài nguyên phần cứng. Để nắm được các khái niệm nền tảng về cơ chế bảo vệ lưu lượng mạng, bạn có thể tham khảo thêm bài viết firewall là gì để có góc nhìn toàn diện hơn về packet filtering.

2. Kiến trúc 3 tầng: Tables, Chains và Targets trong Iptables

Cấu trúc của iptables hoạt động theo mô hình thứ bậc chặt chẽ gồm ba khối chính: Bảng (Tables) chứa Chuỗi (Chains), và trong mỗi Chuỗi sẽ chứa các Quy tắc (Rules) trỏ tới Hành động (Targets). Việc nắm rõ sơ đồ này giúp bạn không bao giờ bị nhầm lẫn luồng xử lý gói tin.

Tables, Chains và Targets trong Iptables

2.1. Các Tables (Bảng) trong Iptables

Mỗi table chịu trách nhiệm cho một nhóm tác vụ xử lý gói tin chuyên biệt:

  • Filter Table: Bảng mặc định và được dùng phổ biến nhất. Filter đảm nhận nhiệm vụ quyết định xem gói tin có được phép đi vào máy chủ hay không.
  • NAT Table: Chịu trách nhiệm chuyển dịch địa chỉ mạng (Network Address Translation). Bảng này được sử dụng khi máy chủ hoạt động như một gateway, router hoặc chuyển hướng cổng truy cập sang IP/cổng khác.
  • Mangle Table: Dùng để can thiệp sâu và điều chỉnh các cờ TCP hoặc trường dữ liệu trong header của gói tin IP (như TOS, TTL, MARK).
  • Raw Table: Được xử lý trước tiên trong hệ thống, chuyên dùng để cấu hình miễn trừ theo dõi trạng thái kết nối (NOTRACK), giúp tối ưu hiệu năng đối với các đợt lưu lượng truy cập lớn.
  • Security Table: Được sử dụng để đánh dấu ngữ cảnh bảo mật mạng Mandatory Access Control (MAC), tiêu biểu như SELinux.

2.2. Các Chains (Chuỗi) trong Iptables

Chuỗi đại diện cho các trạm kiểm soát gói tin trên đường truyền qua hệ thống:

  • INPUT: Giám sát tất cả các gói tin có điểm đích là chính máy chủ của bạn (ví dụ: truy cập web vào port 80/443 hoặc kết nối SSH).
  • OUTPUT: Giám sát các gói tin được tạo ra từ bên trong máy chủ và chuẩn bị gửi ra môi trường mạng internet.
  • FORWARD: Dành cho các gói tin chỉ đi ngang qua máy chủ hiện tại để chuyển tiếp tới một máy tính khác (máy chủ đóng vai trò thiết bị định tuyến trung gian).
  • PREROUTING: Xử lý gói tin ngay khi nó vừa chạm tới card mạng, trước khi nhân Linux đưa ra quyết định định tuyến đường đi (thường dùng trong NAT bảng nat).
  • POSTROUTING: Xử lý gói tin ngay trước khi rời khỏi card mạng ra ngoài (thường dùng để sửa đổi IP nguồn SNAT hoặc Masquerade).

2.3. Các Targets (Hành động xử lý)

Khi một gói tin thỏa mãn toàn bộ điều kiện lọc trong rule, iptables sẽ kích hoạt Target tương ứng:

  • ACCEPT: Chấp thuận cho gói tin tiếp tục đi qua chuỗi quy tắc vào hệ thống.
  • DROP: Lặng lẽ hủy bỏ gói tin, không gửi bất kỳ phản hồi thông báo nào ngược lại cho máy gửi. Phía client sẽ chờ đợi cho đến khi hết hạn thời gian kết nối (Request Timeout).
  • REJECT: Từ chối gói tin nhưng gửi trả lại một gói tin ICMP báo lỗi (như “port unreachable”) tới máy gửi, giúp client nhận biết ngay lập tức cổng đang đóng.
  • LOG: Ghi thông tin chi tiết của gói tin vào nhật ký hệ thống syslog (`/var/log/messages` hoặc `/var/log/syslog`) để phục vụ kiểm tra điều tra mà không làm gián đoạn luồng gói tin.

Thuê VPS giá rẻ

Full quyền Root, CPU Intel Gold, SSD NVMe U.2 từ 50K/tháng

Sở hữu máy chủ riêng để thực hành Iptables an toàn

Học cấu hình tường lửa đòi hỏi quyền quản trị nhân Linux cao nhất. Với nền tảng VPS tại Fast Byte, bạn có toàn quyền cài đặt, thử nghiệm kịch bản lọc mạng mà không bị giới hạn chính sách như trên môi trường shared hosting.

Xem bảng giá VPS Linux

3. Cú pháp chuẩn và các tham số lệnh Iptables cơ bản

Để thao tác với iptables, bạn bắt buộc phải có quyền quản trị cao nhất trên máy chủ. Hãy đảm bảo bạn hiểu rõ bản chất quyền root là gì trước khi chạy các lệnh can thiệp sâu vào nhân hệ điều hành.

Cú pháp chuẩn của một lệnh iptables hoàn chỉnh:

iptables -t [table] [command] [chain] [matches/conditions] -j [target]

Nếu bạn không khai báo tham số -t [table], hệ thống sẽ tự động gán mặc định là bảng filter.

Tham số (Flag) Tên đầy đủ Ý nghĩa & Ví dụ sử dụng
-A –append Nối thêm một rule mới vào cuối chuỗi chỉ định (ví dụ: iptables -A INPUT ...).

Cú pháp:

iptables [-t table] --append [chain] [parameters]

-I –insert Chèn rule vào vị trí mong muốn (nếu không ghi số thứ tự, rule sẽ được đưa lên dòng 1 ưu tiên cao nhất).
-D –delete Xóa một rule theo số thứ tự dòng hoặc theo toàn bộ điều kiện khai báo chi tiết.

Cú pháp:

iptables [-t table] --delete [chain] [rule_number]

-L –list Hiển thị danh sách các rule hiện đang hoạt động trong các chain.
-F –flush Xóa toàn bộ các rule trong bảng (Cực kỳ cẩn thận khi sử dụng lệnh này trên terminal).
-p –protocol Xác định giao thức mạng của gói tin: tcp, udp, icmp hoặc all.Cú pháp:

iptables [-t table] -A [chain] -p {protocol_name} -j {target}

-s –source Địa chỉ IP nguồn hoặc subnet dạng CIDR (ví dụ: 192.168.1.50 hoặc 10.0.0.0/24).

Cú pháp:

iptables [-t table] -A [chain] -s {source_address} [target]

–dport –destination-port Cổng đích của gói tin mạng (yêu cầu đi kèm khai báo cờ -p tcp hoặc -p udp).
-j –jump Chỉ định hành động xử lý tiếp theo nếu gói tin thỏa mãn: ACCEPT, DROP, REJECT, LOG.

Đối với các bạn mới làm quen với giao diện dòng lệnh Linux, việc thành thạo những cú pháp trên là tiền đề quan trọng, có thể tham khảo bổ sung bảng tổng hợp các lệnh Linux cơ bản để tự tin quản trị terminal hơn.

4. Hướng dẫn từng bước cấu hình Iptables cho VPS an toàn

Một máy chủ ảo (VPS) Linux khi vừa mới khởi tạo thường ở trạng thái mặc định: hàng ngàn cổng mạng bị phơi bày trực tiếp ra Internet mà không có rào chắn bảo vệ. Chỉ trong vòng vài phút sau khi có địa chỉ IP công khai, các hệ thống botnet quét tự động đã có thể tìm thấy và bắt đầu thực hiện các đợt dò quét lỗ hổng hay tấn công dò mật khẩu (brute-force) cổng SSH.

Để bảo vệ máy chủ, công cụ tường lửa nhân Linux iptables là giải pháp hàng đầu. Tuy nhiên, cú pháp dòng lệnh tương đối phức tạp và nguy cơ tự khóa chính mình ra khỏi máy chủ (lockout) khiến nhiều người e ngại.Dưới đây là quy trình chuẩn hóa gồm 6 bước thiết lập iptables an toàn. Bạn cần thực hiện tuần tự từ bước 1 đến bước 6, tuyệt đối không nhảy bước, bởi mỗi thao tác đều là nền móng vững chắc cho bước tiếp theo.

Bước 1: Rà soát, sao lưu và dọn dẹp các quy tắc Iptables cũ

Trước khi can thiệp vào hệ thống tường lửa, bạn cần biết máy chủ đang áp dụng những quy tắc nào và phải tạo bản dự phòng để có thể khôi phục ngay khi gặp sự cố mạng.

1. Kiểm tra trạng thái rules hiện tại

Để xem toàn bộ các quy tắc đang hoạt động trên VPS, hãy thực thi câu lệnh:

sudo iptables -L -v -n
  • -L (List): Liệt kê danh sách tất cả các rule trong bảng hiện hành.
  • -v (Verbose): Hiển thị chi tiết lưu lượng, bao gồm số lượng gói tin (packets) và dung lượng dữ liệu (bytes) đã khớp với từng quy tắc.
  • -n (Numeric): Bắt buộc hiển thị địa chỉ IP và số hiệu cổng ở dạng số thay vì mất thời gian tra cứu phân giải tên miền (DNS reverse), giúp phản hồi lệnh tức thì.

2. Sao lưu cấu hình iptables dự phòng

Hãy lưu lại toàn bộ bảng quy tắc hiện thời vào một tệp tin sao lưu trước khi chỉnh sửa:

sudo iptables-save > /root/iptables.bak

Tệp tin /root/iptables.bak sẽ là “phao cứu sinh” giúp bạn khôi phục lại trạng thái mạng ban đầu nếu cấu hình mới xảy ra lỗi.

3. Dọn sạch các quy tắc cũ

Khi đã có bản sao lưu, tiến hành xóa trắng toàn bộ các quy tắc cũ bằng lệnh Flush:

sudo iptables -F
Lưu ý: Lệnh -F chỉ xóa các rule trong chuỗi chứ không thay đổi chính sách mặc định (Default Policy). Nếu chính sách mặc định hiện tại của chuỗi INPUT đang là DROP, việc chạy lệnh -F mà không thiết lập rule cho phép ngay lập tức sẽ ngắt kết nối phiên làm việc của bạn. Vì vậy, hãy chuyển ngay sang Bước 2.

Bước 2: Thiết lập quy tắc giữ kết nối SSH (Port 22) — Tuyệt đối không bỏ qua

Đây là bước quan trọng nhất quyết định bạn có duy trì được quyền truy cập VPS hay không. Nếu bỏ quên bước này hoặc chuyển sang bước khóa cổng trước, bạn sẽ bị tước quyền truy cập từ xa vĩnh viễn và chỉ có thể cứu trợ thông qua KVM/VNC Console của nhà cung cấp.

Hãy thêm ngay quy tắc cho phép lưu lượng SSH đi vào VPS:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Giải thích chi tiết các thành phần trong lệnh:

  • -A INPUT (Append): Bổ sung quy tắc mới này vào vị trí cuối cùng của chuỗi INPUT (chuỗi kiểm soát dữ liệu đi vào máy chủ).
  • -p tcp: Quy định áp dụng riêng cho giao thức mạng TCP.
  • --dport 22 (Destination Port): Chỉ định cổng đích là 22 (cổng quản trị SSH tiêu chuẩn).
  • -j ACCEPT (Jump): Quyết định hành động là chấp thuận (ACCEPT) cho gói tin đi qua.

Trường hợp dùng cổng SSH tùy chỉnh: Nếu bạn đã đổi cổng SSH sang một cổng khác (ví dụ 2222), hãy thay thế --dport 22 bằng --dport 2222. Trước khi gõ lệnh, bạn có thể kiểm tra cổng SSH thực tế đang lắng nghe bằng câu lệnh:

ss -tlnp | grep sshd

Bước 3: Cấu hình hai quy tắc nền tảng (Loopback và ESTABLISHED)

Hai quy tắc này thường bị người mới bỏ qua. Việc thiếu chúng là lý do phổ biến khiến web server không thể kết nối tới cơ sở dữ liệu nội bộ, hoặc máy chủ không thể tải các bản cập nhật phần mềm (apt update, yum update) dù đã mở cổng web.

1. Cho phép giao diện lặp nội bộ (Loopback Interface)

Giao diện loopback (lo) là kênh truyền thông khép kín bên trong cùng một máy chủ. Ví dụ: Nginx giao tiếp với PHP-FPM, hoặc ứng dụng web gọi đến MySQL qua IP cục bộ 127.0.0.1 đều diễn ra qua cổng này.

sudo iptables -A INPUT -i lo -j ACCEPT

Tham số -i lo (In-Interface) chỉ định quy tắc áp dụng cho mọi gói tin đi vào qua giao diện loopback.

2. Duy trì các kết nối hợp lệ đã được thiết lập (ESTABLISHED, RELATED)

Khi VPS của bạn chủ động gửi một yêu cầu ra bên ngoài Internet (chẳng hạn tải package hoặc gọi API), máy chủ từ xa sẽ gửi dữ liệu phản hồi về. Nếu không có quy tắc này, dữ liệu phản hồi gửi về sẽ bị chặn lại ở chiều đi vào (INPUT), khiến các lệnh mạng như curl, wget hay apt bị treo vô thời hạn:

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Ý nghĩa: Tham số -m state gọi module theo dõi trạng thái gói tin của Netfilter, và --state ESTABLISHED,RELATED cho phép các gói tin thuộc phiên kết nối đang diễn ra hoặc có liên quan mật thiết được thông qua an toàn.

Bước 4: Mở các cổng dịch vụ thiết yếu (Web Server, Database)

Sau khi hạ tầng cơ bản đã ổn định, bạn tiến hành mở các cổng giao tiếp dành riêng cho các dịch vụ đang chạy trên VPS bằng cờ --dport.

1. Mở cổng cho dịch vụ Web (HTTP & HTTPS)

Dù VPS của bạn sử dụng Apache, Nginx hay LiteSpeed, cổng 80 và cổng 443 là hai cổng bắt buộc phải mở để người dùng có thể truy cập website:

# Mở cổng 80 cho giao thức HTTP thường
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# Mở cổng 443 cho giao thức bảo mật HTTPS
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

2. Mở cổng cơ sở dữ liệu (MySQL/MariaDB – Port 3306) có chọn lọc

Cổng cơ sở dữ liệu là mục tiêu hàng đầu của các cuộc tấn công khai thác. Tuyệt đối không bao giờ mở cổng 3306 ra toàn bộ Internet công cộng.

Nếu ứng dụng web nằm trên một máy chủ riêng biệt và cần kết nối đến database trên VPS này, bạn chỉ mở cổng và giới hạn cho phép duy nhất địa chỉ IP của máy chủ ứng dụng đó (ví dụ IP là 10.0.0.5):

sudo iptables -A INPUT -p tcp --dport 3306 -s 10.0.0.5 -j ACCEPT

Tham số -s 10.0.0.5 (Source) đảm bảo rằng chỉ các gói tin xuất phát chính xác từ địa chỉ IP này mới được chấp nhận vào cổng 3306; mọi IP lạ khác đều sẽ bị từ chối.

Bước 5: Chuyển đổi chính sách mặc định (Default Policy) sang DROP

Đây là bước quyết định để hoàn thiện bức tường lửa theo nguyên tắc bảo mật đa tầng: Đóng sập toàn bộ các cổng mạng còn lại.

Khi chính sách mặc định được chuyển sang DROP, bất kỳ gói tin nào đi vào VPS mà không khớp với các quy tắc cho phép đã khai báo ở Bước 2, Bước 3 và Bước 4 sẽ bị loại bỏ âm thầm.

# Thiết lập DROP mặc định cho luồng dữ liệu vào (INPUT)
sudo iptables -P INPUT DROP

# Thiết lập DROP mặc định cho luồng chuyển tiếp (FORWARD)
sudo iptables -P FORWARD DROP

Tham số -P (Policy) có nhiệm vụ áp đặt chính sách mặc định cho toàn bộ chuỗi. Riêng chuỗi OUTPUT (dữ liệu từ VPS đi ra ngoài) bạn vẫn nên giữ nguyên là ACCEPT để VPS có thể tải tài nguyên, cài đặt phần mềm và gọi dịch vụ bên ngoài bình thường.

Hãy kiểm tra thật kỹ trước khi chạy lệnh này. Nếu bạn chưa tạo quy tắc cho phép cổng SSH ở Bước 2 (hoặc gõ sai số cổng), phiên kết nối terminal hiện tại sẽ bị ngắt ngay lập tức và bạn sẽ bị khóa bên ngoài.

Bước 6: Lưu cấu hình Iptables vĩnh viễn (Persistent) để không mất sau khi Reboot

Mặc định, toàn bộ quy tắc của iptables chỉ được lưu tạm thời trên bộ nhớ RAM của hệ thống. Mỗi khi bạn khởi động lại VPS (reboot), các thiết lập này sẽ biến mất hoàn toàn và tường lửa trở về trạng thái trống.

Để đảm bảo các quy tắc tự động kích hoạt lại sau mỗi lần boot máy, hãy áp dụng giải pháp tương ứng với hệ điều hành đang dùng:

Dành cho Ubuntu / Debian

Cài đặt gói công cụ iptables-persistent:

sudo apt install iptables-persistent -y

Trong quá trình cài đặt, giao diện dòng lệnh sẽ xuất hiện màn hình màu xanh hỏi bạn có muốn lưu cấu hình IPv4 và IPv6 hiện tại không — hãy chọn Yes cho cả hai lựa chọn. Hệ thống sẽ tự động xuất cấu hình vào hai tệp tin /etc/iptables/rules.v4/etc/iptables/rules.v6.

Sau này, mỗi khi bạn thay đổi hoặc bổ sung thêm quy tắc mới cho iptables, chỉ cần chạy lệnh sau để cập nhật lại:

sudo netfilter-persistent save

Dành cho CentOS / AlmaLinux / Rocky Linux

Sử dụng công cụ iptables-save để ghi cấu hình ra tệp tin mà hệ thống tự động đọc khi khởi động:

sudo iptables-save > /etc/sysconfig/iptables

Tiếp theo, kích hoạt dịch vụ iptables khởi động cùng hệ thống:

sudo systemctl enable iptables
sudo systemctl start iptables

Tổng kết quy trình

Sau khi hoàn tất 6 bước trên, bạn đã xây dựng được một hệ thống phòng thủ tường lửa cơ bản nhưng cực kỳ an toàn cho VPS Linux:

  1. Toàn bộ các cổng không sử dụng đều được đóng kín (DROP).
  2. Chỉ mở đúng cổng SSH cần thiết và mở cho cổng dịch vụ Web (80, 443).
  3. Các cổng dữ liệu nhạy cảm như MySQL được giới hạn chặt chẽ theo IP nguồn.
  4. Quy tắc được lưu trữ vĩnh viễn, duy trì ổn định ngay cả khi khởi động lại máy chủ.

Bạn có thể chủ động khởi động lại VPS một lần (sudo reboot) rồi chạy lại lệnh sudo iptables -L -v -n để kiểm tra và xác nhận mọi thiết lập vẫn được lưu trữ nguyên vẹn.

Thuê VPS giá rẻ

Băng thông không giới hạn, Network Port 100 Mbps ổn định

Tối ưu hệ thống cùng hạ tầng VPS ổn định

Một cấu hình tường lửa chuẩn chỉnh sẽ phát huy tối đa công năng khi chạy trên nền tảng phần cứng mạnh mẽ. Fast Byte cung cấp VPS trang bị CPU Intel Gold và ổ cứng SSD NVMe U.2 giúp xử lý bảng định tuyến mạng nhanh chóng.

Khám phá VPS Fast Byte

5. Cách lưu Rules Iptables vĩnh viễn không mất khi Reboot

Một nhược điểm cố hữu của iptables là mặc định các quy tắc chỉ lưu tạm thời trên bộ nhớ RAM. Khi máy chủ khởi động lại hoặc tắt nguồn đột ngột, toàn bộ các rule bạn vừa tạo sẽ biến mất hoàn toàn và hệ thống quay lại trạng thái trắng ban đầu. Do đó, bạn cần thiết lập cơ chế lưu vĩnh viễn (Persistent).

5.1. Dành cho Ubuntu và Debian

Nếu bạn đang sử dụng hệ điều hành thông dụng này (tìm hiểu thêm tại bài viết giới thiệu Ubuntu là gì), giải pháp tối ưu nhất là sử dụng gói công cụ iptables-persistent:

# Cập nhật và cài đặt gói iptables-persistent
sudo apt update
sudo apt install iptables-persistent netfilter-persistent -y

# Lưu các rule hiện tại vào file cấu hình
sudo netfilter-persistent save

# Nạp lại các rule khi cần thiết
sudo netfilter-persistent reload

Quy tắc IPv4 sẽ được tự động lưu trữ tại file đường dẫn: /etc/iptables/rules.v4.

5.2. Dành cho CentOS và RHEL

Trên các bản phân phối thuộc nhánh Enterprise Linux (CentOS / AlmaLinux / Rocky Linux), bạn sử dụng dịch vụ iptables-services:

# Cài đặt gói dịch vụ
sudo yum install iptables-services -y

# Bật dịch vụ khởi động cùng hệ điều hành
sudo systemctl enable iptables

# Lưu cấu hình hiện tại vào file /etc/sysconfig/iptables
sudo service iptables save

6. So sánh Iptables với UFW, Firewalld và Nftables

Trong hệ sinh thái Linux hiện nay, có nhiều công cụ tường lửa khác nhau. Bảng đối chiếu dưới đây sẽ giúp bạn hiểu rõ vai trò và lựa chọn giải pháp tương thích cho dự án của mình:

Tiêu chí Iptables UFW (Ubuntu) Nftables
Bản chất kỹ thuật Công cụ cấu hình Netfilter trực tiếp Giao diện đơn giản hóa phía trên Iptables/Nftables Bộ khung thay thế thế hệ mới cho Iptables
Mức độ phức tạp cú pháp Trung bình – Cao (Nhiều cờ tham số) Rất thấp (Câu lệnh tự nhiên như ufw allow 80) Trung bình (Cú pháp nhất quán, dạng cấu trúc khối)
Hiệu năng xử lý danh sách lớn Giảm dần nếu danh sách có hàng nghìn rules Phụ thuộc vào backend bên dưới Rất cao nhờ cấu trúc tra cứu Sets/Dictionaries tối ưu
Hỗ trợ IPv4 và IPv6 Tách riêng 2 lệnh: iptablesip6tables Tự động đồng bộ cấu hình cả hai Tích hợp chung trong cùng một bảng (họ inet)
Mức độ tương thích Docker Tương thích nguyên bản, Docker tự tạo chain riêng Dễ xung đột chính sách port mapping với Docker Tương thích thông qua lớp chuyển dịch iptables-nft

7. Các câu hỏi thường gặp về Iptables (FAQ)

Hành động DROP và REJECT khác nhau thế nào trong Iptables?

DROP âm thầm hủy bỏ gói tin và không gửi phản hồi, khiến đối tượng quét cổng phải chờ đến khi hết hạn (timeout). REJECT từ chối gói tin nhưng gửi trả lại một thông báo lỗi ICMP. Đối với môi trường Internet công cộng, bạn nên ưu tiên DROP để che giấu sự tồn tại của máy chủ.

Tôi phải làm gì nếu lỡ tay khóa cổng SSH và không thể truy cập vào VPS?

Nếu bạn chưa lưu vĩnh viễn (persistent), hãy sử dụng bảng điều khiển quản trị VPS để khởi động lại máy chủ (Reboot), các rule tạm thời sẽ biến mất. Nếu rule đã được lưu, bạn hãy đăng nhập thông qua bảng điều khiển ảo VNC Console do nhà cung cấp máy chủ cung cấp để đăng nhập trực tiếp và gỡ rule.

Làm thế nào để xóa một rule cụ thể trong Iptables nhanh nhất?

Đầu tiên, chạy lệnh sudo iptables -L INPUT -n --line-numbers để xem số thứ tự của rule muốn xóa. Sau đó, dùng lệnh xóa trực tiếp theo số thứ tự dòng, ví dụ: sudo iptables -D INPUT 3 để loại bỏ rule ở dòng thứ 3 mà không cần gõ lại điều kiện.

Iptables có tự động quản lý kết nối của Docker Container không?

Có. Docker Daemon khi khởi động sẽ tự động tạo thêm các chuỗi tùy chỉnh như DOCKERDOCKER-USER trong bảng filter và nat. Để can thiệp vào các gói tin đi vào container Docker, bạn cần chèn rule vào chuỗi DOCKER-USER thay vì chuỗi INPUT thông thường.

Nftables có thay thế hoàn toàn Iptables trên các bản Linux mới không?

Trên các hệ điều hành mới như Debian 11/12 hay RHEL 8/9, Nftables đã trở thành backend mặc định. Tuy nhiên, lệnh iptables vẫn được duy trì thông qua lớp tương thích iptables-nft, cho phép bạn tiếp tục sử dụng cú pháp iptables quen thuộc mà nhân hệ điều hành vẫn thực thi trên nền Nftables.

8. Tổng kết và lời khuyên thực chiến

Hiểu rõ iptables là gì cùng cơ chế phối hợp giữa Tables, Chains và Targets sẽ biến bạn thành một người làm chủ hệ thống thực thụ thay vì chỉ đi copy các đoạn lệnh rời rạc trên mạng. Hãy luôn ghi nhớ ba nguyên tắc: luôn mở cổng SSH trước khi đổi Default Policy, kiểm tra kỹ thứ tự ưu tiên của các rule bằng cờ --line-numbers, và thực hiện lưu vĩnh viễn cấu hình sau khi đã kiểm tra an toàn.

Bạn cần một VPS Linux độc lập để thử nghiệm Firewall?

Fast Byte cung cấp máy chủ ảo cá nhân hóa, toàn quyền quản trị cao nhất với chi phí khởi điểm cực thấp, sẵn sàng cho mọi nhu cầu học tập và triển khai dự án.

Đăng ký thuê VPS giá rẻ ngay

Lưu ý kỹ thuật: Toàn bộ thông tin và câu lệnh trong bài viết mang tính chất hướng dẫn tham khảo dựa trên tài liệu chuẩn của Linux Netfilter. Quy trình áp dụng thực tế có thể thay đổi phụ thuộc vào bản phân phối Linux (Distro), phiên bản nhân Kernel, các dịch vụ tường lửa trung gian đang chạy (như UFW, Firewalld) hoặc cấu hình mạng đặc thù. Bạn luôn nên thử nghiệm trước trên môi trường Staging/Lab và sao lưu cấu hình trước khi áp dụng trên các máy chủ Production.

Chia sẻ: Facebook LinkedIn
Quay lại trang blog

Bài viết liên quan