iptables: নতুন, ESTABLISHED এবং রিলেটেড প্যাকেটের মধ্যে পার্থক্য


46

সার্ভারে ফায়ারওয়ালের অংশ:

iptables -A INPUT -p tcp --dport 22 -m state NEW --state -m recent --set

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 100 --hitcount 10 -j DROP

আমি যখন অনলাইনে অনুসন্ধান করি তখন আমি সর্বদা দেখতে পাই সেই নিয়মে নতুন ব্যবহার করা হচ্ছে তবে কেন ইস্টাব্লিশড এবং রিলেটেড ব্যবহার হচ্ছে না তা বোঝার জন্য আমার খুব কষ্ট হচ্ছে।

এটার মত :

iptables -A INPUT -p tcp --dport 22 -m state NEW,ESTABLISHED,RELATED --state -m recent --set

iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -m recent --update --seconds 100 --hitcount 10 -j DROP

ঠিক যখন কোনও নতুন প্যাকেটটি ESTABLISHED এবং RELATED এ পরিবর্তিত হয় তখন কেউ আমাকে ব্যাখ্যা করতে পারেন?

উত্তর:


46

গ্রাহক গ্রহণের আগে একটি নতুন প্যাকেট টেলিফোন কল বিবেচনা করুন। একটি ESTABLISHED প্যাকেট হ'ল তাদের, "হ্যালো"। আপনি যদি কোনও ইমেল প্রেরণ করতে চলেছেন সে সম্পর্কে যদি তাদের বলার জন্য ফোন দিচ্ছিলেন তবে একটি সম্পর্কিত প্যাকেটটি হবে। (ইমেলটি সম্পর্কিত হচ্ছে))

যদি আমার সাদৃশ্যটি এত দুর্দান্ত না হয় তবে আমি ব্যক্তিগতভাবে মনে করি যে পুরুষ পৃষ্ঠাগুলি এটি ভালভাবে পরিচালনা করেছে:

নতুন - এর অর্থ হ'ল প্যাকেটটি একটি নতুন সংযোগ শুরু করেছে, বা অন্যথায় এমন সংযোগের সাথে যুক্ত যা উভয় দিকের প্যাকেট দেখেনি, এবং

প্রতিষ্ঠিত - অর্থ প্যাকেট এমন কোনও সংযোগের সাথে সম্পর্কিত যা উভয় দিকের প্যাকেট দেখেছিল,

সম্পর্কিত - এর অর্থ হল প্যাকেটটি একটি নতুন সংযোগ শুরু করছে, তবে এটি একটি বিদ্যমান সংযোগের সাথে সম্পর্কিত, যেমন একটি এফটিপি ডেটা স্থানান্তর, বা আইসিএমপি ত্রুটি।

iptables (8) - লিনাক্স ম্যান পৃষ্ঠা


9
কৌতূহলের বাইরে, আপনি কি জানেন যে এটি কীভাবে সম্পর্কিত প্যাকেটগুলি নির্ধারণ করে? অ্যাপ্লিকেশনগুলি iptables- এ সংকেত দেওয়ার জন্য অ্যাপ্লিকেশনগুলি ব্যবহার করতে পারে এমন কোনও ব্যবস্থা আছে যা কোনও সংযোগ একটি সম্পর্কিত সংযোগ হবে, বা এটি খাঁটিভাবে iptables এর রাজ্য অংশের অংশ?
ম্যাথু শার্লে

9
এটি ip_conntrack_ * নামে পরিচিত কার্নেল মডিউলগুলির একটি সিরিজ দ্বারা পরিচালিত হয়, প্রত্যেকে একটি নির্দিষ্ট প্রোটোকলের জন্য লিখিত যা সম্পর্কযুক্ত সংযোগগুলি ব্যবহার করে (যেমন এফটিপি)। আপনার প্রশ্নের উত্তর দেওয়ার জন্য, আমি মনে করি আপনার আবেদনের জন্য আপনাকে একই ধরণের মডিউল লোড করতে হবে।
কাইল স্মিথ

4
ঠিক আছে ধন্যবাদ. তবে এটিতে নতুন দিয়ে নিয়মে ফিরে যাওয়া, কোনও প্যাকেটটি এটি ইতিমধ্যে প্রতিষ্ঠিত এবং এটি নিয়ম দ্বারা অবরুদ্ধ নয় বলে মনে হচ্ছে এমন কি তৈরি করা সম্ভব নয়?
ক্রিস

2
@ ক্রিস: জাল আউটগোয়িং প্যাকেটগুলির পক্ষে এটি বেশ শক্ত, সুতরাং উত্তরে ম্যান পৃষ্ঠার শব্দটি লিখে আমি কীভাবে তা দেখতে পাচ্ছি না। আপনি ঠিক বলেছেন যে কোনও প্যাকেটটি জাল করা সম্ভব যা এটি একটি মুক্ত সংযোগের জন্য আবদ্ধ বলে মনে হয়, তবে ফায়ারওয়াল না থাকলেও টিসিপি স্ট্যাকটি প্যাকেটটি মেঝেতে ফেলে দেবে যদি এটি ইতিমধ্যে কোনও মুক্ত সংযোগ সম্পর্কে জানত না the প্রেরক। যদি এটি রাউটারের ফায়ারওয়ালে থাকে তবে রাউটার দিয়ে যাওয়ার সময় SYN/ ACK/ RST/ ইত্যাদি প্যাকেটগুলি পর্যবেক্ষণ করে এই অবস্থাটি বজায় রাখা এখনও সম্ভব এবং আমি প্রত্যাখ্যানগুলি এটি করার আশা করছিলাম।
ম্যাথু শার্লে

2
@ ক্রিস: এর অনুরূপ কিছু (যদিও প্রযুক্তিগতভাবে অভিন্ন নয়) ভিএনসি সফটওয়্যার টিমভিউয়ারের মতো ফায়ারওয়াল / রাউটারগুলির মাধ্যমে সুড়ঙ্গ করতে ব্যবহৃত হয়। প্রক্রিয়াটিকে হোল-পঞ্চিং বলে । সংক্ষেপে আপনার কাছে একটি হোস্ট পিসি রয়েছে (যা কোনও সীমাবদ্ধ ফায়ারওয়ালের পিছনে থাকতে পারে) যা আপনি কোনও আলাদা ডিভাইস থেকে (ইন্টারনেটের মাধ্যমে) সংযোগ করতে চান। উভয় পিসিই একটি পৃথক সার্ভারের (যেমন টিমভিউয়ার সার্ভার) সাথে একটি পৃথক সংযোগ খোলে, যা তাদের মধ্যে "মধ্যস্থতা" করে, তাই এটি তাদের ফায়ারওয়ালগুলিতে দেখে মনে হয় যেন প্যাকেটগুলি সম্পর্কিত রয়েছে এবং যার ফলে সেই পিসিগুলি প্রতিটিটির সাথে একটি পৃথক সংযোগ স্থাপন করতে সক্ষম হয় অন্যান্য।
লেভাইট

14

উভয় সার্ভার এবং ক্লায়েন্টের জন্য নিষিদ্ধ INPUTএবং উন্মুক্ত OUTPUT, যেমন:

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

এবং সক্রিয় মোডে এফটিপি -র উদাহরণ দিয়ে iptables- এক্সটেনশনগুলি (8) থেকে :

1. নতুন

নতুন প্যাকেটটি একটি নতুন সংযোগ শুরু করেছে বা অন্যথায় এমন সংযোগের সাথে যুক্ত যা উভয় দিকের প্যাকেট দেখেনি।

পোর্টে থাকা ক্লায়েন্ট 50000(যে কোনও র্যান্ডম অপ্রাইভাইল্ড পোর্ট) পোর্টের এফটিপি সার্ভারের সাথে সংযোগ স্থাপন করে 21, ইনকামিং সংযোগটি গ্রহণ করতে সার্ভারকে কমপক্ষে এটির প্রয়োজন হবে:

iptables -A INPUT --dport 21 -m state --state NEW -j ACCEPT

2. প্রতিষ্ঠিত

প্রতিষ্ঠিত প্যাকেটটি এমন সংযোগের সাথে সম্পর্কিত যা উভয় দিকের প্যাকেট দেখেছিল।

এখন ক্লায়েন্ট সাইড উপর, তিনি একজন বিদায়ী পোর্টে সার্ভারের সাথে সংযোগ খোলা 21একটি স্থানীয় পোর্ট ব্যবহার করে 50000এবং তিনি নিম্নলিখিত iptables- র প্রয়োজন থেকে পৌঁছা প্রতিক্রিয়ায় করার অনুমতি server (21)থেকে client (50000):

sudo iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

3. সম্পর্কিত

সম্পর্কিত প্যাকেটটি একটি নতুন সংযোগ শুরু করছে, তবে এটি একটি বিদ্যমান সংযোগের সাথে সম্পর্কিত, যেমন একটি এফটিপি ডেটা স্থানান্তর বা আইসিএমপি ত্রুটি।

এখন এফটিপি সংযোগ স্থাপনের পরে এবং একটি ডেটা সংযোগ সম্পন্ন হওয়ার পরে, ক্লায়েন্টটি একটি সার্ভার সকেট খুলবে (হ্যাঁ, সক্রিয় এফটিপি ক্লায়েন্ট ডেটা সংযোগের জন্য একটি সার্ভার হয়ে যায়) 60000আমার বুদ্ধিমান ক্লায়েন্টের কাছে এই পোর্টটিকে চিহ্নিত করবে থেকে অন্য সংযোগ 60000হিসাবে ) এবং এফটিপি কমান্ড ব্যবহার করে এই পোর্ট নম্বরটি সার্ভারে প্রেরণ করবে । তারপরে এফটিপি সার্ভারটি তার বন্দর থেকে ক্লায়েন্টের পোর্টে একটি নতুন সংযোগ খুলবে এবং ভাল, ক্লায়েন্টকে এখন এই নতুন সংযোগটি সফল হওয়ার জন্য নিম্নলিখিতগুলির প্রয়োজন:RELATED50000->21PORT2060000

sudo iptables -A INPUT -m state --state RELATED -j ACCEPT

পরিশেষে, এটি কাজ ip_conntrack_ftpকরার জন্য আপনার সিস্টেমকে সংযোগ / প্যাকেজগুলি চিহ্নিত করার জন্য কার্নেল মডিউল সক্ষম করতে হবে RELATED(এটি আমার বোঝার বিষয়, আমি এটি খুব বেশি খনন করি নি):

modprobe ip_conntrack_ftp

প্রতিষ্ঠিত কেবল পূর্বে স্থানীয়ভাবে উদ্ভূত একমুখী প্রবাহের প্রয়োজন, টিসিপি 3-মুখী হ্যান্ডশেক নয়, আমার বোঝাটি কি সঠিক?
sdaffa23fdsf

উত্তরের জন্য ধন্যবাদ, প্রতিষ্ঠিত হওয়ার জন্য আপনি বলেছিলেন "iptables সার্ভার (21) থেকে ক্লায়েন্ট (50000) এ প্রতিক্রিয়া আসতে দেয়" যদি এটি ক্লায়েন্টের সার্ভার থেকে থাকে তবে কেন এটি ইনপুট এবং আউটপুট নয়?
মেধ্যা

@ মিডিয়া, কারণ ক্লায়েন্টের দৃষ্টিকোণ থেকে, সার্ভার (21) থেকে ক্লায়েন্টের কাছে প্রেরিত প্যাকেটগুলি (50000) ইনকামিং প্যাকেটগুলি তাই ক্লায়েন্টের জন্য এটি একটি INPUT
জাইমে হাবলুটজেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.