লিনাক্সের পরিষেবাগুলিতে রিমোট অ্যাক্সেস সক্ষম করতে কীভাবে কোনও ইপিটেবল ফায়ারওয়াল সেটআপ করবেন - পার্ট 8


লিনাক্স ফাউন্ডেশন শংসাপত্র প্রোগ্রামটি উপস্থাপন করা হচ্ছে

আপনি পর্ব 1 টি থেকে স্মরণ করবেন - এই এলএফসিই ( লিনাক্স ফাউন্ডেশন সার্টিফাইড ইঞ্জিনিয়ার ) সিরিজের Iptables সম্পর্কে যা আমরা ফায়ারওয়াল কী তার একটি মৌলিক বিবরণ দিয়েছিলাম: পরিচালনা করার ব্যবস্থা প্যাকেটগুলি নেটওয়ার্কে চলে আসছে এবং চলে যাচ্ছে। "পরিচালনা" দ্বারা আমরা প্রকৃতপক্ষে বোঝাতে চাইছি:

  1. নির্দিষ্ট প্যাকেটগুলিকে আমাদের নেটওয়ার্কে প্রবেশ করতে বা ছাড়ার অনুমতি বা প্রতিরোধ করার জন্য
  2. নেটওয়ার্কের এক পয়েন্ট থেকে অন্য প্যাকেটগুলি অন্য দিকে ফরোয়ার্ড করতে

পূর্বনির্ধারিত মানদণ্ডের ভিত্তিতে।

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

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

আপনি কোনও ফায়ারওয়ালকে আন্তর্জাতিক বিমানবন্দর হিসাবে ভাবতে পারেন যেখানে যাত্রী বিমানগুলি প্রায় 24/7 হয়ে যায়। বেশ কয়েকটি শর্তের উপর নির্ভর করে যেমন কোনও ব্যক্তির পাসপোর্টের বৈধতা, বা তার/তার জন্মের দেশ (কয়েকটি উদাহরণের নাম দিতে) তাকে বা সে নির্দিষ্ট দেশে প্রবেশ করতে বা ছেড়ে যেতে দেওয়া হতে পারে।

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

এই টিউটোরিয়ালটির বাকি সময় আমরা বিমানবন্দর সাদৃশ্যটি দরকারী খুঁজে পেতে পারি। আমরা এগিয়ে চলার সাথে সাথে নিম্নলিখিত সম্পর্কের কথা মাথায় রাখি:

  1. ব্যক্তি = প্যাকেট
  2. ফায়ারওয়াল = বিমানবন্দর
  3. দেশ # 1 = নেটওয়ার্ক # 1
  4. দেশ # 2 = নেটওয়ার্ক # 2
  5. আধিকারিকদের দ্বারা প্রয়োগ করা বিমানবন্দর বিধিগুলি = ফায়ারওয়াল বিধি

Iptables - মূল কথা

নিম্ন স্তরে, এটি শৃঙ্খলে বা বাক্য বিভক্ত বিধিগুলির ভিত্তিতে প্যাকেটগুলির সাথে " সিদ্ধান্ত নেয় " যা কর্নেল নিজেই is এই চেইনগুলি কোনও প্যাকেজ তাদের দ্বারা নির্ধারিত মানদণ্ডের সাথে মিলে গেলে কী ব্যবস্থা নেওয়া উচিত তা সংজ্ঞায়িত করে।

Iptables দ্বারা নেওয়া প্রথম পদক্ষেপটি কোনও প্যাকেট দিয়ে কী করবেন তা সিদ্ধান্ত নিয়ে গঠিত হবে:

  1. এটি স্বীকার করুন (এটি আমাদের নেটওয়ার্কে যেতে দিন)?
  2. এটি প্রত্যাখ্যান করুন (এটি আমাদের নেটওয়ার্ক অ্যাক্সেস করা থেকে বিরত করুন)?
  3. এটি (অন্য চেইনে) ফরোয়ার্ড করবেন?

কেবলমাত্র আপনি যদি ভাবছিলেন যে কেন এই সরঞ্জামটিকে আইপটিবলস বলা হয়, কারণ এই চেইনগুলি টেবিলগুলিতে সংগঠিত করা হয়, ফিল্টার টেবিল সর্বাধিক জানা এবং এটি একটি প্যাকেট ফিল্টারিং এর তিনটি ডিফল্ট চেইন ব্যবহার করে:

1. ইনপুট চেইন নেটওয়ার্কে আসা প্যাকেটগুলি পরিচালনা করে যা স্থানীয় প্রোগ্রামগুলির জন্য নির্ধারিত।

স্থানীয় নেটওয়ার্কে উত্পন্ন প্যাকেটগুলি বিশ্লেষণ করতে 2. চেইন ব্যবহার করা হয়, যা বাইরের দিকে প্রেরণ করা হয়।

৩. ফরওয়ার্ড চেইন প্যাকেটগুলি প্রক্রিয়া করে যা অন্য গন্তব্যে (রাউটারের ক্ষেত্রে) ফরোয়ার্ড করা উচিত।

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

# iptables -L

উপলভ্য নীতিগুলি নিম্নরূপ:

  1. স্বীকৃতি the প্যাকেটটি দিয়ে দেয়। চেইনের কোনও নিয়মের সাথে মেলে না এমন কোনও প্যাকেট নেটওয়ার্কে অনুমোদিত।
  2. ড্রপ ly প্যাকেটটি নিঃশব্দে ফেলে দেয়। চেইনের কোনও নিয়মের সাথে মেলে না এমন কোনও প্যাকেট নেটওয়ার্কে প্রবেশ করা থেকে বিরত।
  3. বাতিল the প্যাকেটটি প্রত্যাখ্যান করে এবং একটি তথ্যমূলক বার্তা দেয় returns এটি বিশেষত একটি ডিফল্ট নীতি হিসাবে কাজ করে না। পরিবর্তে, এটি প্যাকেট ফিল্টারিং নিয়মের পরিপূরক হিসাবে বোঝানো হয়েছে

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

ফায়ারওয়ালে একটি নিয়ম যুক্ত করতে, iptables কমান্ডটি নিম্নলিখিতভাবে অনুরোধ করুন:

# iptables -A chain_name criteria -j target

কোথায়,

  1. - এ এর অর্থ অ্যাপেন্ড (চেইনের শেষের দিকে বর্তমানের নিয়ম সংযোজন)
  2. চেন_নাম হয় ইনপুট, আউটপুট বা ফরোয়ার্ড
  3. লক্ষ্য হ'ল এই ক্ষেত্রে (এসিসিপিটি, রিজেক্ট, বা ড্রপ) প্রয়োগ করার নীতি, বা নীতি।
  4. মাপদণ্ড প্যাকেটগুলি পরীক্ষা করার জন্য শর্তগুলির সেট। এটি নীচের পতাকাগুলির মধ্যে কমপক্ষে একটি (সম্ভবত আরও বেশি) এর সমন্বয়ে গঠিত। একটি উল্লম্ব বার দ্বারা পৃথক করা বন্ধনীগুলির মধ্যে বিকল্পগুলি একে অপরের সমতুল্য। বাকিগুলি alচ্ছিক সুইচগুলি উপস্থাপন করে:

[--protocol | -p] protocol: specifies the protocol involved in a rule.
[--source-port | -sport] port:[port]: defines the port (or range of ports) where the packet originated.
[--destination-port | -dport] port:[port]: defines the port (or range of ports) to which the packet is destined.
[--source | -s] address[/mask]: represents the source address or network/mask.
[--destination | -d] address[/mask]: represents the destination address or network/mask.
[--state] state (preceded by -m state): manage packets depending on whether they are part of a state connection, where state can be NEW, ESTABLISHED, RELATED, or INVALID.
[--in-interface | -i] interface: specifies the input interface of the packet.
[--out-interface | -o] interface: the output interface.
[--jump | -j] target: what to do when the packet matches the rule.

প্রথম দুটি জন্য নিম্নলিখিত পরীক্ষার পরিবেশটি ব্যবহার করে 3 টি ক্লাসিক উদাহরণে সমস্ত কিছু আঠালো করা যাক:

Firewall: Debian Wheezy 7.5 
Hostname: dev2.gabrielcanepa.com
IP Address: 192.168.0.15
Source: CentOS 7 
Hostname: dev1.gabrielcanepa.com
IP Address: 192.168.0.17

এবং এটি শেষ উদাহরণের জন্য

NFSv4 server and firewall: Debian Wheezy 7.5 
Hostname: debian
IP Address: 192.168.0.10
Source: Debian Wheezy 7.5 
Hostname: dev2.gabrielcanepa.com
IP Address: 192.168.0.15

আমাদের ফায়ারওয়ালে ইনপুট পিংসের জন্য আমরা প্রথমে একটি ড্রপ নীতি নির্ধারণ করব। অর্থাৎ, আইসিএমপি প্যাকেটগুলি নিঃশব্দে বাদ দেওয়া হবে।

# ping -c 3 192.168.0.15
# iptables -A INPUT --protocol icmp --in-interface eth0 -j DROP

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

# iptables -F INPUT
# iptables -A INPUT --protocol icmp --in-interface eth0 -j REJECT
# ping -c 3 192.168.0.15

আমরা বহির্গামী ট্র্যাফিক পরিচালনা করার সাথে সাথে আউটপুট চেইনের সাথে আমরা কাজ করব:

# iptables -A OUTPUT --protocol tcp --destination-port 22 --out-interface eth0 --jump REJECT

সমস্ত ধরণের ট্র্যাফিকের জন্য 2049 এবং 111 বন্দর বন্ধ করতে NFSv4 সার্ভার/ফায়ারওয়ালে নিম্নলিখিত কমান্ডগুলি চালান:

# iptables -F
# iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 2049 -j REJECT
# iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 111 -j REJECT

এখন সেই পোর্টগুলি খুলুন এবং দেখুন কী ঘটে।

# iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 111 -j ACCEPT
# iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 2049 -j ACCEPT

আপনি দেখতে পাচ্ছেন, ট্র্যাফিক খোলার পরে আমরা এনএফএসভি 4 শেয়ারটি মাউন্ট করতে সক্ষম হয়েছি।

পূর্ববর্তী উদাহরণগুলিতে আমরা দেখিয়েছিলাম কীভাবে ইনপুট এবং আউটপুট চেইনে বিধিগুলি যুক্ত করা যায়। যদি আমরা পূর্বনির্ধারিত অবস্থার পরিবর্তে সেগুলি toোকাতে চাই তবে আমাদের পরিবর্তে -I (বড় হাতের আই) সুইচটি ব্যবহার করা উচিত।

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

আমরা এটি দেখানোর জন্য একটি তুচ্ছ উদাহরণ ব্যবহার করব:

আসুন নীচের নিয়মটি রাখুন,

# iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT

2 পজিশনে) ইনপুট চেইনে (এভাবে আগের # 2 কে # 3 হিসাবে সরানো)

উপরের সেটআপটি ব্যবহার করে, ট্র্যাফিক 8049 পোর্ট অনুসন্ধানের আগে 80 পোর্টে নির্দেশিত কিনা তা পরীক্ষা করে দেখানো হবে।

বিকল্পভাবে, আপনি একটি নিয়ম মুছতে পারেন এবং বাকি বিধিগুলির লক্ষ্যটিকে REJECT ( -R স্যুইচ ব্যবহার করে) এ পরিবর্তন করতে পারেন:

# iptables -D INPUT 1
# iptables -nL -v --line-numbers
# iptables -R INPUT 2 -i eth0 -s 0/0 -p tcp --dport 2049 -j REJECT
# iptables -R INPUT 1 -p tcp --dport 80 -j REJECT

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

ফায়ারওয়াল নিয়ম সংরক্ষণ করা:

# iptables-save > /etc/iptables/rules.v4		[On Ubuntu]
# iptables-save > /etc/sysconfig/iptables		[On CentOS / OpenSUSE]

পুনরুদ্ধার নিয়ম:

# iptables-restore < /etc/iptables/rules.v4		[On Ubuntu]
# iptables-restore < /etc/sysconfig/iptables		[On CentOS / OpenSUSE]

উপরে বর্ণিত ডিফল্ট পরিবর্তে iptables.dump নামক একটি ডামি ফাইল ব্যবহার করে আমরা এখানে একই পদ্ধতি (হাত দিয়ে ফায়ারওয়াল নিয়মগুলি সংরক্ষণ এবং পুনরুদ্ধার) দেখতে পাই।

# iptables-save > iptables.dump

বুটগুলি জুড়ে এই পরিবর্তনগুলি অবিরাম করতে:

উবুন্টু : iptables-persistance প্যাকেজটি ইনস্টল করুন যা /etc/iptables/rules.v4 ফাইলে সংরক্ষিত নিয়মগুলি লোড করবে।

# apt-get install iptables-persistent

CentOS : /etc/sysconfig/iptables-config ফাইলে নিম্নলিখিত 2 টি লাইন যুক্ত করুন।

IPTABLES_SAVE_ON_STOP="yes"
IPTABLES_SAVE_ON_RESTART="yes"

ওপেনসুএস : অনুমোদিত বন্দর, প্রোটোকল, ঠিকানা এবং এর বাইরে /etc/sysconfig/SuSEfirewall2 এ অনুমোদিত (কমা দ্বারা পৃথক করা) তালিকাবদ্ধ করুন।

আরও তথ্যের জন্য ফাইলটি নিজেই দেখুন, যা প্রচুর মন্তব্য করা হয়।

উপসংহার

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

আপনারা যারা ফায়ারওয়াল অনুরাগী তাদের মনে রাখবেন যে আমরা এই এলএফসিই সিরিজের পার্ট 10 তে আরও সুনির্দিষ্ট অ্যাপ্লিকেশন সহ এই বিষয়টিকে আবার ঘুরে দেখব।

আপনার যদি কোনও প্রশ্ন বা মন্তব্য থাকে তবে নির্দ্বিধায় আমাকে জানান।