cách tốt nhất để xóa tất cả các quy tắc iptables


83

Tôi hiện có đoạn trích này:

# flush all chains
iptables -F
iptables -t nat -F
iptables -t mangle -F
# delete all chains
iptables -X

Có khả năng một số quy tắc không thấm nước sẽ vẫn còn sống sau khi chạy này?

Ý tưởng là để có một cấu hình iptables hoàn toàn sạch sẽ, có thể dễ dàng thay thế bằng bộ quy tắc mới (tham số nevermind tuyến / ifconfig).

Câu trả lời:


107

Để trả lời câu hỏi của bạn ngắn gọn, không: sẽ không có bất kỳ quy tắc "còn sót lại" nào sau khi xả mọi bảng. Tuy nhiên, vì lợi ích của việc kỹ lưỡng, bạn cũng có thể muốn đặt chính sách cho chuỗi tích hợp INPUTFORWARDchuỗi ACCEPT:

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X

Xóa quy tắc ip6tables:

ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT
ip6tables -t nat -F
ip6tables -t mangle -F
ip6tables -F
ip6tables -X

...Và rằng nên làm điều đó. iptables -nvLnên tạo đầu ra này (hoặc rất giống nhau):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

9
bạn đã quên về 'raw': iptables -t raw -F iptables -t raw -X
kK-Storm

there would not be any "leftover" rules after flushing every tableOP không tuôn ra mọi bàn. Bạn cũng vậy. Đây là những gì nó trông giống như nếu bạn muốn được kỹ lưỡng . Và bạn có thể muốn thêm iptables -t "$table" -Z. Xin lưu ý rằng theo cách này, bạn đang mã hóa danh sách các bảng và chuỗi của chúng. Vì vậy, tôi sẽ nghiêm túc xem xét giải pháp lưu-khôi phục . Hoặc bạn chỉ có thể dỡ iptables .
x-yuri

23

Điều này sẽ hoàn toàn thiết lập lại hệ thống iptables của bạn về trạng thái rất cơ bản:

iptables-save | awk '/^[*]/ { print $1 } 
                     /^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
                     /COMMIT/ { print $0; }' | iptables-restore

Tất cả các chính sách sẽ được đặt lại thành ACCEPT cũng như xóa sạch mọi bảng trong sử dụng hiện tại. Tất cả các chuỗi khác với chuỗi được xây dựng sẽ không còn tồn tại.


1
Hack gọn gàng! Mặc dù vậy, tôi sẽ không phụ thuộc vào nó, vì luôn có khả năng những thay đổi tinh vi đối với định dạng lưu / khôi phục có thể phá vỡ nó. Có lẽ tốt nhất để bám vào API mà iptablescông cụ cung cấp rõ ràng, IMO.
Steven Thứ Hai ngày

3
Tôi đã thay đổi suy nghĩ của mình: định dạng dữ liệu không thể thay đổi nhiều nữa, vì nó được sử dụng rất rộng rãi. +1.
Steven Thứ Hai ngày

2
+1, hack thú vị
Sam Halicke

Điều này quản lý để loại bỏ các chuỗi UFW còn sót lại, điều mà câu trả lời được chấp nhận đã không.
l0b0

Đó là một chi tiết nhỏ, nhưng bạn có thể muốn thay thế đầu tiên print $1với print $0để phù hợp :)
x-yuri

2

Bất cứ khi nào tôi cần tường lửa bị vô hiệu hóa là một cái gì đó như thế này:

  • iptables-save > iptables.bak
  • service iptables stop (tôi đang ở fedora)

1

Bạn chỉ có thể dỡ bỏ iptablescác mô-đun từ kernel:

modprobe -r iptable_raw iptable_mangle iptable_security iptable_nat iptable_filter

UPD Thật không may, quá tốt đến mức khó tin. Miễn là có một quy tắc hoặc chuỗi do người dùng xác định trong một bảng, số tham chiếu của mô-đun tương ứng là 1 và modprobe -rkhông thành công. Bạn có thể xóa các quy tắc và chuỗi do người dùng xác định như vậy:

echo $'*raw\nCOMMIT\n*mangle\nCOMMIT\n*security\nCOMMIT\n*nat\nCOMMIT\n*filter\nCOMMIT' | iptables-restore

hoặc là:

iptables-save | awk '/^[*]/ { print $1 "\nCOMMIT" }' | iptables-restore

Ngoài ra, bạn có thể muốn dỡ bỏ các mô-đun theo cách này (không có tên mô-đun mã hóa cứng):

lsmod | egrep ^iptable_ | awk '{print $1}' | xargs -rd\\n modprobe -r

Về mặt tươi sáng, sau này iptables-savetạo ra đầu ra trống đẹp :)


Đó có thể là cái búa ở đây. Cám ơn.
Konrad Gajewski

0

Người ta có thể làm điều này trong 1 hoặc 2 lệnh:

 $ sudo iptables-save > iptables.bak
 $ sudo iptables -F

Kết quả:

$ sudo iptables -nvL
Chain INPUT (policy ACCEPT 3138 packets, 5567K bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 3602 packets, 6547K bytes)
pkts bytes target     prot opt in     out     source               destination         

5
Nếu các chính sách mặc định hiện được đặt thành DROP, đây là cách nhanh chóng để bị khóa khỏi máy chủ. Vì vậy, không, đó không phải là quá trình lệnh 1 hoặc 2. Trước tiên, bạn cần đặt thành CHẤP NHẬN nếu hiện tại không có.
RyanH

0

Tôi đã phải chặn tất cả các kết nối gần đây những gì tôi đã làm là

iptables-policy INPUT DROP
iptables-policy OUTPUT DROP
iptables-policy FORWARD DROP

như để tiết kiệm, tôi khuyên bạn nên như sau

Ubuntu:

/etc/init.d/iptables save
/sbin/service iptables save

RedHat / CentOS:

/etc/init.d/iptables save
/sbin/iptables-save

Ngoài việc sao lưu tất cả các quy tắc ufw hiện tại mà Ive đã sử dụng trong quá khứ

cp /lib/ufw/{user.rules,user6.rules} /<BACKUP LOCATION> 
cp /lib/ufw/{user.rules,user6.rules} ./

Tôi nghĩ rằng điều này có thể hữu ích để tham khảo trong tương lai. Nghĩ rằng tôi sẽ chia sẻ.


0

Sao lưu cấu hình vào iptables_backup.conf và xóa tất cả các quy tắc.

iptables-save | tee iptables_backup.conf | grep -v '\-A' | iptables-restore

Để khôi phục cấu hình trước đó:

iptables-restore < iptables_backup.conf
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.