লিনাক্স ফায়ারওয়াল iptables- এর জন্য সূচনাকারীর গাইড

Iptables লিনাক্স অপারেটিং সিস্টেমের জন্য নির্মিত একটি অত্যন্ত নমনীয় ফায়ারওয়াল ইউটিলিটি। আপনি কোনও শিক্ষানবিস লিনাক্স গীক বা সিস্টেম প্রশাসক হোন না কেন, সম্ভবত কিছু উপায় আছে যা iptables আপনার পক্ষে দুর্দান্ত ব্যবহার হতে পারে। কীভাবে সর্বাধিক বহুমুখী লিনাক্স ফায়ারওয়াল কনফিগার করতে হয় তা আমরা আপনাকে দেখাই হিসাবে পড়ুন।

ছবি দ্বারা ইজিওম্যান.

Iptables সম্পর্কে

iptables হ'ল একটি কমান্ড-লাইন ফায়ারওয়াল ইউটিলিটি যা ট্র্যাফিকের অনুমতি বা অবরুদ্ধ করতে নীতি চেইন ব্যবহার করে। যখন কোনও সংযোগ আপনার সিস্টেমে নিজেকে প্রতিষ্ঠিত করার চেষ্টা করে, iptables এর সাথে এটি মেলে তার তালিকার কোনও নিয়ম সন্ধান করে। যদি এটির সন্ধান না করে তবে এটি ডিফল্ট ক্রিয়াটি রিসোর্ট করে।

iptables প্রায় সর্বদা যে কোনও লিনাক্স বিতরণে প্রাক ইনস্টল করা হয়। এটি আপডেট / ইনস্টল করতে, কেবল iptables প্যাকেজটি পুনরুদ্ধার করুন:

sudo অ্যাপ্লিকেশন ইনস্টল করুন

ফায়ারস্টার্টারের মতো আইপটিবলের জিইউআই বিকল্প রয়েছে, তবে কয়েকটি কমান্ড বন্ধ হয়ে গেলে iptables আসলে তেমন শক্ত হয় না। Iptables নিয়মগুলি কনফিগার করার সময় আপনি অত্যন্ত সতর্কতা অবলম্বন করতে চান, বিশেষত আপনি যদি কোনও সার্ভারে এসএসএইচড হন, কারণ শারীরিক মেশিনে ম্যানুয়ালি স্থির না হওয়া পর্যন্ত একটি ভুল কমান্ড আপনাকে স্থায়ীভাবে লক আউট করতে পারে।

চেইনের প্রকারভেদ

আইপটিবলগুলি তিনটি পৃথক চেইন ব্যবহার করে: ইনপুট, ফরোয়ার্ড এবং আউটপুট।

ইনপুট - এই চেইনটি আগত সংযোগগুলির জন্য আচরণ নিয়ন্ত্রণ করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, যদি কোনও ব্যবহারকারী আপনার পিসি / সার্ভারে এসএসএইচ চেষ্টা করে তবে আইপ্যাবগুলি আইপি ঠিকানা এবং পোর্টটিকে ইনপুট চেইনের কোনও নিয়মের সাথে মিলিয়ে দেখার চেষ্টা করবে।

ফরোয়ার্ড - এই চেইনটি আসন্ন সংযোগগুলির জন্য ব্যবহৃত হয় যা স্থানীয়ভাবে বাস্তবে সরবরাহ করা হয় না। একটি রাউটারের কথা ভাবেন - ডেটা সর্বদা এটিতে প্রেরণ করা হচ্ছে তবে রাউটারের পক্ষে এটি খুব কমই স্থির হয়; তথ্য কেবলমাত্র তার টার্গেটে ফরোয়ার্ড করা হয়েছে। আপনি যদি না আপনার সিস্টেমের কোনও ধরণের রাউটিং, নাটিটিং বা অন্য কিছু করার জন্য যা ফরওয়ার্ডিংয়ের প্রয়োজন হয়, আপনি এই চেইনটি ব্যবহার করবেন না।

আপনার সিস্টেমের সামনের চেইনটি ব্যবহার করে / প্রয়োজন কিনা তা যাচাই করার জন্য একটি নিশ্চিত আগুনের উপায় রয়েছে।

iptables -L -v

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

আউটপুট - এই চেইন বহির্গামী সংযোগগুলির জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, যদি আপনি হোওটোজেক.কমকে পিং করার চেষ্টা করেন, সংযোগ প্রয়াসের অনুমতি দেওয়ার বা অস্বীকার করার সিদ্ধান্ত নেওয়ার আগে পিং এবং হাওটোজেক.কম সম্পর্কে বিধিগুলি কী রয়েছে তা জানতে আইপটিবলগুলি তার আউটপুট চেইনটি পরীক্ষা করবে।

সাবধান

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

পলিসি চেইন ডিফল্ট আচরণ

নির্দিষ্ট বিধিগুলিতে প্রবেশ ও কনফিগার করার আগে, আপনি তিনটি চেইনের ডিফল্ট আচরণ কী হতে চান তা সিদ্ধান্ত নিতে চাইবেন। অন্য কথায়, সংযোগটি কোনও বিদ্যমান নিয়মের সাথে মেলে না, আপনি iptables কী করতে চান?

আপনার পলিসি চেইনগুলি বর্তমানে তুলনাহীন ট্র্যাফিকের জন্য কী কনফিগার করা হয়েছে তা দেখতে, চালনা করুন iptables -L আদেশ

আপনি দেখতে পাচ্ছেন, আমাদের ক্লিনার আউটপুট দেওয়ার জন্য আমরা গ্রেপ কমান্ডটিও ব্যবহার করেছি। সেই স্ক্রিনশটে, আমাদের চেইনগুলি বর্তমানে ট্র্যাফিক গ্রহণ করার জন্য তৈরি।

এর চেয়ে বেশি বার, আপনি চাইবেন আপনার সিস্টেমটি ডিফল্টরূপে সংযোগগুলি গ্রহণ করবে। আপনি যদি আগে নীতি শৃঙ্খলা সংক্রান্ত নিয়মগুলি পরিবর্তন না করেন তবে এই সেটিংটি ইতিমধ্যে কনফিগার করা উচিত। যে কোনও উপায়ে, ডিফল্টরূপে সংযোগগুলি গ্রহণ করার আদেশ এখানে রয়েছে:

iptables - পলিসি ইনপুট এসিসিপিটি


iptables - পলিসি আউটপুট এসিসিপিটি


iptables - পলিসি ফরওয়ার্ড এসিসিপিটি

স্বীকৃত নিয়মে ডিফল্ট করে আপনি অন্য সমস্ত সংযোগ গ্রহণ করে চালিয়ে যাওয়ার পরে নির্দিষ্ট আইপি ঠিকানা বা পোর্ট নম্বরগুলি অস্বীকার করতে iptables ব্যবহার করতে পারেন। আমরা এক মিনিটের মধ্যে সেই আদেশগুলি পেয়ে যাব।

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

iptables - পলিসি ইনপুট ড্রপ


iptables - পলিসি আউটপুট ড্রপ


iptables - পলিসি ফরওয়ার্ড ড্রপ

সংযোগ-নির্দিষ্ট প্রতিক্রিয়া

আপনার ডিফল্ট চেইন নীতিগুলি কনফিগার করা হয়ে আপনি iptables এ নিয়ম যুক্ত করা শুরু করতে পারেন যাতে কোনও নির্দিষ্ট আইপি ঠিকানা বা পোর্ট থেকে বা কোনও সংযোগের মুখোমুখি হওয়ার সাথে সাথে কী করা উচিত তা জানে। এই গাইডে, আমরা তিনটি সবচেয়ে বেসিক এবং সাধারণত ব্যবহৃত "প্রতিক্রিয়াগুলি" দেখতে যাচ্ছি।

গ্রহণ করুন - সংযোগের অনুমতি দিন।

ড্রপ - সংযোগটি ফেলে দিন, এমন ঘটনাই ঘটেনি যা কখনও ঘটেনি। আপনি যদি আপনার সিস্টেমটির অস্তিত্ব উপলব্ধি করতে উত্সটি না চান তবে এটি সেরা।

প্রত্যাখ্যান - সংযোগটি অনুমতি দেবেন না তবে ত্রুটিটি আবার প্রেরণ করুন। আপনার সিস্টেমে কোনও নির্দিষ্ট উত্স সংযোগ স্থাপন করতে না চাইলে এটি সেরা but তবে আপনি তাদের ফায়ারওয়ালগুলি অবরুদ্ধ করেছে তা জানতে চান।

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

সংযোগের অনুমতি দেওয়া হচ্ছে:

সংযোগটি বাদ দেওয়া হচ্ছে:

সংযোগ প্রত্যাখ্যান করা হচ্ছে:

নির্দিষ্ট সংযোগগুলিকে মঞ্জুরি দেওয়া বা অবরুদ্ধ করা

আপনার নীতি চেইনগুলি কনফিগার করা সহ, আপনি এখন নির্দিষ্ট ঠিকানা, ঠিকানা ব্যাপ্তি এবং পোর্টগুলিকে অনুমতি বা অবরুদ্ধ করার জন্য আইপটিবলগুলি কনফিগার করতে পারেন। এই উদাহরণগুলিতে, আমরা সংযোগগুলি সেট করব ড্রপ, তবে আপনি এগুলিতে স্যুইচ করতে পারেন এসিসিপিটি বা প্রত্যাখ্যান করুনআপনার প্রয়োজন এবং আপনি কীভাবে আপনার নীতি চেইনগুলি কনফিগার করেছেন তার উপর নির্ভর করে।

দ্রষ্টব্য: এই উদাহরণগুলিতে আমরা ব্যবহার করতে যাচ্ছি iptables -A বিদ্যমান চেইনে বিধি যুক্ত করতে। iptables এর তালিকার শীর্ষে শুরু হয় এবং প্রতিটি নিয়মের মধ্য দিয়ে যায় যতক্ষণ না এটির সাথে এটির মিল রয়েছে। আপনার যদি অন্যের উপরে একটি নিয়ম সন্নিবেশ করা প্রয়োজন, আপনি ব্যবহার করতে পারেন iptables -I [চেইন] [সংখ্যা] এটি তালিকায় থাকা নম্বরটি নির্দিষ্ট করতে হবে।

একটি একক আইপি ঠিকানা থেকে সংযোগগুলি

এই উদাহরণটি আইপি ঠিকানা 10.10.10.10 থেকে সমস্ত সংযোগগুলি কীভাবে ব্লক করবেন তা দেখায়।

iptables -A INPUT -s 10.10.10.10 -j DROP

আইপি অ্যাড্রেসের একটি ব্যাপ্তি থেকে সংযোগ

এই উদাহরণটি 10.10.10.0/24 নেটওয়ার্ক পরিসরে সমস্ত আইপি ঠিকানাগুলিকে কীভাবে ব্লক করবেন তা দেখায়। আপনি আইপি ঠিকানার পরিধি নির্দিষ্ট করতে নেটমাস্ক বা স্ট্যান্ডার্ড স্ল্যাশ স্বরলিপি ব্যবহার করতে পারেন।

iptables -A INPUT -s 10.10.10.0/24 -j DROP

বা

iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

একটি নির্দিষ্ট পোর্টের সাথে সংযোগগুলি

এই উদাহরণটি 10.10.10.10 থেকে এসএসএইচ সংযোগগুলি কীভাবে ব্লক করবেন তা দেখায়।

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

আপনি যে কোনও প্রোটোকল বা পোর্ট নম্বর দিয়ে "ssh" প্রতিস্থাপন করতে পারেন। দ্য -p টিসিপি কোডের অংশটি iptables কে জানায় যে প্রোটোকল কোন ধরণের সংযোগ ব্যবহার করে। আপনি যদি এমন কোনও প্রোটোকল ব্লক করে যা টিসিপি না দিয়ে ইউডিপি ব্যবহার করে, তবে -পি ইউডিপি পরিবর্তে প্রয়োজন হবে।

এই উদাহরণটি দেখায় যে কোনও আইপি ঠিকানা থেকে কীভাবে এসএসএইচ সংযোগগুলি ব্লক করা যায়।

iptables -A INPUT -p tcp --dport ssh -j DROP

সংযোগের রাজ্যসমূহ

যেমনটি আমরা আগেই উল্লেখ করেছি যে প্রচুর প্রোটোকল দ্বি-মুখী যোগাযোগের প্রয়োজন। উদাহরণস্বরূপ, আপনি যদি আপনার সিস্টেমে এসএসএইচ সংযোগগুলি মঞ্জুর করতে চান তবে ইনপুট এবং আউটপুট চেইনগুলিতে তাদের যুক্ত হওয়া একটি নিয়মের প্রয়োজন হবে। তবে, আপনি যদি কেবলমাত্র আপনার সিস্টেমে এসএসএইচ আসার অনুমতি চান? আউটপুট চেইনে কোনও বিধি যুক্ত করাও কি বহির্গামী এসএসএইচ প্রচেষ্টার অনুমতি দেয়?

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

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m state --state New, ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp - 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT

পরিবর্তনগুলি সংরক্ষণ করা হচ্ছে

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

উবুন্টু:

sudo / sbin / iptables-save

রেড হ্যাট / সেন্টোস:

/ sbin / পরিষেবা iptables সংরক্ষণ করুন

বা

/etc/init.d/iptables সেভ করুন

অন্যান্য কমান্ড

বর্তমানে কনফিগার করা iptables নিয়মগুলি তালিকাবদ্ধ করুন:

iptables -L

যোগ করা হচ্ছে -ভি বিকল্পটি আপনাকে প্যাকেট এবং বাইট সম্পর্কিত তথ্য এবং যোগ করবে -এন সংখ্যায় সব কিছু তালিকাভুক্ত করবে। অন্য কথায় - হোস্ট-নেম, প্রোটোকল এবং নেটওয়ার্কগুলি সংখ্যা হিসাবে তালিকাভুক্ত হয়।

বর্তমানে কনফিগার করা সমস্ত নিয়ম সাফ করতে আপনি ফ্লাশ কমান্ড জারি করতে পারেন।

iptables -F


$config[zx-auto] not found$config[zx-overlay] not found