আগত এফটিপি অনুমতি দিতে Iptables


32

আমি আগত এফটিপি ট্র্যাফিকের অনুমতি দিতে চাই।

সেন্টস 5.4:

এটি আমার /etc/sysconfig/iptablesফাইল।

# Generated by iptables-save v1.3.5 on Thu Oct  3 21:23:07 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [133:14837]
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -p tcp -m tcp --sport 20 -j ACCEPT
COMMIT
# Completed on Thu Oct  3 21:23:07 2013

এছাড়াও, ডিফল্টরূপে, ip_conntrack_netbios_n মডিউলটি লোড হচ্ছে।

#service iptables restart

Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]
Loading additional iptables modules: ip_conntrack_netbios_n[  OK  ]

তবে সমস্যাটি সেই মডিউলটির সাথে নয়, কারণ আমি এটিকে লোড করার চেষ্টা করেছি এবং এখনও ভাগ্য নেই।

যদি আমি iptables অক্ষম করি, আমি আমার ব্যাকআপটি অন্য মেশিন থেকে এফটিপিতে স্থানান্তর করতে সক্ষম হয়েছি। যদি iptables প্রয়োগ করা হয়, তবে স্থানান্তর ব্যর্থ হয়েছে।

উত্তর:


27

আপনার এফটিপি সার্ভারের ডেটা স্থানান্তর করতে একটি চ্যানেল দরকার। পোর্টটি 21সংযোগ স্থাপনের জন্য ব্যবহৃত হয়। সুতরাং ডেটা স্থানান্তরকে সম্ভব করে তুলতে আপনার 20পাশাপাশি পোর্ট সক্ষম করতে হবে । নিম্নলিখিত কনফিগারেশন দেখুন

প্যাসিভ এফটিপি সংযোগগুলি প্রত্যাখাত নয় তা নিশ্চিত করার জন্য প্রথমে নীচের মডিউলটি লোড করুন

modprobe ip_conntrack_ftp

পোর্ট 21ইনকামিং এবং আউটগোয়িং এ এফটিপি সংযোগগুলির অনুমতি দিন

iptables -A INPUT  -p tcp -m tcp --dport 21 -m conntrack --ctstate ESTABLISHED,NEW -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"

20সক্রিয় সংযোগগুলি ইনকামিং এবং আউটগোয়িংয়ের জন্য এফটিপি বন্দরকে অনুমতি দিন

iptables -A INPUT  -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"

শেষ পর্যন্ত এফটিপি নিষ্ক্রিয় অভ্যন্তরীণ ট্র্যাফিকের অনুমতি দিন

iptables -A INPUT  -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow passive inbound connections"

এফটিপি এবং ফায়ারওয়াল সমস্যাগুলির জন্য আরও দেখুন: http://slacksite.com/other/ftp.html#active tive

সম্পাদনা করুন:NEW 21 ইনপুট নিয়মে বন্দরে যুক্ত হয়েছে।


2
আমি এর --sport 1024: and --dport 1024:অর্থ উল্লেখ করতে ভুলে গেছি যে আমরা সীমাহীন সমস্ত বন্দরকে অন্তর্ভুক্ত করছি 1024:32535যা অপরিকল্পিত বন্দর, অর্থাত কোনও সুযোগ সুবিধা না পেয়ে ব্যবহারকারীরা তাদের অ্যাপ্লিকেশনগুলি পরীক্ষা করতে এই বন্দরগুলি ব্যবহার করতে পারবেন।
ভ্যালেন্টাইন বাজরামি

@ বিয়িং গোকুল, এটি সঠিক। আমাদের সার্ভারটি ক্লায়েন্ট সংযোগগুলির জন্য কোন পোর্টগুলির শোনা উচিত তা নিয়ন্ত্রণ করতে পারি। তবে একটি প্যাসিভ মোডে, আমাদের অবশ্যই --sportফায়ারওয়াল সমস্যাগুলি প্রাইভেন্ট করতে এবং ক্লায়েন্টদের সার্ভারের সাথে সংযুক্ত করতে একটি অনিবদ্ধ মোড হিসাবে ব্যবহার করতে হবে।
ভ্যালেন্টাইন বাজরামি

2
ঠিক আছে, আপনি যোগ করতে পারেন NEW,ESTABLISHEDতবে এটি কোনও বিষয় নয়। কোনও সংযোগ প্রথমে সর্বদা সর্বদা থাকে NEWতারপরে এটি লাফ দেয় RELATEDযা বোঝায় যে এই সংযোগটি ইতিমধ্যে অনুমোদিত সংযোগের সাথে সম্পর্কিত। সংযোগটি ESTABLISHEDস্থিতিতে পরিবর্তিত হলে এটি আমাদের জানিয়ে দেয় যে উভয় পক্ষের (সার্ভার / ক্লায়েন্ট) সংযোগ স্থাপন করা হয়েছে। -m state --state ...পরিবর্তে আপনি চেষ্টা করতে পারেন।
ভ্যালেন্টাইন বাজরামি

1
NEWপ্রকৃতপক্ষে কোন ব্যাপার। এটি ছাড়া কাজ করবে বলে মনে হয় না।
Leandros

1
@ val0x00ff- এর প্রয়োজন বুঝতে পারছি না --sport 1024:। কেন ক্লায়েন্টের বন্দর নিয়মের জন্য কার্যকর হবে? যদি সে 80 নম্বর বন্দর থেকে সার্ভারের প্যাসিভ পোর্টগুলিতে সংযোগ করে তবে তাকেও সংযোগ করার অনুমতি দিতে হবে।
Yvan

15

আমি ইতিমধ্যে বেশ কয়েকটি ব্লগ ইত্যাদিতে এই জাতীয় বিধিগুলি দেখেছি এবং কেন কেবল ব্যবহার না করে তা অবাক করেছিলাম

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

একসাথে nf_conntrack_ftpমডিউল সঙ্গে । এটি আরও সংক্ষিপ্ত এবং পাঠযোগ্য, যা সাধারণত একটি ভাল জিনিস, বিশেষত ফায়ারওয়াল সহ ...

FWIW, মনে কার্নেল 4.7 পরিবর্তন ছিল, যাতে আপনাকে তা সেট করার পারেন প্রয়োজন net.netfilter.nf_conntrack_helper=1মাধ্যমে sysctl(যেমন এটা রাখা /etc/sysctl.d/conntrack.conf) অথবা ব্যবহার

iptables -A PREROUTING -t raw -p tcp --dport 21 -j CT --helper ftp

( বিস্তারিত জানতে এখানে দেখুন)


1
কার্নেল ৪. about সম্পর্কিত তথ্য আমার জীবন রক্ষা করেছে, এটি কাজ করতে কয়েক ঘন্টা চেষ্টা করেছিল। একটি সাধারণ echo "1" > /proc/sys/net/netfilter/nf_conntrack_helperএবং সবকিছু প্রত্যাশার মতো কাজ করে।
রক্ষক

1
গ্রেট! 4.7 সমস্যা ছিল আমি জেসির কার্নেলটি সমাধান করতে পারিনি 4.9!
অরুণাস বারটিসিয়াস

@ জাকোব সম্পর্কিত সংযোগগুলির সাথে একটি সমস্যা রয়েছে যা অন্যান্য পরিষেবাদি অ্যাক্সেস করতে ব্যবহৃত হতে পারে: home.regit.org/wp-content/uploads/2011/11/… এবং github.com/rtsisyk/linux-iptables-contrack-exploit
Yvan

6

এফটিপি ক্লায়েন্ট:

lsmod | grep ftp
modprobe nf_conntrack_ftp
lsmod | grep ftp
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

এফটিপি সার্ভার:

lsmod | grep ftp
modprobe nf_conntrack_ftp
lsmod | grep ftp
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED -j ACCEPT

ক্লায়েন্ট পক্ষের প্যাসিভ এবং সক্রিয় মোডের মধ্যে টগল করতে

ftp> passive
Passive mode on.
ftp> passive
Passive mode off.

3
আপনি অবশ্যই এর জন্য কিছু উন্নয়নের প্রাপ্য। প্যাসিভ FTP সংযোগ এবং iptables সংযোগ ট্র্যাকিংয়ের সমস্যা সমাধানের সময় nf_conntrack_ftp মডিউলটি লোড করতে ভুলে যাওয়া মাথা ব্যথার উত্স। এই মডিউলটি ব্যবহার করে আপনি "নতুন" প্রকারটি সরাতে পারবেন যাতে পূর্ববর্তী এফটিপি সেশনটি স্থাপন না করে এই পোর্টগুলি স্বেচ্ছাসেবী সংযোগ থেকে সুরক্ষিত করা যায়।
রায়ান গ্রিগস 21

5

নতুন সংযোজন এটি স্থির করেছে, আমি বিশ্বাস করি।

এখন, আমার iptables ফাইলটি দেখতে দেখতে এ রকম ..

# Generated by iptables-save v1.3.5 on Thu Oct  3 22:25:54 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [824:72492]

-A INPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 20:65535 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 20:65535 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Thu Oct  3 22:25:54 2013

এটিকে উত্তর হিসাবে টাইপ করা, যেহেতু মন্তব্যে অনেকগুলি অক্ষর অনুমোদিত নয় .. আপনার সহায়তার জন্য আপনাকে অনেক ধন্যবাদ।


2
শীতল এটি কাজ করেছে এবং খুশী আমি আপনাকে সঠিক দিকে দেখিয়েছি। দয়া করে আপনার নিজের উত্তরটিকে সমাধান হিসাবে চিহ্নিত করুন যাতে আপনি অন্যদের যারা সঠিক উত্তর খুঁজছেন তাদের সহায়তা করুন।
ভ্যালেন্টিন বজরামি

আমি বিশ্বাস করি গৃহীত উত্তরের একটি টাইপো আছে। আমি বিশ্বাস করি যে --dport 20:655351024: 65535 এর মধ্যে যে কোনও উত্স বন্দর থেকে 20 - 65535 পর্যন্ত সমস্ত বন্দর ছেড়ে চলেছে, যা অনেকগুলি পরিষেবা উন্মুক্ত করে যা সম্ভবত হওয়া উচিত নয়, যদি স্পষ্টভাবে অনুমতি না দেওয়া হয়। আমি বিশ্বাস করি যা উদ্দেশ্য ছিল--dport 1024:65535
nAnti

0

আপনার যদি সক্রিয় এবং প্যাসিভ উভয় সংযোগের প্রয়োজন হয় এবং ইতিমধ্যে ESTABLISHEDসংযোগগুলি গ্রহণ করেন যেমন:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

তারপরে আপনাকে কেবল পোর্ট 21 খুলতে হবে এবং প্যাসিভ পোর্টগুলির জন্য একটি বিশেষ বিধি যুক্ত করতে হবে। 20 বন্দরটির জন্য কোনও নিয়মের প্রয়োজন নেই কারণ এটি ESTABLISHEDউপরের নিয়ম দ্বারা ইতিমধ্যে স্বীকৃত ।

প্রথমে নতুন সংযোগগুলি গ্রহণ করুন port 21:

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

তারপরে প্যাসিভ বন্দরগুলির জন্য সিটি সহায়ক যুক্ত করুন 1024::

iptables -A PREROUTING -t raw -p tcp --dport 21 -j CT --helper ftp
iptables -A INPUT -p tcp -m conntrack --ctstate RELATED -m helper --helper ftp --dport 1024: -j ACCEPT

আরো দেখুন:

দ্রষ্টব্য:1024: আপনার এফটিপি সার্ভারে আপনাকে অবশ্যই এটি সেট করতে হবে : আপনার এফটিপি কনফিগারেশনে ডিফল্ট প্যাসিভ পোর্টগুলির সন্ধান করুন। অন্যথায় আপনি অনেকগুলি বন্দর খোলেন যা এফটিপি সম্পর্কিত নাও হতে পারে।

গুরুত্বপূর্ণ দ্রষ্টব্য: আমি OUTPUTআমার খেলাপিদের সাথে নিয়মগুলি যুক্ত করিনি iptables -P OUTPUT ACCEPT। এর অর্থ হ'ল আমার বাক্সের বাইরে যা ঘটছে তা আমি বিশ্বাস করি। এটি একটি ভাল বিকল্প নাও হতে পারে, বিশেষত একটি NAT সেটআপে।

অত্যন্ত গুরুত্বপূর্ণ দ্রষ্টব্য: প্যাসিভ বন্দরটি গোপন (এনক্রিপ্ট করা) হিসাবে এফটিপিএস এ জাতীয় কোনও সেটআপ নিয়ে কাজ করবে না, সুতরাং iptablesভাল বন্দরটি অনুমান করার উপায় নেই । প্যাসিভ পোর্ট এবং https://serverfault.com/questions/811431/are-my-iptables-for-ftps-with-tls-ok ব্যবহার করে TLS- র মাধ্যমে FTP- র অনুমোদনের জন্য IPTables পরিবর্তন করার জন্য দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.