বাশন সার্ভার: সার্ভারে প্রাইভেট কী রেখে টিসিপি ফরোয়ার্ডিং ভিএস ব্যবহার করুন


10

আমাদের বেসমেন্ট সার্ভার বি আছে আমাদের প্রাইভেট কী ব্যবহার করে এ থেকে বি এর মাধ্যমে এসএসএইচ করা দরকার।

এর চেয়ে ভাল বিকল্পটি কী:

  • সার্ভার বিতে বেসরকারী এসএসএইচ কীটি রাখুন আমরা পড়েছি যে কোনও পরিবেশের পরিবেশে এটি করা খারাপ ধারণা idea

    থেকে এখানে :

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

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

    টিসিপি ফরোয়ার্ড: এই মানটিকে সত্যে সেট করা টিসিপি ফরোয়ার্ডিং (এসএসএইচ টানেলিং) সক্ষম করবে। এটি খুব কার্যকর হতে পারে তবে এটি একটি সুরক্ষা ঝুঁকিও রয়েছে, তাই আমরা আপনাকে সুপারিশ করব যে প্রয়োজন না হলে আপনি ডিফল্ট (অক্ষম) সেটিংটি রাখুন

    এছাড়াও থেকে এখানে :

    এসএসএইচ এজেন্ট ফরোয়ার্ডিং ক্ষতিকারক হিসাবে বিবেচিত

এর চেয়ে ভাল কি? দ্বিতীয় লিঙ্কটি থেকে বিকল্প সম্পর্কে কী বলা যায়: প্রক্সিকমন্ড , আমি বুঝতে পারি এটি সকেট ফাইল ইস্যুতে সহায়তা করে, তবে তবুও আমি মনে করি আমাকে টিসিপি ফরোয়ার্ডিং সক্ষম করতে হবে, তাই এটি কি যথেষ্ট নিরাপদ?


2
প্রক্সিকম্যান্ডের সাথে আপনাকে টিসিপি ফরোয়ার্ডিং সক্ষম করার দরকার নেই। ফরোয়ার্ডিং মধ্যবর্তী হোস্টে ssh দ্বারা সম্পন্ন হয়।
wurtel

ধন্যবাদ। কনফিগারেশন ফাইল হওয়া উচিত ছিল? আমার কম্পিউটারে বা বাশনে?
ব্যবহারকারী2503775

আপনার স্থানীয় সিস্টেমে, আপনি ssh hostbকমান্ডটি প্রবেশ করিয়ে যাবেন, যাতে এটি স্থানীয় কনফিগারেশনে হোস্টবাকে দেখতে পারে এবং জানতে পারে যে এটি হোস্টার মাধ্যমে সংযোগ স্থাপন করা দরকার। এটি আপনি
হোস্টায়

সার্ভার সি এর ব্যক্তিগত কী সংরক্ষণ করা হবে? আমার কম্পিউটারেও? আমি কিজেন্টের সাথে কিপাস ব্যবহার করছি
user2503775

2
আমি আশঙ্কা করছি আপনি এজেন্ট ফরওয়ার্ডিংয়ের সাথে টিসিপি ফরোয়ার্ডিংকে বিভ্রান্ত করছেন । তারা বিভিন্ন জিনিস।
এমএলু

উত্তর:


13

প্রক্সিকমন্ড বা প্রক্সি জম্প ব্যবহার করুন

আমি ব্যবহার করার পরামর্শ দিচ্ছি ProxyCommand(বা ProxyJumpসিনট্যাক্সটি সহজ হওয়ায় আরও ভাল তবে এটি ক্লায়েন্টের পক্ষে আমার মনে হয় ওপেনশাস 7.3+ প্রয়োজন), এবং আপনাকে বাশনে প্রাইভেট কী স্থাপন করার দরকার নেই, সবকিছু স্থানীয় থাকে।

প্রক্সি জাম্প সহ উদাহরণ

আপনার ক্লায়েন্ট কম্পিউটারে আপনি ~/.ssh/configঅনুরূপ বিষয়বস্তু সহ একটি ফাইল লিখে ফেলুন:

Host bastion
  HostName bastion.example.com
  User bastion-user
  Port 22
  IdentityFile ~/.ssh/id_bastion

Host srvC
  HostName srvC.local
  User server-user
  IdentityFile ~/.ssh/id_protected_lan
  ProxyJump bastion

এর পরে কাজটি ssh srvCআপনাকে এজেন্ট ফরওয়ার্ডিং বা বেসের ব্যক্তিগত কীটি মোতায়েন না করে বি (অববাহিকা) হয়ে সি এর সাথে সংযুক্ত করবে।

উপরের উদাহরণে, "বাশান" আপনার বাশন হোস্টের একটি উপাধি এবং এসআরভিসি আপনার সার্ভার সি-এর একটি উপনাম the HostNameআপনার হোস্টগুলির জন্য আপনাকে আইপি বা প্রকৃত পুরোপুরি যোগ্যতাসম্পন্ন ডোমেন নাম রাখতে হবে। ব্যবহারকারীদের জন্য, আপনাকে বেসশন Userএবং সার্ভার সি-তে সঠিক লগইন নামের জন্য আপডেট করতে হবে শেষ পর্যন্ত IdentityFileoptionচ্ছিক আপনি যদি স্থানীয় এজেন্ট ব্যবহার করেন (উদাহরণস্বরূপ কী-এজেন্ট বা ssh-এজেন্ট), তবে এটি চলমান না থাকলে এটিও কার্যকর হবে কাজ করুন এবং প্রতিটি কী পাসফ্রেজগুলির জন্য আপনাকে জিজ্ঞাসা করুন।

সর্বজনীন কীগুলি মোতায়েন করা হচ্ছে

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

$ ssh-copy-id -i ~/.ssh/id_bastion.pub \
   -o PreferredAuthentications=password \
   -o PubkeyAuthentication=no \
   bastion
$ ssh-copy-id -i ~/.ssh/id_protected_lan.pub \
   -o PreferredAuthentications=password \
   -o PubkeyAuthentication=no \
   srvC

দ্রষ্টব্য: পাসওয়ার্ড প্রমাণীকরণের অনুমতি থাকলেই উপরেরগুলি কেবলমাত্র কাজ করবে। উপরোক্ত স্থাপনা এবং যাচাইয়ের পরে যা কিছু ঘটেছিল তা যাচাই করার পরে আপনার 2 টি সার্ভারে পাসওয়ার্ড প্রমাণীকরণ অস্বীকার করা উচিত।

প্রক্সিকম্পের পরিবর্তে প্রক্সিকমন্ডের সাথে উদাহরণ

আপনার যদি ওপেনএসএসএইচ এর একটি পুরানো সংস্করণ রয়েছে যা সমর্থন না করে ProxyJump(ক্লায়েন্টের পক্ষে), তবে প্রতিস্থাপন করুন:

ProxyJump bastion

দ্বারা

ProxyCommand ssh -q -W %h:%p bastion

আমি যতদূর বুঝতে পেরেছি, এটি একই রকম।


ধন্যবাদ! আমি লিনাক্সের সাথে কাজ করি, তবে আমাদের কিছু টিম সদস্য উইন্ডোতে কাজ করছেন। এটি সেখানে কাজ করা উচিত, তাই না?
ব্যবহারকারী2503775

তারা কোন এসএসএইচ ক্লায়েন্ট ব্যবহার করবে? ওপেনএসএইচ (ডাব্লুএসএল, বা সাইগউইন বা ইত্যাদি মাধ্যমে) বা পুটিওয়াই (বা পুট্টির উপর ভিত্তি করে অন্য কোনও সরঞ্জাম) মোবাএক্সটার্মের মতো?
Huygens

তাদের মধ্যে কেউ পুটিটি ব্যবহার করেন এবং অন্যরা গিট শেলের মাধ্যমে এসএসএস ব্যবহার করেন।
ব্যবহারকারী2503775

: @ user2503775 আমি পুটিং সঙ্গে এটা চেষ্টা করে না, কিন্তু এটা ProxyCommand পদ্ধতির ব্যবহার সম্ভব হবে বলে মনে হয়, এখানে দেখুন stackoverflow.com/a/28937185
Huygens

1
বিস্তারিত উত্তরের জন্য আপনাকে অনেক ধন্যবাদ!
ব্যবহারকারী2503775

5

আমি প্রক্সি জম্প সম্পর্কে উত্তরটি দেখেছি। প্রক্সিকমন্ড সম্পর্কে কথা বলা যাক ।

তবে অপেক্ষা করুন, অপেক্ষা করুন! আমি আপনাকে লিখতে পারি যে কীভাবে সার্ভার হ্যাক করবেন যা এজেন্ট ফরোয়ার্ডিং ব্যবহার করে, এটি পার্থক্যটি বোঝা আরও সহজ হবে!

আসুন হ্যাক!

প্রাথমিক পদক্ষেপের জন্য: আপনি আমার পোস্টটি এখানে পড়তে পারেন

বেসিক পদক্ষেপগুলি নিম্নলিখিত:

  1. দুর্গ ব্যবহারকারীদের তৈরি করুন
  2. রুট লগইন অক্ষম করুন
  3. হ্যাকিংয়ের প্রচেষ্টা অবরুদ্ধ করুন
  4. পোর্ট পরিবর্তন করুন
  5. ফায়ারওয়াল কনফিগার করুন
  6. সেলিনাক্স কনফিগার করুন

এজেন্ট ফরওয়ার্ডিং কীভাবে ব্যবহার করবেন

Config / .ssh / config এ কনফিগার করুন

  Host bast
        Hostname BASTION_IP
        ForwardAgent yes
        User bastion

-এসএস-এজেন্টে আপনার প্রমাণীকরণ কী যুক্ত করুন

ssh-add ~/.ssh/name_rsa

-ঘাঁটি হোস্টের সাথে সংযোগ স্থাপন করুন

ssh bast

-ঘাঁটি থেকে অ্যাপ্লিকেশন সার্ভার সংযোগ করুন

 ssh app@IP -p PORT

হ্যাকিং!

আপনি, ভাল, আমাকে প্রশ্ন জিজ্ঞাসা করতে পারেন:

  • আমার সার্ভারটি কি সুরক্ষিত? এবং উত্তরটি বেশ সহজ:

    • না!
  • কেন?

    • কারণ আপনি এসএসএইচ এজেন্ট ফরওয়ার্ডিং ব্যবহার করছেন!
  • আর সমস্যা কোথায়?

    • কারণ এজেন্টদের ফরওয়ার্ড করা বিপজ্জনক এবং এটিকে ক্ষতিকারক বলে মনে করা হয়।
  • কেন?

    • আসুন সমস্ত কিছু ভিতরে ব্যাখ্যা করুন: আপনি যখন কুটিরটি হোস্টকে সংযুক্ত করেন তখন আপনার গৌরবময় এসএস-এজেন্ট ফরওয়ার্ড করা হয়। এর অর্থ হল যে সকেটটি সেট আপ করা হবে যাতে আপনার সার্ভারগুলিতে অ্যাক্সেসের জন্য কেউ এই সকেট ডেটা ব্যবহার করতে পারে। আপনার ভাণ্ডার সার্ভারটি আপোস করা হয়েছে তা কল্পনা করুন, যদি আপনার লিনাক্স সার্ভারে কারও কাছে পর্যাপ্ত অনুমতি থাকে তবে সে কেবল আপনার সকেট তথ্য ব্যবহার করবে। ফলস্বরূপ, আপনার সমস্ত সার্ভার অ্যাক্সেস করা যেতে পারে। আমি জানি যে সমঝোতার উইন্ডোটি খুব ছোট কারণ এটি আপনার ঘাঁটি হোস্টের সাথে সংযুক্ত হওয়ার জন্য কতটা সময় নির্ভর করে। আপনার কাছে প্রক্সিকম্যান্ডের মতো অন্যান্য বিকল্প থাকলে আপনি কি সত্যিই ঝুঁকি নিতে চান? সুতরাং, কেবল প্রক্সিকম্যান্ড ব্যবহার করুন!

আপনি যদি বেসমেন্ট হোস্টের সাথে আপস করেন তবে সার্ভারগুলি হ্যাক করবেন কীভাবে?

ট্র্যাক লক্ষ্য

/ টিএমপি ডিরেক্টরিতে আপনি এর মতো কিছু দেখতে পাবেন:

[root@localhost tmp]# ll
total 12
drwx------  2 bastion bastion 4096 Sep  7 17:35 ssh-mKX88v0Vlo

অস্থায়ী ফাইল খুলুন

[root@localhost tmp]# cd ssh-mKX88v0Vlo/
[root@localhost ssh-mKX88v0Vlo]# ll
total 0
srwxr-xr-x 1 bastion bastion 0 Sep  7 17:35 agent.10507

আসুন এই প্রক্রিয়া আইডির সংযোগগুলি দেখুন ।

netstat -nxp | grep  10507

ফলাফল:

unix  [ ]   STREAM     CONNECTED     501384   10507/sshd: bastion

এবং কে সংযুক্ত?

lsof -i -a -p 10507

ফলাফল:

COMMAND  PID   USER  FD  TYPE DEVICE SIZE/OFF NODE NAME
sshd    10507 bastion  3u  IPv4 501301  0t0  TCP *IP*:ssh->*IP*:8279 (ESTABLISHED)

আমরা সকেট ফাইলগুলিও দেখতে পারি:

cd /proc/10507/fd/
ls

ফলাফল:

lrwx------ 1 root root 64 Sep  7 17:46 0 -> /dev/null
lrwx------ 1 root root 64 Sep  7 17:46 1 -> /dev/null
lrwx------ 1 root root 64 Sep  7 17:46 10 -> /dev/ptmx
lrwx------ 1 root root 64 Sep  7 17:46 14 -> /dev/ptmx
lrwx------ 1 root root 64 Sep  7 17:46 15 -> /dev/ptmx
lrwx------ 1 root root 64 Sep  7 17:46 2 -> /dev/null
lrwx------ 1 root root 64 Sep  7 17:46 3 -> socket:[501994]
lrwx------ 1 root root 64 Sep  7 17:46 4 -> socket:[502069]
lrwx------ 1 root root 64 Sep  7 17:46 5 -> socket:[502072]
l-wx------ 1 root root 64 Sep  7 17:46 6 -> /run/systemd/sessions/1836.ref
lr-x------ 1 root root 64 Sep  7 17:46 7 -> pipe:[502079]
l-wx------ 1 root root 64 Sep  7 17:46 8 -> pipe:[502079]
lrwx------ 1 root root 64 Sep  7 17:46 9 -> socket:[502080]

এবং ক্লায়েন্ট দূরবর্তী সার্ভারের সাথে সংযুক্ত হবে তখন কী ঘটে ? দেখা যাক:

lrwx------ 1 root root 64 Sep  7 17:46 0 -> /dev/null
lrwx------ 1 root root 64 Sep  7 17:46 1 -> /dev/null
lrwx------ 1 root root 64 Sep  7 17:46 10 -> /dev/ptmx
lrwx------ 1 root root 64 Sep  7 17:48 11 -> socket:[502267]
lrwx------ 1 root root 64 Sep  7 17:46 14 -> /dev/ptmx
lrwx------ 1 root root 64 Sep  7 17:46 15 -> /dev/ptmx
lrwx------ 1 root root 64 Sep  7 17:46 2 -> /dev/null
lrwx------ 1 root root 64 Sep  7 17:46 3 -> socket:[501994]
lrwx------ 1 root root 64 Sep  7 17:46 4 -> socket:[502069]
lrwx------ 1 root root 64 Sep  7 17:46 5 -> socket:[502072]
l-wx------ 1 root root 64 Sep  7 17:46 6 -> /run/systemd/sessions/1836.ref
lr-x------ 1 root root 64 Sep  7 17:46 7 -> pipe:[502079]
l-wx------ 1 root root 64 Sep  7 17:46 8 -> pipe:[502079]
lrwx------ 1 root root 64 Sep  7 17:46 9 -> socket:[502080]

এমনকি আমরা দেখতে পাচ্ছি যে সকেট ফাইল নেটস্ট্যাট ব্যবহার করে ব্যবহৃত হচ্ছে:

unix  3 [ ]  STREAM  CONNECTED  502267  10561/sshd: 
                     bastion  /tmp/ssh-oVoMXC6vb8/agent.10561
unix  3  [ ] STREAM     CONNECTED     502072   10561/sshd:  bastion 

সকেটের তথ্য এবং আইপি ঠিকানা চুরি করুন

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

netstat -tn

চূড়ান্ত পদক্ষেপ ব্যবহার করতে ফরওয়ার্ড সকেট ফাইল

eval "$(ssh-agent -s)"
SSH_AUTH_SOCK=/tmp/ssh-EAKxOdL4fl/agent.10507

কীটি বোঝা হয়েছে কিনা তা পরীক্ষা করুন

ssh-add -l

ফলে কিছু হওয়া উচিত যে ভালো :

2048 SHA256:2Psdl..B5KQ /home/usr/.ssh/name_rsa (RSA)

সার্ভার হ্যাক হয়েছে, কীভাবে সুরক্ষা সমস্যা সমাধান করবেন?

প্রক্সি কমান্ড

Host app
    Hostname *.*.*.*
    IdentityFile ~/.ssh/your_rsa
    User *******
    Port ****
    ProxyCommand ssh -W %h:%p bast

Host bast
     Hostname *.*.*.*
     ForwardAgent no
     User ******

প্রাথমিক ক্রিয়াকলাপগুলির জন্য: সার্ভারগুলির মাধ্যমে কীভাবে ফাইলগুলি স্থানান্তর করতে হয় (ক্লায়েন্ট থেকে সার্ভার, ক্লায়েন্টে ক্লায়েন্টে), আপনি আমার পোস্টে এখানে পড়তে পারেন

উপসংহার

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

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


আপনাকে অনেক ধন্যবাদ! প্রকৃতপক্ষে, আমরা লগইন করার সময় গুগল প্রমাণীকরণকারীও ব্যবহার করি।
ব্যবহারকারী 2503775

যখন SSH অ্যাপ্লিকেশন কল করতে চাইছেন আমি একজন ত্রুটি পেয়ে করছি: channel 0: open failed: administratively prohibited: open failed. stdio forwarding failed. । আপনার কি ধারণা আছে কেন ?. সুরক্ষিত লগ এ আমি দেখতে পাচ্ছি:refused local port forward: originator 127.0.0.1 port 65535, target *app-ip* port 22
ব্যবহারকারী 2503775

দুর্দান্ত তথ্য। আপনার উত্তরের পাঠযোগ্যতার উন্নতি করার জন্য একটি ছোট্ট পরামর্শ। আপনার ব্লগের সামগ্রীটি এখানে অনুলিপি / আটকান না। লিঙ্ক এবং কেবল একটি সংক্ষিপ্তসার সরবরাহ করুন। তারপরে আসল উত্তরের অংশটি হাইলাইট করুন (যা আপনার জন্য প্রক্সিকম্যান্ড ব্যবহার করছেন)। আমি দেখেছি আপনি শুরুতে এক ধরণের চেষ্টা করেছিলেন তবে অনুলিপি দেওয়ার মতো কপি / পেস্টের অংশটি দিয়েছিলেন। যাইহোক +1
হিউজেনস

@ user2503775 এটি আলাদা সমস্যা হওয়া উচিত, এসএসএইচ-এজেন্ট ফরওয়ার্ডিং / প্রক্সি কমান্ড সম্পর্কিত নয়। লগ সহ একটি নতুন প্রশ্ন খুলুন।
গ্রেপ


4

অন্যদের মতো কেবল এসএসএইচ এজেন্ট ফরওয়ার্ডিং ব্যবহার করুন।

  • কীগুলি আপনার ল্যাপটপে ssh এজেন্টে থাকবে।
  • এজেন্টের মাধ্যমে প্রমাণীকরণ করে আপনি দুর্গে প্রবেশ করুন।
  • সেখান থেকে আপনার হোস্টকে লগইন করুন, প্রমাণীকরণের অনুরোধটি আপনার ল্যাপটপে ফিরে পাঠানো হবে

সুবিধা: দুর্গ ব্যবহার করা যায় এমন দুর্ঘটনায় কোনও কী নেই stored

আশা করি এইটি কাজ করবে :)


হাই, ওপি তার / তার দ্বিতীয় বুলেটে মূলত এটি বর্ণনা করে। আমি আপনাকে পরামর্শ দেওয়া দ্বিতীয় লিঙ্ক পরীক্ষা করতে পরামর্শ দিই।
হিউজেন্স

@ হাইজেনস সত্য আমি এখন লক্ষ্য করেছি। এজেন্ট ফরওয়ার্ডিংয়ের সাথে তিনি টিসিপি ফরোয়ার্ডিংয়ের সাথে একসাথে মিশ্রিত হয়ে গিয়েছি।
এমএলু

প্রকৃতপক্ষে এটি মিশ্রিত হয়েছে :-)
হিউজেন্স

এটি মিশ্রিত নয়। আমি পার্থক্য বুঝতে পারি। আমি এটিকে পরিষ্কার করার জন্য প্রশ্নটি সম্পাদনা করেছি।
ব্যবহারকারী2503775

আমি একটি উত্তর লিখেছি, কীভাবে এজেন্ট ফরোয়ার্ডিং হ্যাক করবেন (কোনও কী নেই তবে সকেট খোলা আছে)। সাধারণত, এজেন্ট ফরোয়ার্ডিং ঠিক আছে কারণ কীগুলি চুরি করার সম্ভাবনা খুব কম - প্রথমত, আপনাকে অবশ্যই ঘাঁটি হোস্টটি হ্যাক করতে হবে। : যাই হোক আপনি আমার উত্তর দেখতে পারেন serverfault.com/a/958466/476642
, grep
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.