পোর্ট ফরওয়ার্ডিংয়ের জন্য একটি সীমাবদ্ধ এসএসএইচ ব্যবহারকারী কীভাবে তৈরি করবেন?


106

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

আমি কীভাবে এমন একটি বিধিনিষেধযুক্ত ব্যবহারকারী তৈরি করব যা উপরের বর্ণনার চেয়ে আরও কিছু করতে পারে না?

নতুন ব্যবহারকারী আবশ্যক না পাবে:

  • শেল কমান্ড কার্যকর করা
  • ফাইল অ্যাক্সেস করুন বা সার্ভারে ফাইল আপলোড করুন
  • প্রক্সি হিসাবে সার্ভারটি ব্যবহার করুন (যেমন ওয়েবপ্রক্সি)
  • স্থানীয় পরিষেবাগুলিতে অ্যাক্সেস করুন যা অন্যথায় ফায়ারওয়ালের কারণে সর্বজনীনভাবে অ্যাক্সেসযোগ্য ছিল না
  • সার্ভার হত্যা

সংক্ষিপ্ত আকারে, কীভাবে আমি একটি সীমাবদ্ধ এসএসএইচ ব্যবহারকারী তৈরি করব যা কেবল সুযোগ-সুবিধা ছাড়াই এসএসএইচ সার্ভারের সাথে সংযোগ করতে সক্ষম, তাই আমি তার কম্পিউটারের সাথে সেই সংযোগের মাধ্যমে সংযোগ রাখতে পারি?


উত্তর:


166

টিএল; ডিআর - "নিষেধাজ্ঞাগুলি প্রয়োগ করা" উত্তরের নীচে যান

একটি সীমাবদ্ধ ব্যবহারকারী যুক্ত করার দুটি অংশ রয়েছে: 1. ব্যবহারকারী তৈরি করা 2. এসএসএইচ ডেমন কনফিগার করা (এসএসডিডি)

Sshd কনফিগার করা হচ্ছে

এসএসএইচের সম্ভাব্যতা জানার জন্য সবচেয়ে ভাল জায়গাটি সম্পর্কিত ম্যানুয়াল পৃষ্ঠাগুলি পড়ে:

এসএসএইচ ক্লায়েন্ট কোথায় কর্ম করতে পারে?

আপনি কিছু সীমাবদ্ধ করার আগে আপনাকে এসএসএইচ এর বৈশিষ্ট্যগুলি জানতে হবে know ম্যানুয়াল পৃষ্ঠাগুলির মাধ্যমে থুথু ফল দেয়:

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

Sshd (8) এর ম্যানুয়াল পৃষ্ঠার প্রমাণীকরণ বিভাগ থেকে :

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

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

এসএসএইচ বৈশিষ্ট্যগুলিকে সীমাবদ্ধ করার জন্য বিকল্পসমূহ

ফাইলগুলি এবং তাদের বিকল্পগুলি যা আচরণকে পরিবর্তন করে:

  • ~/.ssh/authorized_keys - এমন কী রয়েছে যা সংযোগের জন্য অনুমোদিত যা বিকল্পগুলি দেওয়া যেতে পারে:
    • command="command"- ব্যবহারকারী দ্বারা সরবরাহিত কমান্ডটি (যদি থাকে) উপেক্ষা করা হয়। নোট করুন ক্লায়েন্ট টিসিপি এবং / অথবা এক্স 11 ফরোয়ার্ডিং নির্দিষ্ট করতে পারে যদি না তারা স্পষ্টভাবে নিষিদ্ধ হয় । নোট করুন যে এই বিকল্পটি শেল, কমান্ড বা সাবসিস্টেম এক্সিকিউশনের ক্ষেত্রে প্রযোজ্য।
    • no-agent-forwarding - এই কীটি যখন প্রমাণীকরণের জন্য ব্যবহৃত হয় তখন নিষিদ্ধ প্রমাণীকরণ এজেন্ট ফরোয়ার্ডিং।
    • no-port-forwarding - এই কীটি যখন প্রমাণীকরণের জন্য ব্যবহৃত হয় তখন ফোবিডস টিসিপি ফরোয়ার্ডিং
    • no-X11-forwarding - "এই কীটি প্রমাণীকরণের জন্য ব্যবহৃত হলে ফরবিডস এক্স 11 ফরোয়ার্ডিং।"
    • permitopen="host:port" - স্থানীয় 'ssh -L' পোর্ট ফরওয়ার্ডিং সীমাবদ্ধ করুন যাতে এটি কেবলমাত্র নির্দিষ্ট হোস্ট এবং পোর্টের সাথে সংযোগ স্থাপন করতে পারে।
  • ~/.ssh/environment- এই ফাইলটি লগইন-এ পরিবেশের মধ্যে পড়ে (যদি তা বিদ্যমান থাকে)। পরিবেশ প্রক্রিয়াকরণ ডিফল্টরূপে অক্ষম থাকে এবং পারমিট ইউজার-পরিবেশ বিকল্পের মাধ্যমে নিয়ন্ত্রিত হয়
  • ~/.ssh/rc - ব্যবহারকারীর হোম ডিরেক্টরি অ্যাক্সেসযোগ্য হওয়ার আগে চালনা করার সূচনা রুটিন ধারণ করে।
  • /etc/ssh/sshd_config - সিস্টেম-ব্যাপী কনফিগারেশন ফাইল
    • AllowAgentForwarding - ssh- এজেন্ট (1) ফরোয়ার্ডিং অনুমোদিত কিনা তা নির্দিষ্ট করে।
    • AllowTcpForwarding
    • ForceCommand - "ক্লায়েন্ট এবং ~ / .ssh / rc উপস্থিত কোনও কমান্ড উপেক্ষা করে ফোর্সকমন্ড দ্বারা সুনির্দিষ্ট কমান্ডটি কার্যকর করতে জোর করে c
    • GatewayPorts - "ক্লায়েন্টের জন্য ফরোয়ার্ড করা পোর্টগুলিতে দূরবর্তী হোস্টগুলি সংযোগ করার অনুমতি দেওয়া হয়েছে কিনা তা নির্দিষ্ট করে default যে sshd- র দূরবর্তী পোর্ট ফরওয়ার্ডিংকে নন-লুপব্যাক ঠিকানাগুলিতে আবদ্ধ করার অনুমতি দেওয়া উচিত, এইভাবে অন্যান্য হোস্টকে সংযোগ স্থাপনের অনুমতি দেয়। "
    • PermitOpen:

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

      PermitOpen host:port
      PermitOpen IPv4_addr:port
      PermitOpen [IPv6_addr]:port
      

      একাধিক ফরোয়ার্ড শ্বেত স্পেস দিয়ে আলাদা করে নির্দিষ্ট করা যেতে পারে। 'যে কোনও' একটি যুক্তি সমস্ত বিধিনিষেধ অপসারণ এবং যে কোনও ফরওয়ার্ডিংয়ের অনুরোধের অনুমতি দিতে ব্যবহার করা যেতে পারে। ডিফল্টরূপে সমস্ত বন্দর ফরওয়ার্ডিং অনুরোধ অনুমোদিত।

    • PermitTunnel- টিউন (4) ডিভাইস ফরওয়ার্ডিং অনুমোদিত কিনা তা উল্লেখ করে। ডিফল্টটি 'না'
    • X11Forwarding- এক্স 11 ফরওয়ার্ডিং অনুমোদিত কিনা তা উল্লেখ করে। ডিফল্টটি 'না'

সীমাবদ্ধতা প্রয়োগ করা

সিস্টেম-ওয়াইড কনফিগারেশন ফাইলটি সংশোধন /etc/ssh/sshd_configকরা পাসওয়ার্ড-ভিত্তিক প্রমাণীকরণ প্রয়োগ করা থাকলে বা এতে থাকা বিধিনিষেধগুলি ~/.ssh/authorized_keysঘটনাক্রমে অপসারণ করা হলেও কনফিগারেশনটি প্রয়োগ করতে দেয় । আপনি যদি বিশ্বব্যাপী ডিফল্টগুলি সংশোধন করে থাকেন তবে সেই অনুসারে আপনার বিকল্পগুলি অসুবিধা করা উচিত।

Match User limited-user
   #AllowTcpForwarding yes
   #X11Forwarding no
   #PermitTunnel no
   #GatewayPorts no
   AllowAgentForwarding no
   PermitOpen localhost:62222
   ForceCommand echo 'This account can only be used for [reason]'

এখন একটি ব্যবহারকারী যুক্ত করুন:

sudo useradd -m limited-user

ForceCommandশেলটি একটি অ-শেলের মতো /bin/false(বা /bin/true) যেমন /bin/false -c [command]কিছু না করে সেট করা থাকে তবে বিকল্পটি বাদ দেওয়া যেতে পারে।

এখন ক্লায়েন্টটি কেবল এসএসএইচ-এর মাধ্যমে সার্ভারের লুপব্যাক ঠিকানায় 62222 পোর্টের সাথে সংযোগ করতে পারে (এটি পাবলিক আইপি ঠিকানায় শুনবে না)

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

যদি সিস্টেম-বিস্তৃত কনফিগারেশন এবং অক্ষম পাসওয়ার্ড-ভিত্তিক প্রমাণীকরণে টিসিপি ফরোয়ার্ডিং অনুমোদিত হয় তবে আপনি প্রতি-কী সেটিংসও ব্যবহার করতে পারেন। (বিকল্পগুলির মধ্যে একটি স্থান সহ ) এর ~/.ssh/authorized_keysআগে পরবর্তী বিকল্পগুলি সম্পাদনা করুন এবং যুক্ত ssh-করুন ssh-:

command="echo 'This account can only be used for [reason]'",no-agent-forwarding,no-X11-forwarding,permitopen="localhost:62222"

যাচাই করুন

এটি প্রত্যাশা মতো কাজ করে তা নিশ্চিত হওয়ার জন্য কয়েকটি পরীক্ষার কেস চালানো দরকার। নীচের কমান্ডগুলিতে, hostযদি এটি সেট না করা থাকে তবে প্রকৃত লগইন দ্বারা প্রতিস্থাপন করা উচিত ~/.ssh/config। কমান্ডের পিছনে, একটি কমান্ড প্রদর্শিত হয় যা ক্লায়েন্ট বা সার্ভারে নির্ধারিত হওয়া উচিত (নির্দিষ্ট হিসাবে)।

# connection closed:
ssh host
# connection closed (/bin/date is not executed):
ssh host /bin/date
# administratively prohibited (2x):
ssh host -N -D 62222 # client: curl -I --socks5 localhost:62222 example.com
ssh host -N -L 8080:example.com:80 # client: curl -I localhost:8080
sftp host
# should be possible because the client should forward his SSH server
ssh host -N -R 8080:example.com:80 # server: curl -I localhost:8080
# This works, it forwards the client SSH to the server
ssh host -N -R 62222:localhost:22
# unfortunately, the client can listen on that port too. Not a big issue
ssh host -N -L 1234:localhost:62222

উপসংহার

চেকলিস্ট: এসএসএইচ ব্যবহারকারীর পক্ষে এটি করা উচিত নয়:

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

3
এটি কাজ করার জন্য, যুক্ত অ্যাকাউন্টটি useraddঅবশ্যই আনলক করা উচিত। এটি /etc/shadowএকটি অ্যাসেট্রিক ( *) দ্বারা পাসওয়ার্ড প্রতিস্থাপন বা ব্যবহার করে একটি পাসওয়ার্ড সেট করে করা যায় sudo passwd limited-user
লেকেনস্টেইন

2
এসএফটিপি কাজ করে কারণ এসএসএইচ সার্ভার sftp-serverকমান্ডটি চালায় । এর সাথে ForceCommand, এই আদেশটি আর কার্যকর করা হবে না।
লেকেনস্টেইন

2
এছাড়াও দরকারী from=বিকল্প authorized_keys। এটি আপনাকে নির্দিষ্ট আইপি ঠিকানা বা হোস্ট-নেম সহ উত্সগুলিতে কী ব্যবহার সীমাবদ্ধ করতে দেয়। উদাহরণ, from="1.1.1.1"বা from="10.0.0.?,*.example.com"। সমস্ত অনুমোদিত_মানের বিকল্পগুলির জন্য ম্যান পৃষ্ঠায় ( linux.die.net/man/8/sshd ) বিভাগে "AUTHORIZED_KEYS ফাইল ফর্ম্যাট " বিভাগটি দেখুন ।
ডন লি

2
"AllowTcp ফরওয়ার্ডিং লোকাল" রিমোট ফরওয়ার্ডিং নিষিদ্ধ করে। (আমি জানি না যে এই উত্তরটি যখন লেখা হয়েছিল তখন এটি বিদ্যমান ছিল কিনা
সাইমন সাপিন

1
মনে রাখবেন, এই ক্রমাগত এসএসএইচ সংযোগেই ভাঙ্গা পরার, তাই আপনি ভালো কিছু থাকা উচিত নয় Host * ControlMaster autoআপনার ~/.ssh/configযখন সাথে সংযোগ ফাইল ssh -N। আপনার যদি এটির প্রয়োজন হয়, ব্যবহার করুনssh -N -o ControlMaster=no
nh2

3

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

  • কোনও ব্যবহারকারীকে আপনি সাধারণত যেমন যুক্ত করেন ('অ্যাডুজার' বা অন্য কোনও সরঞ্জাম)

  • .Ssh dir এবং .ssh / अधिकृत_keys ব্যবহারকারী তৈরি করুন

your_user $ sudo -Hu ssh_forwarder /bin/bash

ssh_forwarder $ cd ~
ssh_forwarder $ mkdir .ssh
ssh_forwarder $ ( umask 066 && cat > .ssh/authorized_keys ) <<EOF
no-agent-forwarding,no-X11-forwarding,command="read a; exit" ssh-rsa AAAB3NzaC1y....2cD/VN3NtHw== smoser@brickies
EOF
  • এই অ্যাকাউন্টে পাসওয়ার্ড অ্যাক্সেস অক্ষম করুন।
your_user $ sudo usermod --lock ssh_forwarder

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

'কমান্ড =' এ আপনি করতে পারেন এমন আরও অনেকগুলি জিনিস রয়েছে। man authorized_keysআরও তথ্যের জন্য 'কমান্ড' দেখুন এবং অনুসন্ধান করুন।

আপনি যদি এটিকে প্রবেশ না করে সংযোগটি মেরে ফেলার বিষয়টি পছন্দ না করেন তবে আপনি 'কমান্ড =' প্রবেশের জন্য নীচের মতো কিছু ব্যবহার করতে পারেন:

command="f=./.fifo.$$ && mkfifo $f && trap \"rm -f $f\" EXIT && read a <$f && echo $a; exit;"

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

 your_user$ echo GOODBYE | sudo tee ~ssh_forwarder/.fifo.*

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

sleep 1h; echo You have been here too long. Good bye.

আপনি কিভাবে ব্যবহারকারীকে দূরবর্তী ফরোয়ার্ড ( ssh -R) কিন্তু সীমা ( ssh -L) সীমাবদ্ধ করতে পারবেন তা আমি দেখিনি । সম্ভবত 'পারমিটোপেন' ব্যবহার করা যেতে পারে। গুগলিং খুব একটা সহায়ক ছিল না। দেখে মনে হচ্ছে যে 'নো-পোর্ট-ফরওয়ার্ডিং, পারমিট্রেমোটোপেন = 10001' এর মতো কিছু অনুমতি দেওয়ার জন্য কার্যকর হবে ssh -R 6901:localhost:6901

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

অন্যান্য, সম্ভবত আরও সুরক্ষিত ব্যবস্থাগুলিতে ব্যবহারকারীর জন্য একটি কাস্টম শেল তৈরি করা এবং এটি অ্যাপারমোর দিয়ে লক করা অন্তর্ভুক্ত থাকতে পারে।


3
এটি দেখতে খুব হ্যাকিশ, শেল থাকা এমনকি প্রয়োজনীয় নয় কারণ কোনও কমান্ড কার্যকর করার প্রয়োজন নেই। বিকল্পটির জন্য ম্যানুয়াল পৃষ্ঠাটিssh দেখুন -N। এটি সম্পাদন করার জন্য অবশ্যই একটি পরিষ্কার উপায় থাকতে হবে।
লেকেনস্টেইন

সেটা সত্য. আমি একটি ক্লিনার সমাধানও আশা করি। আমি মনে করি যে কোনও 'পারমিট্রেমোটোপেন' বিকল্প থাকলে নো-পোর্ট-ফরওয়ার্ডিংয়ের সাথে একত্রে অনুমোদিত_কিগুলি খুব ভাল সমাধান হবে।
ধূমপায়ী

আমি কিছু রিসারগ করেছি (উপরে দেখুন)। যেহেতু ssh -Nকোনও কমান্ড কার্যকর করে না, command="something"সেশনটি বন্ধ করে দেওয়ার কোনও সমস্যা নেই ।
লেকেনস্টেইন

আমি কিছু অনুপস্থিত করছি? দেখে মনে হচ্ছে chsh ssh_forwarder -s /bin/false এটি সবই নেয়।
টাইপেলোগিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.