Centos 7 iptables सेटिंग्स को सेव करें


58

समस्या: सर्वर रिबूट के बाद डिफ़ॉल्ट सेटिंग्स पर iptables रीसेट करता है।

मैं इस तरह से नियम निर्धारित करने की कोशिश कर रहा हूं:

iptables -I INPUT -p tcp --dport 3000 -j ACCEPT

उसके बाद मैं:

service iptables save

और यह कुछ इस तरह वापस लिखता है

iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

और इसके बाद मैं बस भागा (यह एक बार किया गया था):

chkconfig iptables on (मैंने पढ़ा है कि यह रिबूट के बाद सेटिंग्स को पुनर्स्थापित करने के लिए किया जाना है)

उसके बाद मैंने इस कमांड को रिबूट और चलाया:

systemctl list-unit-files | grep iptables

और मैं देखता हूं कि iptables.service सक्षम है, हालांकि, नियम (पोर्ट 3000 खोलने के लिए) अब काम नहीं करता है।

मैं इन सेटिंग्स को कैसे जारी रख सकता हूं?


आपने फायरवॉल का उपयोग क्यों नहीं किया? यह शायद अभी भी चल रहा है।
माइकल हैम्पटन

शायद इसलिए क्योंकि फ़ायरवॉल सर्वर वातावरण के लिए अनुकूल नहीं है ...
जुआन जिमेनेज

जवाबों:


67

CentOS 7 अब FirewallD का उपयोग कर रहा है !

उदाहरण:

firewall-cmd --zone=public --add-port=3000/tcp --permanent

पुनः लोड नियम:

firewall-cmd --reload

2
किसी भी विचार क्यों AWS AMI से centos7 छवि में फ़ायरवॉलडी नहीं है।
साद मसूद

5
या आप फायरवॉल को निष्क्रिय कर सकते हैं और देशी iptables संगतता के पास प्राप्त करने के लिए "iptables-services" पैकेज स्थापित कर सकते हैं :)
vagarwal

1
मैंने --zone=trustedफायरवॉल-सीएमडी के साथ 80 -> 8180 फॉर लो ( ) के लिए पोर्ट को कॉन्फ़िगर करने की कोशिश की, लेकिन यह काम नहीं करता है (यह काम करता है --zone=public) ऐसा करने से iptables sudo /sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8180 ; sudo /sbin/iptables -t nat -I OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8180काम करता है (लेकिन प्रत्येक इसे firewalld --reloadखो देता है)
djb

@saad: क्योंकि एडब्ल्यूएस पहले से ही एक फ़ायरवॉल सेवा प्रदान करता है इसलिए अमी रखा जा सकता है छोटे
roothahn

यह नहीं! मैंने एक Centos 7 VPS का आदेश दिया है और इसमें डिफ़ॉल्ट रूप से iptables हैं! ओएस संस्करण: 7.5.1804 (कोर)
कोडज़ ज़ोंबी

66

निम्नलिखित आदेश द्वारा फ़ायरवॉल को अक्षम करें:

systemctl disable firewalld

फिर कमांड का पालन करके iptables- सेवा स्थापित करें:

yum install iptables-services

फिर iptables को सेवाओं के रूप में सक्षम करें:

systemctl enable iptables

अब आप आदेश का पालन करके अपने iptable नियमों को बचा सकते हैं:

service iptables save

22

CentOS 7 मिनिमल पर आपको iptables-servicesपैकेज स्थापित करने की आवश्यकता हो सकती है ( सुझाव के लिए @RichieACC के लिए धन्यवाद ):

sudo yum install -y iptables-services

और फिर सेवा का उपयोग कर सक्षम करें systemd:

sudo systemctl enable iptables.service

और अपने फ़ायरवॉल नियमों को बचाने के लिए इनस्क्रिप्ट को चलाएँ:

sudo /usr/libexec/iptables/iptables.init save

2

शायद इस तरह की कोई स्क्रिप्ट किसी के लिए मददगार रही होगी?

सावधान रहें कि आप वर्तमान में कॉन्फ़िगर की गई किसी भी चीज़ को ढीला कर देंगे क्योंकि यह फ़ायरवॉल को हटा देती है और INPUT तालिका में किसी भी मौजूदा नियम को निकाल देती है :

yum remove firewalld && yum install iptables-services

iptables --flush INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT            # Any packages related to an existing connection are OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT   # ssh is OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT   # Port 3000 for IPv4 is OK
iptables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service iptables save       # Save IPv4 IPTABLES rules van memory naar disk
systemctl enable iptables   # To make sure the IPv4 rules are reloaded at system startup

मुझे लगता है कि आईपीवी 6 ट्रैफिक द्वारा आपके सिस्टम तक (अभी या कभी भी बाद में) पहुंचने की स्थिति में आप वही चाहते हैं:

ip6tables --flush INPUT
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT            # Any packages related to an existing connection are OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT   # ssh is OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT   # Port 3000 for IPv6 is OK
ip6tables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service ip6tables save       # Save IPv6 IPTABLES rules van memory naar disk
systemctl enable ip6tables   # To make sure the IPv6 rules are reloaded at system startup

1

आप सीधे / etc / sysconfig / iptables फ़ाइल को संशोधित कर सकते हैं। उस फ़ाइल से नियमों को पुनः लोड करने के लिए iptables सेवा को पुनः लोड करें। फिर भी, जैसा कि आपको पहले ही बताया गया था, फ़ायरवॉल, Centos के लिए नया डिफ़ॉल्ट फ़ायरवॉल सिस्टम है, और यह सीखने का एक अच्छा मौका है कि इसका उपयोग कैसे करें, क्या आपको नहीं लगता?


7
CentOS7 में कोई / a / etc / sysconfig / iptables फ़ाइल नहीं है
roothahn

1
क्षमा करें @roothahn, लेकिन यह निश्चित रूप से मौजूद है ... जब तक कि आप निश्चित रूप से कुछ पैकेज याद नहीं करते। /Usr/lib/systemd/system/iptables.service से आप देख सकते हैं कि वास्तव में क्या लॉन्च किया गया है "/usr/libexec/iptables/iptables.init start", जो सामान्य पुरानी कॉन्फ़िगरेशन फ़ाइल की तलाश में सामान्य पुरानी और प्रिय स्क्रिप्ट है में / etc / sysconfig
पत्थरों से मार डाला

1
हाँ /etc/sysconfig/iptablesमेरे लिए मौजूद नहीं है। हालाँकि, /etc/sysconfig/iptables-configमौजूद है। लेकिन इसके अंदर फ़ायरवॉल नियम नहीं हैं क्योंकि यह iptablesफ़ाइल पहले थी।
केंटग्राव

2
मैंने पाया कि फ़ाइल एक डिफ़ॉल्ट पर नहीं थी, न्यूनतम इंस्टॉल भी थी। CentOS 7 डिफ़ॉल्ट रूप से iptables.service स्थापित नहीं करता है, ऐसा लगता है। "yum install -y iptables.service" ने सेवा को स्थापित किया और मेरे लिए डिफ़ॉल्ट / etc / sysconfig / iptables बनाया।
रिचीएसी

3
यह "yum install iptables-services" होना चाहिए
qris
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.