फायरवॉल के साथ सभी ips को ब्लॉक करें


17

एक linux networked मशीन पर, मैं "सार्वजनिक" ज़ोन (फायरवाल कॉन्सेप्ट) पर पतों के सेट को प्रतिबंधित करना चाहूँगा, जो इसे तक पहुँचने की अनुमति देते हैं। तो अंतिम परिणाम यह होगा कि कोई भी मशीन किसी भी पोर्ट या प्रोटोकॉल का उपयोग नहीं कर सकती है, सिवाय उन सभी के, जिन्हें स्पष्ट रूप से अनुमति दी गई है, एक मिश्रण की तरह

  --add-rich-rule='rule family="ipv4" source not  address="192.168.56.120" drop'

  --add-rich-rule='rule family="ipv4" source not  address="192.168.56.105" drop'

ऊपर समस्या यह है कि यह एक वास्तविक सूची नहीं है, यह सब कुछ को अवरुद्ध कर देगा क्योंकि यदि इसका एक पता दूसरे के समान नहीं होने से अवरुद्ध हो जाता है, तो एक आकस्मिक "सभी को छोड़ दें" प्रभाव, मैं एक विशिष्ट गैर को "अनब्लॉक" कैसे करूंगा सन्निहित सेट? क्या स्रोत पते की एक सूची को स्वीकार करता है? मैंने अभी तक डॉक्स या Google परिणाम पर अपने लुक में कुछ भी नहीं देखा है।


संपादित करें: मैंने अभी इसे बनाया है:

# firewall-cmd  --zone=encrypt --list-all
encrypt (active)
  interfaces: eth1
  sources: 192.168.56.120
  services: ssh
  ports: 6000/tcp
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

लेकिन मैं अभी भी .123 अपने इरादे से पोर्ट 6000 तक पहुंच सकता था, अगर कोई स्रोत सूचीबद्ध नहीं है, तो यह किसी भी सेवा या पोर्ट तक पहुंचने में सक्षम नहीं होना चाहिए

जवाबों:


24

समृद्ध नियम बिल्कुल भी आवश्यक नहीं हैं।

यदि आप किसी ज़ोन को IP के एक विशिष्ट सेट तक सीमित करना चाहते हैं, तो केवल उन IP को ज़ोन के लिए स्रोतों के रूप में परिभाषित करें (और मौजूद किसी भी इंटरफ़ेस परिभाषा को हटा दें, क्योंकि वे स्रोत IP को ओवरराइड करते हैं)।

आप शायद "सार्वजनिक" क्षेत्र के लिए ऐसा नहीं करना चाहते हैं, हालांकि, क्योंकि यह शब्द सार्वजनिक रूप से दुनिया के लिए खुले रहने वाली सेवाओं के लिए है।

इसके बजाय, संभावित संवेदनशील सेवाओं जैसे sshd तक पहुँचने के लिए अधिकतर विश्वसनीय IP पतों के लिए "आंतरिक" जैसे किसी भिन्न क्षेत्र का उपयोग करने का प्रयास करें। (आप अपने क्षेत्र भी बना सकते हैं।)

चेतावनी: सामान्य "आंतरिक" ज़ोन के साथ विशेष "विश्वसनीय" ज़ोन की गलती न करें। "विश्वसनीय" क्षेत्र में जोड़े गए किसी भी स्रोत को सभी बंदरगाहों के माध्यम से अनुमति दी जाएगी; "विश्वसनीय" ज़ोन में सेवाओं को जोड़ने की अनुमति है लेकिन ऐसा करने का कोई मतलब नहीं है।

firewall-cmd --zone=internal --add-service=ssh
firewall-cmd --zone=internal --add-source=192.168.56.105/32
firewall-cmd --zone=internal --add-source=192.168.56.120/32
firewall-cmd --zone=public --remove-service=ssh

इसका परिणाम एक "आंतरिक" क्षेत्र होगा जो ssh तक पहुंच की अनुमति देता है, लेकिन केवल दो दिए गए आईपी पते से। इसे लगातार बनाए रखने के लिए, प्रत्येक कमांड को --permanentसंलग्न करके फिर से चलाएं ।


कृपया स्पष्ट करें कि आपके पास "इंटरफ़ेस परिभाषा जो मौजूद हो सकती है" से क्या मतलब है, iv ने आपके सुझाव की कोशिश की, कृपया मेरा संपादन देखें।
माइक

@ जैसे मैंने कहा, आपको eth1ज़ोन से हटाने की आवश्यकता है । firewall-cmd --zone=encrypt --remove-interface=eth1
माइकल हैम्पटन

ठीक है, एन्क्रिप्ट ज़ोन नया ज़ोन है, इससे पहले कि eth1 सार्वजनिक था, मैंने इसे सार्वजनिक से एन्क्रिप्ट करने के लिए स्थानांतरित कर दिया है, इसलिए एन्क्रिप्ट में स्रोत है ।120, मुझे लगा कि केवल 120 पोर्ट तक पहुंचने में सक्षम होना चाहिए, मुझे क्या याद आ रही है?
माइक

1
यदि आप इंटरफ़ेस को ज़ोन में रखते हैं, तो इंटरफ़ेस के माध्यम से आने वाला कुछ भी आईपी ​​पते की परवाह किए बिना, जो भी पोर्ट और सेवाओं को ज़ोन में जोड़ा जाता है, एक्सेस कर सकता है। तो यह शायद सार्वजनिक रूप से होता है, जहां यह मूल रूप से था।
माइकल हैम्पटन

आह, इसलिए स्वीकृत स्रोतों को अभी भी अनुमति दी जाएगी भले ही इंटरफ़ेस को सार्वजनिक रूप से रखा गया हो, और स्वीकार किए गए स्रोतों को एक अलग विश्वसनीय स्रोत में रखा गया हो?
माइक

1

प्रति के रूप में firewalld.richlanguage:

स्रोत स्रोत [पता] नहीं = "पता [/ मुखौटा]"

   With the source address the origin of a connection attempt can be limited to the source address. An address is either a single IP address, or a network IP address. The address has to match the rule family (IPv4/IPv6). Subnet mask is expressed in either
   dot-decimal (/x.x.x.x) or prefix (/x) notations for IPv4, and in prefix notation (/x) for IPv6 network addresses. It is possible to invert the sense of an address by adding not before address. All but the specified address will match then.

संबंद्ध ब्लॉकों को अनुमति देने के लिए पते के लिए एक नेटमैस्क निर्दिष्ट करें।

इसके अलावा, आप ipsetअनुमत IP की गैर-सन्निहित सूची के लिए बनाने का प्रयास कर सकते हैं ।

उदाहरण के लिए /etc/firewalld/direct.xml:

<?xml version="1.0" encoding="utf-8"?>
<direct>
   <rule ipv="ipv4" table="filter" chain="INPUT" priority="0">-m set --match-set whitelist src -j ACCEPT</rule>
</direct>

वास्तविक ipsetको अलग से बनाना होगा।


यह अस्वीकार कर देगा, मुझे क्या आवश्यकता है, उलटा है, अगर सेट में स्वीकार करें,
माइक

0

आप रिच नियम द्वारा आसानी से प्रबंधित कर सकते हैं।

पहला कदम

firewall-cmd --permanent --set-default-zone=home
firewall-cmd --permanent --zone=drop --change-interface=eth0

दूसरा चरण - समृद्ध नियम जोड़ें

firewall-cmd --permanent --zone=home --add-rich-rule='rule family="ipv4" source address="192.168.78.76/32" accept'

सभी नियम 192.168.2.2 तक पहुँचने पर सभी पोर्ट एक बार समृद्ध नियम जोड़ देते हैं और प्रत्येक पोर्ट को अन्य स्रोत से अवरुद्ध कर देते हैं।

यदि आप किसी भी पोर्ट या सेवा को कमांड के नीचे जोड़ेंगे तो यह सभी स्रोतों द्वारा सुलभ होगा।

firewall-cmd --zone=public --add-service=ssh
firewall-cmd --zone=public --add-port=8080

अगर आप नीचे दिए गए कमांड की तुलना में विशिष्ट आईपी के लिए विशिष्ट पोर्ट खोलना चाहते हैं

firewall-cmd --permanent --zone=home --add-rich-rule='rule family="ipv4" port="8080/tcp" source address="192.168.78.76/32" accept'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.