Quản lý iptables: Liệt kê và Xóa các Quy tắc Tường lửa

Ngày đăng: July 17, 2025

Security

description image

Giới thiệu về iptables

Iptables là một công cụ tường lửa được sử dụng để quản lý các quy tắc truy cập mạng trên Linux. Hướng dẫn này sẽ giúp bạn thực hiện các tác vụ liên quan đến:

  • Liệt kê các quy tắc
  • Xóa bộ đếm gói tin và byte
  • Xóa các quy tắc
  • Làm rỗng các chuỗi (xóa tất cả quy tắc trong chuỗi)
  • Làm rỗng tất cả các chuỗi và bảng, xóa tất cả chuỗi, và cho phép tất cả lưu lượng

Lưu ý: Khi làm việc với tường lửa, hãy cẩn thận để không chặn mất kết nối SSH (cổng 22). Nếu mất truy cập, bạn có thể cần kết nối qua console để khôi phục.


Yêu cầu trước khi bắt đầu

Hướng dẫn giả sử bạn đang sử dụng máy chủ Linux có lệnh iptables được cài đặt và tài khoản người dùng có quyền sudo.

Nếu bạn cần trợ giúp thiết lập ban đầu, hãy tham khảo hướng dẫn Cài đặt Máy chủ với Ubuntu 20.04, Debian hoặc CentOS.


Liệt kê các quy tắc theo định nghĩa (Specification)

Có hai cách để xem các quy tắc iptables đang hoạt động: xem dưới dạng bảng hoặc danh sách các quy tắc chi tiết.

Để liệt kê tất cả quy tắc đang dùng dưới dạng danh sách chi tiết, sử dụng lệnh:

sudo iptables -S

Kết quả xuất ra sẽ giống như các lệnh đã tạo ra các quy tắc này, nhưng không có tiền tố iptables.

Liệt kê chuỗi cụ thể

Để giới hạn hiển thị vào một chuỗi cụ thể, đặt tên chuỗi sau -S. Ví dụ để xem quy tắc trong chuỗi TCP:

sudo iptables -S TCP

Liệt kê quy tắc dưới dạng bảng

Bạn có thể liệt kê các quy tắc dưới dạng bảng, giúp so sánh các quy tắc dễ hơn bằng lệnh:

sudo iptables -L

Kết quả sẽ liệt kê các quy tắc theo từng chuỗi.

Bạn cũng có thể giới hạn vào một chuỗi cụ thể như:

sudo iptables -L INPUT

Bảng có các cột:

  • target: Hành động khi gói tin khớp quy tắc (chấp nhận, bỏ, gửi đến chuỗi tiếp theo...)
  • prot: Giao thức (tcp, udp, icmp, all)
  • opt: Tùy chọn IP (ít dùng)
  • source: Địa chỉ IP nguồn hoặc 'anywhere'
  • destination: Địa chỉ IP đích hoặc 'anywhere'

Cột cuối cùng chưa được ghi nhãn chứa các tùy chọn bổ sung như trạng thái kết nối, cổng nguồn/đích.


Hiển thị số lượng gói tin và kích thước tổng thể

Sử dụng tùy chọn -v cùng với -L để hiển thị số lượng gói tin và tổng kích thước byte cho mỗi quy tắc:

sudo iptables -L INPUT -v

Hai cột mới là pkts (gói tin) và bytes (kích thước).


Đặt lại bộ đếm gói tin và byte

Để xóa, đặt lại các bộ đếm gói tin và byte về 0, sử dụng option -Z:

  • Đặt lại cho tất cả chuỗi:
sudo iptables -Z
  • Đặt lại cho một chuỗi cụ thể, ví dụ với chuỗi INPUT:
sudo iptables -Z INPUT
  • Đặt lại cho một quy tắc cụ thể (ví dụ quy tắc đầu tiên trong INPUT):
sudo iptables -Z INPUT 1

Xóa quy tắc theo định nghĩa (Specification)

Để xóa một quy tắc bằng cách sử dụng toàn bộ định nghĩa của nó, dùng option -D và định nghĩa của quy tắc (không có -A):

Ví dụ, để xóa quy tắc loại bỏ gói tin không hợp lệ:

sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP

Xóa quy tắc theo chuỗi và số thứ tự

Để biết số thứ tự của các quy tắc, liệt kê bảng với tùy chọn --line-numbers:

sudo iptables -L --line-numbers

Sau đó xóa quy tắc theo số thứ tự trong chuỗi bằng cách:

sudo iptables -D INPUT 3

(Ở đây, xóa quy tắc thứ 3 trong chuỗi INPUT)


Làm rỗng (Flush) chuỗi

Để xóa tất cả các quy tắc trong một chuỗi, sử dụng option -F hoặc --flush cùng tên chuỗi:

sudo iptables -F INPUT

Để làm trống tất cả các chuỗi:

sudo iptables -F

Cảnh báo: Hãy cẩn thận khi flush nếu chính sách mặc định chuỗi đó là drop hoặc deny để tránh bị mất kết nối SSH.


Làm rỗng tất cả quy tắc, xóa tất cả chuỗi, và chấp nhận tất cả lưu lượng

Để thiết lập iptables về trạng thái mặc định chấp nhận mọi kết nối:

  1. Đặt chính sách mặc định các chuỗi chính là ACCEPT:
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
  1. Flush bảng natmangle, flush tất cả chuỗi, và xóa tất cả chuỗi tùy chỉnh:
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X

Sau đó tường lửa không còn chặn lưu lượng nào.


Khác biệt giữa iptables -Diptables -F

Option Mô tả Mục đích Ví dụ
-D Xóa một quy tắc cụ thể trong chuỗi Dùng để xóa từng quy tắc riêng lẻ sudo iptables -D INPUT 1
-F Làm rỗng tất cả các quy tắc trong chuỗi Dùng để xóa toàn bộ quy tắc trong chuỗi sudo iptables -F INPUT

Xóa quy tắc trong các chuỗi tùy chỉnh

Nếu bạn có chuỗi tường lửa do người dùng định nghĩa (chuỗi tùy chỉnh), có thể xóa quy tắc trong đó bằng:

sudo iptables -D custom_chain 1

Thay custom_chain bằng tên chuỗi tùy chỉnh của bạn và số 1 bằng vị trí quy tắc muốn xóa.

Lưu ý cần cẩn thận khi xóa quy tắc để không làm mất an toàn hệ thống.


Một số lỗi phổ biến và cách khắc phục

  • Lỗi: “iptables: No chain/target/match by that name”

    • Nguyên nhân: chuỗi, mục tiêu hoặc bộ lọc không tồn tại.
    • Sửa: kiểm tra chính xác tên, hoặc liệt kê chuỗi hiện có sudo iptables -L. Nếu chuỗi chưa có, tạo với sudo iptables -N <tên chuỗi>.
  • Lỗi: quy tắc không bị xóa do không khớp

    • Nguyên nhân: định nghĩa quy tắc xóa không hoàn toàn trùng khớp.
    • Sửa: liệt kê quy tắc trong chuỗi dùng iptables -S <tên chuỗi> rồi đối chiếu.
  • Lỗi: xóa nhầm quy tắc khi dùng số thứ tự

    • Khắc phục: dùng -nL để liệt kê kèm số thứ tự, kiểm tra chính xác rồi mới xóa.

Câu hỏi thường gặp (FAQs)

  1. Làm thế nào để xem các quy tắc iptables đang hoạt động?

    Dùng sudo iptables -L để xem tất cả chuỗi và quy tắc, hoặc dùng sudo iptables -S để xem chi tiết lệnh tạo ra quy tắc.

  2. Làm sao để xóa một quy tắc iptables cụ thể?

    Dùng iptables -D theo chuỗi và số thứ tự quy tắc hoặc theo định nghĩa. Ví dụ:

sudo iptables -D INPUT <số thứ tự>


3. **Phân biệt giữa flush và delete là gì?**

   - Flush (dọn sạch) xóa tất cả quy tắc trong chuỗi.
   - Delete xóa một quy tắc cụ thể.

4. **Làm thế nào để xóa tất cả quy tắc trong một chuỗi?**

   Dùng `sudo iptables -F <tên chuỗi>` để xóa tất cả quy tắc trong chuỗi đó.

5. **Có thể khôi phục quy tắc iptables đã xóa không?**

   Có thể thêm lại quy tắc bằng `iptables -A` với định nghĩa quy tắc mong muốn.

---

## Kết luận

Sau khi theo dõi hướng dẫn, bạn đã biết cách liệt kê và xóa quy tắc tường lửa iptables, làm rỗng chuỗi, và phân biệt giữa các phương pháp xóa.

Lưu ý rằng các thay đổi qua lệnh `iptables` chỉ tạm thời và cần lưu cấu hình để tồn tại qua khởi động lại server. Tham khảo phần Lưu quy tắc trong hướng dẫn tổng quan về các quy tắc tường lửa cơ bản.

Để học thêm, bạn có thể tham khảo các hướng dẫn nâng cao về iptables và ufw để xây dựng hệ thống tường lửa hiệu quả cho máy chủ của mình.
Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Chia sẻ

0 câu trả lời