IPTables के साथ एफ़टीपी की अनुमति


26

मेरे वर्तमान परिदृश्य में विभिन्न नियमों की अनुमति देना शामिल है, लेकिन मुझे कहीं से भी सुलभ होने के लिए ftp की आवश्यकता है। OS 5 Cent है और मैं VSFTPD का उपयोग कर रहा हूं। मैं वाक्यविन्यास को सही प्रतीत नहीं कर सकता। अन्य सभी नियम सही तरीके से काम करते हैं।

## Filter all previous rules
*filter

## Loopback address
-A INPUT -i lo -j ACCEPT

## Established inbound rule
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

## Management ports
-A INPUT -s x.x.x.x/24 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT

## Allow NRPE port (Nagios)
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT

##Allow FTP

## Default rules
:INPUT DROP [0:0]
:FORWARD DROP
:OUTPUT ACCEPT [0:0]
COMMIT

निम्नलिखित नियम हैं जिन्हें मैंने कोशिश की है।

##Allow FTP
-A INPUT --dport 21 any -j ACCEPT
-A INPUT --dport 20 any -j ACCEPT

-A INPUT -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 20 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT


-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 20 -j ACCEPT
-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 21 -j ACCEPT

-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT

1
अपने स्वरूपण को ठीक किया ताकि यह पठनीय हो।
अवनी पायने

आप Rackspace का उपयोग कर रहे हैं मान रहे हैं? ट्यूटोरियल में यह दोष है। बस @ इवान एंडरसन के निर्देशों का पालन करें।
एंड्रेस एसके

जवाबों:


41

यहाँ वह दस्तावेज़ है जो मैं लोगों को संदर्भित करता हूँ ताकि वे FTP प्रोटोकॉल का पालन कर सकें: http://slacksite.com/other/ftp.html

  • सक्रिय-मोड एफ़टीपी करने के लिए, आपको आने वाले कनेक्शन को टीसीपी पोर्ट 21 और पोर्ट 20 से आउटगोइंग कनेक्शन की अनुमति देने की आवश्यकता है।
  • निष्क्रिय-मोड एफ़टीपी करने के लिए, आपको टीसीपी पोर्ट 21 के लिए आने वाले कनेक्शन और सर्वर कंप्यूटर पर बेतरतीब ढंग से उत्पन्न पोर्ट के लिए आने वाले कनेक्शन की अनुमति देने की आवश्यकता है (नेटफिल्टर में एक कनेक्टर मॉड्यूल का उपयोग करके)

आपके पास कुछ भी पुनः नहीं है: आपकी पोस्ट में आपकी OUTPUT श्रृंखला, इसलिए मैं यहाँ भी शामिल करूँगा। यदि आपकी OUTPUT श्रृंखला डिफ़ॉल्ट-ड्रॉप है तो यह मायने रखता है।

इन नियमों को अपने iptables कॉन्फ़िगरेशन में जोड़ें:

iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT

निष्क्रिय मोड एफ़टीपी का समर्थन करने के लिए, फिर, आपको बूट पर ip_conntrack_ftp मॉड्यूल लोड करने की आवश्यकता है। पढ़ने के लिए / etc / sysconfig / iptables-config फाइल में IPTABLES_MODULES लाइन को रद्द करें और संशोधित करें:

IPTABLES_MODULES="ip_conntrack_ftp"

IPtables कॉन्फ़िगरेशन को सहेजें और iptables को पुनरारंभ करें।

service iptables save
service iptables restart

VSFTPD को एक समस्या के रूप में पूरी तरह से नियंत्रित करने के लिए, VSFTPD को रोकें, सत्यापित करें कि यह "netstat -a" के साथ पोर्ट 21 पर नहीं सुन रहा है और फिर a: रन करें

nc -l 21

यह पोर्ट 21 पर नेटकैट सुनना शुरू कर देगा और आपके शेल में इनपुट इको करेगा। एक अन्य होस्ट से, TELNET आपके सर्वर के 21 पोर्ट करता है और सत्यापित करता है कि आपको TCP कनेक्शन मिलता है और जब आप TELNET कनेक्शन में टाइप करते हैं तो आप शेल में आउटपुट देखते हैं।

अंत में, VSFTPD को वापस लाएं, सत्यापित करें कि यह पोर्ट 21 पर सुन रहा है, और फिर से कनेक्ट करने का प्रयास करें। अगर netcat से कनेक्शन काम करता है तो आपके iptables नियम ठीक हैं। अगर वीएसटीटीपीडी का कनेक्शन नेटकैट के बाद काम नहीं करता है तो कुछ गलत है w / आपका वीएसएफटीपीडी कॉन्फ़िगरेशन।


मदद के लिए धन्यवाद, निष्क्रिय मोड के लिए आपके द्वारा बताए गए सुझावों ने मेरा मुद्दा तय कर दिया। मैं मदद की सराहना करता हूं।
IOTAMAN

यदि आप IPTABLES_SAVE_ON_STOP "हाँ" पर सेट नहीं है, तो iptables को फिर से शुरू करने से आपके द्वारा किए गए किसी भी परिवर्तन का सफाया हो जाएगा।
केविन एम।

@ केविन: बिल्कुल, पूरी तरह से एक अच्छा बिंदु! > मुस्कान <मैं उस पर एक संपादन छोड़ दूँगा।
इवान एंडरसन

@ GLB03: कोई बात नहीं। मैं सर्वर फाल्ट में रहता हूं ...> मुस्कान <
इवान एंडरसन

इस उत्तर ने मेरे लिए काम नहीं किया, इसलिए किसी और के लिए यह समस्या है, मैं बताता हूं कि यह (और पोर्ट 21 इनपुट / आउटपुट खोलने) ने भी मेरे लिए काम किया: linuxquestions.org/questions/linux-security-4 /… -
एहसानुल

0

इस नियम को आजमाएं। नोट: $EXTIPएफ़टीपी सर्वर के लिए आपका बाहरी आईपी पता है।

-A INPUT -i $EXTIP -m state --state NEW,ESTABLISHED,RELATED -p TCP -s 0.0.0.0 -d $EXTIP --dport 21 -j ACCEPT

0

मेरे मामले में मुझे ip_conntrack_ftp कर्नेल मॉड्यूल याद आ रहा था। इसे लोड करने की आवश्यकता है। तो आप यह कोशिश कर सकते हैं:

modprobe ip_conntrack_ftp

और ip_conntrack_ftp को / etc / मॉड्यूल में भी जोड़ें ताकि यह पुनरारंभ होने के बाद काम करे

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