tüm iptables kurallarını silmenin en iyi yolu


83

Şu anda bu snippet'im var:

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

Bunu uyguladıktan sonra bazı geçirimsiz kuralların hayatta kalma olasılığı var mı?

Buradaki fikir, tamamen yeni bir setet (nevermind route / ifconfig'in parametreleri) ile değiştirilebilen tamamen temiz bir iptables config dosyasına sahip olmaktır.

Yanıtlar:


107

Sorunuzu kısaca cevaplamak için, hayır: her masayı temizledikten sonra artık "kural" kalmayacaktı. Bununla birlikte, kapsamlı olmak için, yerleşik INPUTve FORWARDzincirler için politikayı da belirlemek isteyebilirsiniz 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

İp6tables kurallarını temizle:

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

... ve bunu yapmalı. iptables -nvLBu (ya da çok benzer) çıktı üretmek gerekir :

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
'ham' hakkında unuttum: iptables -t raw -F iptables -t raw -X
kK-Storm

there would not be any "leftover" rules after flushing every tableOP her masayı temizlemiyor . Sende değil Tam olmak istiyorsanız, göründüğü gibi . Ve eklemek isteyebilirsiniz iptables -t "$table" -Z. Bu şekilde, tabloların ve zincirlerinin listesini kodladığınızı unutmayın. Bu yüzden ciddi şekilde tasarruf geri yükleme çözümü düşünürdüm . Ya da sadece iptables'ı kaldırabilirsiniz .
x-yuri

23

Bu, iptables sisteminizi tam olarak çok temel bir duruma getirecektir:

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

Tüm politikalar KABUL'a döndürülecek ve mevcut kullanımdaki her tablonun silinmesi sağlanacaktır. Yerleşik zincirler dışındaki tüm zincirler artık bulunmayacak.


1
Düzgün kesmek! Buna bağlı kalmam, çünkü kaydetme / geri yükleme biçimindeki ince değişikliklerin onu kırabileceği her zaman mümkün. Muhtemelen en iyisi, iptablesaracın açıkça sağladığı API'ye , IMO'ya bağlı kalmaktır.
Steven Pazartesi

3
Fikrimi değiştirdim: veri biçimi artık çok fazla değişmiyor, çünkü çok yaygın kullanılıyor. +1.
Steven Pazartesi

2
+1, ilginç kesmek
Sam Halicke

Bu, kalan UFW zincirlerinden kurtulmayı başardı, kabul edilen cevabın yapmadığı bir şeydi.
l0b0

Bu küçük bir detay var, ama ilk değiştirmek isteyebilirsiniz print $1ile print $0:) tutarlı olması için
X-yuri

2

Güvenlik duvarının devre dışı bırakılmasına ne zaman ihtiyacım olursa, bunun gibi bir şey var:

  • iptables-save > iptables.bak
  • service iptables stop (ben fedoradayım)

1

Sadece boşaltın iptables'çekirdekten modülleri:

modprobe -r iptable_raw iptable_mangle iptable_security iptable_nat iptable_filter

UPD Ne yazık ki, gerçek olamayacak kadar iyi. Bir tabloda bir kural veya kullanıcı tanımlı bir zincir olduğu sürece, ilgili modülün referans sayısı 1'dir ve modprobe -rbaşarısız olur. Bunun gibi kuralları ve kullanıcı tanımlı zincirleri silebilirsiniz:

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

veya:

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

Ayrıca, modülleri bu şekilde boşaltmak isteyebilirsiniz (kodlama modülü adı yok):

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

Parlak tarafta, bundan sonra iptables-savegüzel boş çıktı üretir :)


Burada çekiç olabilir. Teşekkür.
Konrad Gajewski

0

Kişi bunu 1 veya 2 komutta yapabilir:

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

Sonuç:

$ 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
Varsayılan politikalar şu anda DROP olarak ayarlanmışsa, sunucudan kilitlenmenin hızlı bir yoludur. Yani, hayır, 1 veya 2 komut işlemi değil. Şu anda değilse, önce KABUL olarak ayarlamanız gerekir.
RyanH

0

Son zamanlarda tüm bağlantıları engellemem gerekti.

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

tasarruf için aşağıdakileri tavsiye ederim

Ubuntu:

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

RedHat / Centos:

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

Tüm geçerli ufw kurallarını yedeklemenin yanı sıra, geçmişte bunu kullandım.

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

Bunun gelecekteki referans için faydalı olabileceğini düşünüyorum. Paylaşacağımı düşündüm.


0

Yapılandırmayı iptables_backup.conf dosyasına yedekler ve tüm kuralları temizler.

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

Önceki yapılandırmayı geri yüklemek için:

iptables-restore < iptables_backup.conf
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.