IPTables: SSH को केवल एक्सेस करने की अनुमति दें, इसमें और कुछ नहीं


11

आप IPTables को कैसे कॉन्फ़िगर करते हैं ताकि यह केवल SSH को अंदर जाने दे और किसी अन्य ट्रैफ़िक को अंदर या बाहर न जाने दे ?

किसी भी सुरक्षा सावधानियों की सिफारिश कर सकते हैं?

मेरे पास एक सर्वर है जो मेरा मानना है कि GoDaddy से सफलतापूर्वक विस्थापित हो गया है और मेरा मानना है कि अब उपयोग में नहीं है।

लेकिन मैं सिर्फ इसलिए पक्का करना चाहता हूं ... आप कभी नहीं जानते। :)

ध्यान दें कि यह GoDaddy का एक आभासी समर्पित सर्वर है ... इसका मतलब है कि बैकअप और वस्तुतः कोई समर्थन नहीं है।

जवाबों:


13

आपको बस INPUT और OUTPUT श्रृंखलाओं पर DROP के लिए डिफ़ॉल्ट नीति सेट करने की आवश्यकता है।

SSH को अनुमति देने के लिए, आपको निम्नलिखित कमांड चाहिए:

$ sudo iptables -P INPUT DROP
$ sudo iptables -P OUTPUT DROP
$ sudo iptables -A INPUT -i lo -j ACCEPT
$ sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$ sudo iptables -A OUTPUT -o lo -j ACCEPT
$ sudo iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

अंतिम दो आदेश लूपबैक ट्रैफ़िक की अनुमति देते हैं क्योंकि कुछ अनुप्रयोगों द्वारा सही ढंग से कार्य करने के लिए यह आवश्यक है। आप -s source_ipविकल्प का उपयोग करके विशिष्ट आईपी से एसएसएच पहुंच को प्रतिबंधित कर सकते हैं ।

जैसा कि ऊपर दिखाया गया है, आदेशों को निष्पादित करने से आपके वर्तमान एसएसएच सत्र लटक जाएगा। ऐसा इसलिए है क्योंकि iptables कमांड तुरंत प्रभाव डालते हैं। आपको दूरस्थ रूप से निष्पादित करते समय अपनी मशीन से कनेक्ट करने की क्षमता खोने से बचने के लिए उन्हें शेल स्क्रिप्ट में निष्पादित करना होगा।


4
--state RELATEDअंतिम नियम अनावश्यक है; --state ESTABLISHEDपर्याप्त है। आप DNS ट्रैफ़िक की अनुमति देना भी चाह सकते हैं, और शायद लूपबैक इंटरफ़ेस पर कुछ भी करने की अनुमति दें, या सभी प्रकार की चीजें बहुत ही अजीब तरह से व्यवहार कर सकती हैं।
मद्रहट

@MadHatter: हाँ, आप सही विशेष रूप से लूपबैक सामग्री के बारे में कर रहे हैं :)
खालिद

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

2
ps। स्थापना कनेक्शन पहले कमांड के बाद बंद हो जाएगा
user956584

3
आपको वास्तव में इन आदेशों के क्रम को बदलना चाहिए। पॉलिसी लाइनों को अंतिम के रूप में दिखाई देना चाहिए। किसी को भी एक सत्र सत्र में मैथुन करना HUPed और तुरंत बंद हो जाएगा
AndreasT

4

कुछ इस तरह:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT  # or iptables -P INPUT DROP

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j REJECT # or iptables -P OUTPUT DROP

1
मुझे लगता है कि आपका मतलब -i loनहीं है -s lo; फिर से, केवल ESTABLISHEDराज्य के नियमों में ही आवश्यक है, और शायद वहाँ भी होना चाहिए --sport 22। हर कोई अनुमति देने के लिए इतना उत्सुक क्यों है RELATED?
मध्याह्न

@ मैडहैटर: के बारे में RELATED: यह गैर-टीसीपी से मेल खाने वाले सामान के लिए वास्तव में उपयोगी है, जैसे पिंग रिप्लाई और डीएनएस रिप्लाई । कम से कम, यही तो मैं हमेशा मानूंगा।
स्टीवन सोमवार

2
मेरा विश्वास है कि यह उन दोनों में से किसी से भी मेल नहीं खाएगा। यह, उदाहरण के लिए, एक ICMP मेजबान-प्रशासनिक-निषिद्ध प्रतिक्रिया से मेल खाएगा, लेकिन यह उतना ही उपयोगी है जितना इसे मिलता है; और यदि योग्य नहीं है, तो यह किसी भी संबंधित ट्रैफ़िक से मेल खाएगा, न कि पिछली लाइन से संबंधित ट्रैफ़िक से।
मध्याह्न

@MadHatter: मुझे लगता है कि मुझे यह देखने के लिए कुछ परीक्षण चलाने होंगे कि क्या आप सही हैं। मेरी धारणा को चुनौती देने के लिए धन्यवाद।
स्टीवन सोमवार

हां, स्थापित अवस्था यूडीपी डीएनएस उत्तरों और आईसीएमपी इको-उत्तरों से मिलान करने के लिए आवश्यक है।
स्टीवन सोमवार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.