Trang chủHướng dẫnListing và delete iptables rule: Chi tiết từ A – Z
Firewall
Networking

Listing và delete iptables rule: Chi tiết từ A – Z

CyStack blog 8 phút để đọc
CyStack blog12/05/2025
Locker Avatar

Cú Già

Chuyên gia phân tích tình báo mạng với 8 năm kinh nghiệm theo dõi các chiến dịch tấn công có chủ đích trên toàn cầu, xây dựng các báo cáo chi tiết về hành vi của tin tặc. Cú mong muốn giúp các tổ chức nhận diện rủi ro từ dark web và các mối đe dọa bên trong tổ chức. Hy vọng các bài viết của Cú Già này sẽ đem đến nhiều kiến thức hữu ích cho anh em trong ngành
Locker logo social
Reading Time: 8 minutes

Iptables là tường lửa đóng vai trò then chốt trong việc bảo vệ hệ thống mạng trên hầu hết các hệ điều hành Linux. Ngoài các quy tắc bảo mật cơ bản, tôi sẽ chia sẻ cách quản lý, list và delete iptables rule mà tôi thường sử dụng.

Các nội dung chính trong bài hướng dẫn này sẽ bao gồm:

  • Quy tắc liệt kê (listing)
  • Xóa bộ đếm gói và byte
  • Quy tắc xóa (delete rule)
  • Xóa chuỗi (xóa tất cả quy tắc trong một chuỗi)
  • Xóa tất cả chuỗi và bảng, xóa tất cả chuỗi và chấp nhận tất cả lưu lượng

Lưu ý: Hướng dẫn này giả định rằng bạn đang sử dụng một máy chủ Linux đã cài đặt lệnh iptables và có quyền sudo.

https://cystack.net/vi/tutorial/delete-iptables-rule

Listing rule theo Specification

Có 2 cách để xem các quy tắc iptables có đang hoạt động hay không: trong một bảng hoặc dưới dạng danh sách các specification. Cả 2 phương pháp đều cung cấp thông tin gần giống nhau ở các định dạng khác nhau.

Để liệt kê tất cả các quy tắc iptables đang hoạt động theo đặc tả, hãy chạy lệnh iptables với tùy chọn -S:

sudo iptables -S

Đầu ra

P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N ICMP
-N TCP
-N UDP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
...

Bạn có thể thấy, đầu ra trông giống như các lệnh đã được sử dụng để tạo, không có lệnh iptables đứng trước. Tương tự các tệp cấu hình quy tắc iptables, nếu bạn đã từng sử dụng iptables-persistent hoặc iptables save.

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

Nếu bạn muốn giới hạn đầu ra cho một chuỗi cụ thể (INPUT, OUTPUT, TCP, v.v.), bạn có thể chỉ định tên chuỗi trực tiếp sau tùy chọn -S. Ví dụ: để hiển thị tất cả các đặc tả quy tắc trong chuỗi TCP, bạn dùng lệnh:

sudo iptables -S TCP

Đầu ra

N TCP
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT

Tiếp theo, tôi sẽ chia sẻ các quy tắc iptables đang hoạt động: dưới dạng bảng quy tắc.

Listing rule theo Table

Liệt kê các quy tắc iptables trong chế độ xem bảng sẽ phù hợp khi bạn muốn so sánh các quy tắc khác nhau với nhau. Để xuất tất cả các quy tắc iptables đang hoạt động trong một bảng, hãy chạy lệnh iptables với tùy chọn -L:

sudo iptables -L

Lệnh này sẽ xuất tất cả các quy tắc hiện tại được sắp xếp theo chuỗi.

Nếu bạn muốn giới hạn đầu ra cho một chuỗi cụ thể (INPUT, OUTPUT, TCP, v.v.), hãy chỉ định tên chuỗi trực tiếp sau tùy chọn -L.

Ví dụ về chuỗi INPUT:

sudo iptables -L INPUT

Đầu ra

Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere             ctstate INVALID
UDP        udp  --  anywhere             anywhere             ctstate NEW
TCP        tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
ICMP       icmp --  anywhere             anywhere             ctstate NEW
REJECT     udp  --  anywhere             anywhere             reject-with icmp-port-unreachable
REJECT     tcp  --  anywhere             anywhere             reject-with tcp-reset
REJECT     all  --  anywhere             anywhere             reject-with icmp-proto-unreachable

Dòng đầu tiên của đầu ra cho biết tên chuỗi (INPUT, trong trường hợp này), theo sau là chính sách mặc định của nó (DROP). Dòng tiếp theo bao gồm các tiêu đề của mỗi cột trong bảng và theo sau là các quy tắc của chuỗi. Ý nghĩa của mỗi tiêu đề:

  • target: Nếu một gói tin khớp với quy tắc, mục tiêu chỉ định những gì cần làm với nó. Ví dụ: một gói tin có thể được chấp nhận, loại bỏ, ghi nhật ký hoặc gửi đến một chuỗi khác để so sánh với nhiều quy tắc hơn.
  • prot: Giao thức, chẳng hạn như tcp, udp, icmp hoặc all.
  • opt: Ít được sử dụng, cột này cho biết các tùy chọn IP.
  • source: Địa chỉ IP nguồn hoặc mạng con của lưu lượng hoặc anywhere.
  • destination: Địa chỉ IP đích hoặc mạng con của lưu lượng hoặc anywhere.

Cột cuối cùng, không được gắn nhãn, cho biết các tùy chọn của một quy tắc. Đây là bất kỳ phần nào của quy tắc không được chỉ định bởi các cột trước đó. Tức là bất cứ thứ gì từ cổng nguồn và đích đến trạng thái kết nối của gói tin.

Hiển thị Số lượng Gói tin và Tổng Kích thước

Khi liệt kê các quy tắc iptables, cũng có thể hiển thị số lượng gói tin và tổng kích thước của các gói tin tính bằng byte, khớp với mỗi quy tắc cụ thể. Trường hợp này sử dụng khi bạn muốn nắm được sơ bộ về quy tắc nào đang khớp với các gói tin. Để làm như vậy, hãy sử dụng các tùy chọn -L-v cùng nhau.

Ví dụ: hãy xem lại chuỗi INPUT, với tùy chọn -v:

sudo iptables -L INPUT -v

Đầu ra

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 284K   42M ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere
    0     0 DROP       all  --  any    any     anywhere             anywhere             ctstate INVALID
  396 63275 UDP        udp  --  any    any     anywhere             anywhere             ctstate NEW
17067 1005K TCP        tcp  --  any    any     anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
 2410  154K ICMP       icmp --  any    any     anywhere             anywhere             ctstate NEW
  396 63275 REJECT     udp  --  any    any     anywhere             anywhere             reject-with icmp-port-unreachable
 2916  179K REJECT     all  --  any    any     anywhere             anywhere             reject-with icmp-proto-unreachable
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh ctstate NEW,ESTABLISHED

Lưu ý rằng danh sách hiện có hai cột bổ sung, pktsbytes.

Có thể bạn quan tâm: Công cụ giám sát log

Đặt lại số lượng gói tin và tổng kích thước

Nếu bạn muốn xóa hoặc đặt về 0 bộ đếm gói tin và byte cho các quy tắc của mình, hãy sử dụng tùy chọn -Z. Chúng cũng được đặt lại nếu xảy ra khởi động lại. Trường hợp sử dụng là khi bạn muốn xem máy chủ của mình có đang nhận lưu lượng mới khớp với các quy tắc hiện có hay không.

Để xóa bộ đếm cho tất cả các chuỗi và quy tắc, hãy chỉ sử dụng tùy chọn -Z:

sudo iptables -Z

Để xóa bộ đếm cho tất cả các quy tắc trong một chuỗi cụ thể, hãy sử dụng tùy chọn -Z và chỉ định chuỗi. Ví dụ: để xóa bộ đếm chuỗi INPUT, hãy chạy lệnh này:

sudo iptables -Z INPUT

Nếu bạn muốn xóa bộ đếm cho một quy tắc cụ thể, hãy chỉ định tên chuỗi và số quy tắc. Ví dụ: để đặt về không bộ đếm cho quy tắc đầu tiên trong chuỗi INPUT, hãy chạy lệnh này:

sudo iptables -Z INPUT 1

Bây giờ bạn đã biết cách đặt lại bộ đếm gói tin và byte iptables, hãy xem hai phương pháp có thể được sử dụng để xóa chúng.

Đọc thêm: Phishing simulation tools

Delete iptables rule theo specification

Một cách để xóa các quy tắc iptables là theo đặc tả quy tắc. Để làm như vậy, bạn có thể chạy lệnh iptables với tùy chọn -D theo sau là đặc tả quy tắc. Nếu bạn muốn xóa quy tắc bằng phương pháp này, bạn có thể sử dụng đầu ra của danh sách quy tắc, iptables -S, để được trợ giúp.

Ví dụ: nếu bạn muốn xóa quy tắc loại bỏ các gói tin đến không hợp lệ (-A INPUT -m conntrack –ctstate INVALID -j DROP), bạn có thể chạy lệnh này:

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

Lưu ý: tùy chọn -A, được sử dụng để chỉ định vị trí quy tắc tại thời điểm tạo, nên được loại trừ ở đây.

Delete iptables theo chuỗi và số

Cách khác để elete iptables rule là xóa theo chuỗisố dòng của nó. Để xác định số dòng của quy tắc, hãy liệt kê các quy tắc ở định dạng bảng và thêm tùy chọn --line-numbers:

sudo iptables -L --line-numbers

Đầu ra

Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
2    ACCEPT     all  --  anywhere             anywhere
3    DROP       all  --  anywhere             anywhere             ctstate INVALID
4    UDP        udp  --  anywhere             anywhere             ctstate NEW
5    TCP        tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
6    ICMP       icmp --  anywhere             anywhere             ctstate NEW
7    REJECT     udp  --  anywhere             anywhere             reject-with icmp-port-unreachable
8    REJECT     tcp  --  anywhere             anywhere             reject-with tcp-reset
9    REJECT     all  --  anywhere             anywhere             reject-with icmp-proto-unreachable
10   ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW,ESTABLISHED
...

Điều này thêm số dòng vào mỗi hàng quy tắc, được chỉ định bởi tiêu đề num.

Khi bạn biết quy tắc nào bạn muốn xóa, hãy ghi lại chuỗi và số dòng của quy tắc. Sau đó chạy lệnh iptables -D theo sau là chuỗi và số quy tắc.

Ví dụ: nếu chúng ta muốn xóa quy tắc đầu vào loại bỏ các gói tin không hợp lệ, chúng ta có thể thấy rằng đó là quy tắc 3 của chuỗi INPUT. Bạn dùng lệnh:

sudo iptables -D INPUT 3

Xóa chuỗi (Flush Chains)

Có 1 cách xóa Iptables rule là xóa tất cả các quy tắc trong một chuỗi, hay xóa một chuỗi.

💡 Lưu ý:Hãy cẩn thận để không tự lock mình khỏi máy chủ qua SSH bằng cách xóa một chuỗi có chính sách mặc định là drop hoặc deny. Nếu lỡ bị lock, bạn có thể cần kết nối thông qua console để khắc phục quyền truy cập của mình.

Xóa một chuỗi đơn lẻ

Để xóa một chuỗi cụ thể, thao tác này sẽ xóa tất cả các quy tắc trong chuỗi, bạn có thể sử dụng tùy chọn -F hoặc tùy chọn tương đương --flush và tên của chuỗi cần xóa.

Ví dụ: để xóa tất cả các quy tắc trong chuỗi INPUT, hãy chạy lệnh:

sudo iptables -F INPUT

Xóa tất cả chuỗi

Để xóa tất cả các chuỗi, thao tác này sẽ xóa tất cả các quy tắc tường lửa, bạn có thể sử dụng tùy chọn -F hoặc tùy chọn tương đương --flush:

sudo iptables -F

Xóa tất cả quy tắc, xóa tất cả chuỗi và chấp nhận tất cả

Lưu ý: Thao tác này sẽ vô hiệu hóa tường lửa của bạn. Bạn chỉ nên làm theo phần này nếu bạn muốn bắt đầu lại cấu hình tường lửa của mình.

Đầu tiên, đặt chính sách mặc định cho mỗi chuỗi tích hợp thành ACCEPT. Mục đích là để đảm bảo rằng bạn sẽ không bị khóa khỏi máy chủ của mình qua SSH:

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

Sau đó, xóa các bảng natmangle, xóa tất cả các chuỗi (-F) và xóa tất cả các chuỗi không mặc định (-X):

sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X

Tường lửa của bạn bây giờ sẽ cho phép tất cả lưu lượng mạng. Nếu bạn liệt kê các quy tắc của mình ngay bây giờ, bạn sẽ thấy không có quy tắc nào và chỉ còn lại ba chuỗi mặc định (INPUT, FORWARD và OUTPUT).

Lời kết:

Tôi hi vọng với các thông tin trong bài viết này, bạn đã nắm được cách list, và delete iptables rule. Tôi sẽ có nhiều nội dụng khác kiên quan đến iptables, ubuntu trong các bài viết tiếp theo của mình. Nếu bạn đọc quan tâm, hãy đăng ký nhận newsletter để không bỏ lỡ các thông tin mới nhất.

Mời bạn tìm hiểu thêm các bài viết cùng chủ đề:

0 Bình luận

Đăng nhập để thảo luận

CyStack blog

Mẹo, tin tức, hướng dẫn và các best practice độc quyền của CyStack

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.