सभी iptables नियमों को साफ़ करने का सबसे अच्छा तरीका


83

वर्तमान में मेरे पास यह स्निपेट है:

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

क्या इस बात की संभावना है कि इसे चलाने के बाद कुछ अभेद्य नियम जीवित रहेंगे?

विचार के लिए पूरी तरह से साफ iptables विन्यास है, जिसे आसानी से नए नियमों (कभी नहीं मार्गों / ifconfig के मापदंडों) द्वारा प्रतिस्थापित किया जा सकता है।

जवाबों:


107

आपके सवाल का जवाब देने के लिए, नहीं: हर टेबल को फ्लश करने के बाद कोई "बचे हुए" नियम नहीं होंगे। हालांकि पूरी तरह से हित में, आप बिल्ट-इन INPUTऔर FORWARDचेन के लिए पॉलिसी सेट करना चाहते हैं 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

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

... और वह करना चाहिए। iptables -nvLयह (या बहुत समान) उत्पादन का उत्पादन करना चाहिए :

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
आप 'कच्चे' के बारे में भूल गए: iptables -t raw -F iptables -t raw -X
kK-Storm

there would not be any "leftover" rules after flushing every tableओपी हर टेबल को फ्लश नहीं करता है । नाही तुमने किया। यहाँ यह है कि अगर आप पूरी तरह से बनना चाहते हैं तो यह कैसा दिखता है । और आप जोड़ना चाह सकते हैं iptables -t "$table" -Z। ध्यान दें कि इस तरह से आप तालिकाओं और उनकी जंजीरों की सूची को हार्डकोड कर रहे हैं। इसलिए मैं गंभीरता से बचत-पुनर्स्थापना समाधान पर विचार करूंगा । या आप सिर्फ iptables अनलोड कर सकते हैं ।
एक्स-यूरी

23

यह आपके iptables सिस्टम को पूरी तरह से ठीक से एक बहुत ही मूल स्थिति में रीसेट कर देगा:

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

सभी नीतियों को ACCEPT के साथ-साथ वर्तमान उपयोग में हर तालिका को फ्लश करने के लिए रीसेट किया जाएगा। श्रृंखला में निर्मित के अलावा अन्य सभी श्रृंखलाएं अब मौजूद नहीं होंगी।


1
नीट हैक! मैं हालांकि इस पर निर्भर नहीं होता, क्योंकि यह हमेशा संभव है कि सहेजें / पुनर्स्थापना प्रारूप में सूक्ष्म परिवर्तन इसे तोड़ सकते हैं। iptablesउपकरण को स्पष्ट रूप से प्रदान करने वाले एपीआई , IMO से चिपके रहने के लिए संभवतः सबसे अच्छा है ।
स्टीवन सोमवार

3
मैंने अपना दिमाग बदल दिया: डेटा प्रारूप में किसी भी अधिक परिवर्तन की संभावना नहीं है, क्योंकि यह बहुत व्यापक रूप से उपयोग किया जाता है। +1।
स्टीवन सोमवार

2
+1, दिलचस्प हैक
सैम हैलिक

यह बचे हुए यूएफडब्ल्यू चेन से छुटकारा पाने में कामयाब रहा, कुछ ने इसका जवाब नहीं दिया।
l0b0

यह एक मामूली विवरण है, लेकिन आप पहले print $1के स्थान print $0पर संगत होना चाह सकते हैं :)
x-yuri

2

जब भी मुझे फ़ायरवॉल अक्षम करने की आवश्यकता होती है, वह कुछ इस तरह है:

  • iptables-save > iptables.bak
  • service iptables stop (मैं फेडोरा पर हूँ)

1

आप iptablesकर्नेल से सिर्फ 'मॉड्यूल' को उतार सकते हैं :

modprobe -r iptable_raw iptable_mangle iptable_security iptable_nat iptable_filter

UPD दुर्भाग्य से, सच होने के लिए बहुत अच्छा है। जब तक किसी तालिका में एक नियम या उपयोगकर्ता-परिभाषित श्रृंखला है, तब तक संबंधित मॉड्यूल की संदर्भ संख्या 1 है, और modprobe -rविफल रहता है। आप नियमों और उपयोगकर्ता-परिभाषित श्रृंखलाओं को हटा सकते हैं:

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

या:

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

इसके अलावा, आप इस तरह से मॉड्यूल को अनलोड करना चाह सकते हैं (कोई हार्डकोडिंग मॉड्यूल नाम नहीं):

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

उज्ज्वल पक्ष पर, इसके बाद iptables-saveअच्छा खाली उत्पादन होता है :)


वह यहां हथौड़ा हो सकता है। धन्यवाद।
कोनराड गजेस्की

0

1 या 2 कमांड में यह कर सकते हैं:

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

नतीजा:

$ 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
यदि डिफ़ॉल्ट नीतियां वर्तमान में DROP पर सेट की जाती हैं, तो यह सर्वर से लॉक होने का एक त्वरित तरीका है। तो, नहीं, यह 1 या 2 कमांड प्रक्रिया नहीं है। यदि यह वर्तमान में नहीं है तो आपको पहले ACCEPT पर सेट होने की आवश्यकता है।
रायन

0

मुझे हाल ही में सभी कनेक्शनों को अवरुद्ध करना पड़ा है जो मैंने समाप्त कर दिया था

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

बचत के लिए के रूप में मैं निम्नलिखित की सिफारिश करेंगे

उबंटू:

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

RedHat / CentOS:

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

बैकअप के अलावा सभी वर्तमान ufw नियमों Ive अतीत में इसका इस्तेमाल किया

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

मुझे लगता है कि यह भविष्य के संदर्भ के लिए उपयोगी हो सकता है। सोचा था कि साझा करूंगा।


0

बैकअप iptables_backup.conf के लिए कॉन्फ़िगरेशन और सभी नियमों को साफ करें।

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

पिछले कॉन्फ़िगरेशन को पुनर्स्थापित करने के लिए:

iptables-restore < iptables_backup.conf
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.