লিনাক্সের একটি স্যান্ডবক্সে একটি অবিশ্বস্ত সি প্রোগ্রাম চালান যা এটি ফাইল খোলার, কাঁটাচামচ করা ইত্যাদি থেকে বাধা দেয়?


110

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

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


এটি কি একক সি প্রোগ্রামের মতো আপনার 1 মিনিট 5 মিনিটের জন্য চালানো প্রয়োজন, বা এমন কিছু যা আপনার নিয়মিত চালানো দরকার?
22:51

এটি একটি ছোট প্রোগ্রাম হবে যা আপলোড হয়ে যায় এবং এতে ইউনিট পরীক্ষা চালানো হয়। সুতরাং প্রোগ্রামটি স্বল্পস্থায়ী হবে।
ফ্রাঙ্ক

সিস্টেমটি কী বিতরণ ব্যবহার করছে? কিছু বিতরণে স্যান্ডবক্সিংয়ের জন্য তৈরি সরঞ্জাম রয়েছে। আপনার সিস্টেমে কি সেলইনাক্স বা অ্যাপআর্মার মতো কোনও সুরক্ষা মডেল সক্ষম আছে?
ঠাকলা

আমি ফেডোরা 13 ব্যবহার করছি I'm আমি সেলইনাক্স স্যান্ডবক্স নীতিটি সন্ধান করছি। আমি ভাবছি যে অন্যান্য বিকল্পগুলি কী আছে।
ফ্রাঙ্ক

6
*: স্যান্ডবক্সিং / লিনাক্স বা ইউনিক্স প্রক্রিয়া jailing অনুরূপ Q- গুলি unix.stackexchange.com/q/6433/4319 * stackoverflow.com/q/3859710/94687 * stackoverflow.com/q/4410447/94687 * stackoverflow.com/q / 1019707/94687
imz - ইভান জ্যাকারিয়াশেভ

উত্তর:


47

আমি ইন্টারঅ্যাকটিভ এবং স্বয়ংক্রিয় মোডে স্যান্ডবক্স অবিশ্বস্ত প্রোগ্রামগুলিতে সাইনট্রেস ব্যবহার করেছি । এটা একটা হয়েছে ptrace()ভিত্তিক ব্যাকএন্ড যা বিশেষ বিশেষাধিকার ছাড়া একটি Linux সিস্টেমে তার ব্যবহার পারবেন, সেইসাথে অনেক দ্রুত এবং আরো poweful ব্যাকএন্ড যা কার্নেল প্যাচিং প্রয়োজন।

ইউনিক্সের মতো সিস্টেমে ব্যবহার করে স্যান্ডবক্স তৈরি করা সম্ভব chroot(1), যদিও এটি ততটা সহজ বা সুরক্ষিত নয়। লিনাক্স পাত্রে এবং ফ্রিবিএসডি জেলগুলি ক্রুটের একটি ভাল বিকল্প। লিনাক্স আরেকটি বিকল্প মত একটি নিরাপত্তা কাঠামো ব্যবহার করা SELinux- র বা AppArmor , যা আমি উৎপাদন সিস্টেমের জন্য কি উত্থাপন করা হবে।

আপনি ঠিক কী করতে চান তা যদি আপনি জানান তবে আমরা আপনাকে আরও সহায়তা করতে সক্ষম হব।

সম্পাদনা করুন:

সিনস্ট্রাসটি আপনার ক্ষেত্রে কাজ করবে, তবে আমি মনে করি যে লিনাক্স সুরক্ষা মডেল যেমন অ্যাপঅর্মার বা সেলইনাক্সের উপর ভিত্তি করে কিছু আরও প্রমিত এবং আপনার বিতরণের উপর নির্ভর করে বিকল্প হিসাবে পছন্দ করা যায়।

সম্পাদনা 2:

chroot(1)বেশিরভাগ (সমস্ত?) ইউনিক্স-মতো সিস্টেমে উপলব্ধ থাকাকালীন এটিতে বেশ কয়েকটি সমস্যা রয়েছে:

  • এটি ভেঙে যেতে পারে। যদি আপনি আপনার সিস্টেমে অবিশ্বস্ত সি প্রোগ্রামগুলি সংকলন করতে বা চালিত করতে চলেছেন তবে আপনি বিশেষত এই সমস্যাটির পক্ষে ঝুঁকির মধ্যে রয়েছেন। এবং যদি আপনার শিক্ষার্থীরা আমার মতো কিছু হয় তবে কেউ জেল থেকে বেরিয়ে আসার চেষ্টা করবে।

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

  • আপনি chroot বজায় রাখতে হবে। যেহেতু এটি স্বাধীন, ক্রুট ফাইলগুলি আপনার বিতরণের সাথে আপডেট করা হবে না। আপনাকে নিয়মিত ক্রুটটি পুনরায় তৈরি করতে হবে, বা এটিতে প্রয়োজনীয় আপডেট সরঞ্জামগুলি অন্তর্ভুক্ত করতে হবে, যার জন্য এটি সম্পূর্ণরূপে লিনাক্স বিতরণ হতে হবে। আপনাকে সিস্টেম এবং ব্যবহারকারীর ডেটা (পাসওয়ার্ড, ইনপুট ফাইল ইত্যাদি) হোস্ট সিস্টেমের সাথে সিঙ্ক্রোনাইজ রাখতে হবে।

  • chroot()কেবল ফাইল সিস্টেমকে সুরক্ষা দেয়। এটি কোনও ক্ষতিকারক প্রোগ্রামটি নেটওয়ার্ক সকেটগুলি খোলার থেকে বা খারাপভাবে লিখিতভাবে প্রতিটি উপলভ্য সংস্থান গ্রহণ থেকে বাধা দেয় না।

সমস্ত বিকল্পের মধ্যে সম্পদ ব্যবহারের সমস্যা সাধারণ। ফাইল সিস্টেমের কোটা প্রোগ্রামগুলি ডিস্ক পূরণ থেকে বিরত রাখবে। যথাযথ ulimit( setrlimit()সি তে) সেটিংস মেমরির অতিরিক্ত ব্যবহার এবং যে কোনও কাঁটাচামচ বোমা থেকে রক্ষা করতে পারে, পাশাপাশি সিপিইউ হগগুলিকে থামিয়ে দেয়। nice(1)এই প্রোগ্রামগুলির অগ্রাধিকারটিকে হ্রাস করতে পারে যাতে কোনও সমস্যা ছাড়াই কম্পিউটারটিকে আরও গুরুত্বপূর্ণ হিসাবে বিবেচিত এমন কোনও কাজের জন্য কম্পিউটার ব্যবহার করা যায়।


সিস্ট্রাস আমার জন্য সহজ, প্রোগ্রামগুলির জন্য কাজ করেছিল, তবে জিসিসি দ্বারা পরিচালিত জিএনইউ হিসাবে (1) অনির্দিষ্টকালের জন্য আটকে যায়। সুতরাং আমি এটি ছেড়ে দিয়েছি। এটা তোলে Systrace একটি অনির্ধারিত বাগ আছে: forum.soft32.com/linux/...
পয়েন্ট

ভাগ করার মেমরি, বার্তা সারি এবং সেমোফোরগুলি স্যান্ডবক্সযুক্ত প্রক্রিয়াগুলির মধ্যে ভাগ করা হয়নি তা নিশ্চিত করার কোনও উপায় আছে কি?
daveagp

1
সিস্ট্রাসের লিঙ্কটি নষ্ট হয়ে গেছে।
কলিন

2
ফায়ারজাইলের কী হবে? আপনার আর এটি ব্যবহার করে Fs বজায় রাখতে হবে না।
m3nda

18

আমি সম্প্রতি লিনাক্সে স্যান্ডবক্সিং কৌশলগুলির একটি ওভারভিউ লিখেছি । আমি মনে করি আপনার সহজতম পদ্ধতিটি হ'ল লিনাক্স পাত্রে (এলএক্সসি) ব্যবহার করা যদি আপনি কাঁটাচামচ ইত্যাদি সম্পর্কে কিছু মনে করেন না, যা এই পরিবেশে আসলেই গুরুত্বপূর্ণ নয় don't আপনি প্রক্রিয়াটি কেবল পঠনযোগ্য রুট ফাইল সিস্টেম, একটি বিচ্ছিন্ন লুপব্যাক নেটওয়ার্ক সংযোগ দিতে পারেন এবং আপনি এখনও এটিকে সহজেই হত্যা করতে পারেন এবং মেমরির সীমা নির্ধারণ করতে পারেন ইত্যাদি etc.

Seccomp কিছুটা কঠিন হতে চলেছে, কোডটি মেমোরি এমনকি বরাদ্দ করতে পারে না বলে।

সেলিনাক্স অন্য বিকল্প, তবে আমি মনে করি এটি কোনও ধারকের চেয়ে বেশি কাজ হতে পারে।


6

অ্যাসাইনমেন্টগুলি দ্রুত পরীক্ষা করতে আপনি কেমু ব্যবহার করতে পারেন। নীচে এই পদ্ধতিটি আমার 5 বছরের পুরানো ল্যাপটপে 5 সেকেন্ডেরও কম সময় নেয়।

ধরে নেওয়া যাক শিক্ষার্থীকে এমন একটি প্রোগ্রাম বিকাশ করতে হবে যা "-1" এর সাথে একটি লাইন না আসা পর্যন্ত প্রত্যেককে নিজের লাইনে স্বাক্ষরবিহীন ইনট নেয়। প্রোগ্রামটির পরে সমস্ত ইনটগুলি এবং আউটপুট "গড়:% f" গড় হওয়া উচিত। আপনি প্রোগ্রামটিকে সম্পূর্ণ বিচ্ছিন্নভাবে পরীক্ষা করতে পারেন তা এখানে:

  1. প্রথমে root.binজস্লিনাক্স থেকে আসুন, আমরা এটি ব্যবহারকারীর ভূমি হিসাবে ব্যবহার করব (এটিতে টিসিসি সি-সংকলক রয়েছে):

    wget https://github.com/levskaya/jslinux-deobfuscated/raw/master/root.bin

  2. আমরা শিক্ষার্থীর জমা দিতে চাই root.bin, তাই লুপ ডিভাইস সেট আপ করুন:

    sudo losetup /dev/loop0 root.bin

    (আপনি এটির জন্যও ফিউসেক্সট 2 ব্যবহার করতে পারেন তবে এটি খুব স্থিতিশীল নয় it এটি স্থিতিশীল হলে আপনার কোনওটির জন্যও মূলের প্রয়োজন হবে না)

  3. একটি খালি ডিরেক্টরি তৈরি করুন:

    mkdir mountpoint

  4. মাউন্ট root.bin:

    sudo mount /dev/loop0 mountpoint

  5. মাউন্ট করা ফাইল সিস্টেমটি প্রবেশ করান:

    cd mountpoint

  6. অধিকার ঠিক করুন:

    sudo chown -R `whoami` .

  7. mkdir -p etc/init.d
  8. vi etc/init.d:

    #!/bin/sh
    cd /root
    echo READY 2>&1 > /dev/ttyS0
    tcc assignment.c 2>&1 > /dev/ttyS0
    ./a.out 2>&1 > /dev/ttyS0
    
  9. chmod +x etc/init.d/rcS

  10. ভিএম-তে জমা দেওয়ার অনুলিপি করুন:

    cp ~/student_assignment.c root/assignment.c

  11. ভিএম এর মূল এফএস থেকে প্রস্থান করুন:

    cd ..

  12. sudo umount mountpoint
  13. এখন চিত্রটি প্রস্তুত, আমাদের কেবল এটি চালানো দরকার। এটি বুট করার পরে সাবমিশনটি সংকলন এবং চালনা করবে।
  14. mkfifo /tmp/guest_output
  15. একটি পৃথক টার্মিনাল খুলুন এবং অতিথি আউটপুট শুনা শুরু করুন:

    dd if=/tmp/guest_output bs=1

  16. অন্য টার্মিনালে:

    qemu-system-i386 -kernel vmlinuz-3.5.0-27-generic -initrd root.bin -monitor stdio -nographic -serial pipe:/tmp/guestoutput (আমি এখানে কেবল উবুন্টু কার্নেলটি ব্যবহার করেছি, তবে অনেকগুলি কার্নেল কাজ করবে)

  17. যখন অতিথি আউটপুট "প্রস্তুত" দেখায়, আপনি কিমু প্রম্পট থেকে ভিএম-তে কীগুলি প্রেরণ করতে পারেন। উদাহরণস্বরূপ, এই অ্যাসাইনমেন্টটি পরীক্ষা করার জন্য, আপনি এটি করতে পারেন

    (qemu) sendkey 1
    (qemu) sendkey 4
    (qemu) sendkey ret
    (qemu) sendkey 1
    (qemu) sendkey 0
    (qemu) sendkey ret
    (qemu) sendkey minus
    (qemu) sendkey 1
    (qemu) sendkey ret
    
  18. এখন Average = 12.000000অতিথি আউটপুট পাইপে উপস্থিত হওয়া উচিত। যদি তা না হয় তবে শিক্ষার্থী ব্যর্থ হয়েছিল।

  19. প্রস্থান ছাড়ুন: quit

পরীক্ষায় উত্তীর্ণ একটি প্রোগ্রাম এখানে রয়েছে: https://stackoverflow.com/a/14424295/309483 । শুধু tcclib.hপরিবর্তে ব্যবহার করুন stdio.h



4

ফায়ারজেল এটি করার জন্য একটি বিস্তৃত সরঞ্জাম - এটি সেকম্পম্প, ফাইল সিস্টেমের ধারক, ক্ষমতা এবং আরও অনেক কিছু সমর্থন করে:

https://firejail.wordpress.com/features-3/


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

3

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

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


2
আমি ওপি সম্পর্কে জানি না, তবে পরীক্ষার জন্য একটি ভিএম চালু করা অনেক ক্ষেত্রে অগ্রহণযোগ্য হবে। আমার পরিবেশে (আমি একটি টিএ) 2 ঘন্টা সময়কালে 200-200 জন শিক্ষার্থী প্রতিটি 10-12 প্রোগ্রাম জমা দিতে পারে। কোনও কর্মসূচি 10 সিসি-র বেশি সিপিইউ-সময়ের জন্য চালিত হয় না, তবে যখন জমাগুলি শেষ করে দেয় তখন আমরা 15 মিনিট বা তারও বেশি সময় ঘুরে দেখি। প্রতিটি প্রোগ্রামের জন্য একটি ভিএম উপস্থাপন করা সিপিইউ-টাইমকে প্রতি প্রোগ্রামে 60 সেকেন্ড বা তারও বেশি চাপ দেয় এবং আমি ঘুরে দাঁড়ানোর সময়গুলি সম্পর্কে মোটেই ভাবতে চাই না। সেশন প্রতি ভিএম হতে পারে, তবে আমরা প্রতি প্রোগ্রামটি
কোনওভাবেই করতে পারিনি

@thkala এটি একটি ভাল পয়েন্ট। আমি কিউইএমইউ এর ধারণা পছন্দ করি তবে প্রতিটি জমা দেওয়ার জন্য একটি ভিএম শুরু করা ভাল নয়।
ফ্রাঙ্ক

ঠিক আছে, সেক্ষেত্রে একই সময় ভিএম চালিয়ে যান।
লরেন্ট পেরেন্তেউ

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

@ থকালা: এর অর্থ হ'ল যদি আপনি সিরিয়ালিভাবে চালিত হন তবে আপনাকে জমা দেওয়ার জন্য 3 সেকেন্ডেরও কম দরকার হবে। আমি পোস্ট করা পদ্ধতির সম্ভবত একটি আধুনিক মেশিনে প্রায় 3 সেকেন্ড সময় লাগে (সিরিয়ালি)। আপনি যদি সমান্তরাল হন (যা আপনি পাশাপাশি করতে পারেন) এটি যথেষ্ট দ্রুত হবে।
জানুস ট্রোলসেন

3

এটি যখন পিট্রেস (স্ট্রেস) চেক আউট এর উপর ভিত্তি করে সানবক্সিংয়ের বিষয়ে যায়:

" সিডবক্স " স্যান্ডবক্স এবং " পিঙ্কট্রেস " প্রোগ্রামিং লাইব্রেরি (এটি সি 99 তবে অজগর এবং রুবির সাথে বাইন্ডিং রয়েছে যতদূর আমি জানি)।

বিষয় সম্পর্কিত সংগৃহীত লিঙ্ক:

http://www.diigo.com/user/wierzowiecki/sydbox

(দুঃখিত যে সরাসরি লিঙ্কগুলি নয়, তবে এখনও যথেষ্ট খ্যাতি পয়েন্ট নেই)



1

এই গ্রন্থাগারটি আপনার লক্ষ্যটি ভালভাবে পরিবেশন করা উচিত

http://sandbox.sourceforge.net

শুভকামনা!


8
এটি সক্রিয়ভাবে রক্ষণাবেক্ষণ করা বলে মনে হয় না। এটি একটি লিনাক্স কার্নেল প্যাচ, যা এটি বেশিরভাগই বেহুদা বিবেচনা করা যে তার সর্বশেষ সংস্করণ তারিখ 2003 থেকে ব্যাক করতে হবে প্রয়োজন বলে মনে হয়
thkala

1

এটি আশাব্যঞ্জক বলে মনে হয়। সিস্কেল ইন্টারসেপ্ট ব্যবহার করে লিনাক্সের জন্য একটি ফাইল সিস্টেম স্যান্ডবক্স।

https://github.com/adtac/fssb


-1

ঠিক আছে যে সমস্ত উত্তর তারা আমাকে আমাকে অনেক সাহায্য করেছে ধন্যবাদ। তবে মূল প্রশ্নটি জিজ্ঞাসা করা ব্যক্তির সমাধান হিসাবে আমি তাদের কাউকেই প্রস্তাব দেব না। শিক্ষক, শিক্ষক, অধ্যাপক হিসাবে শিক্ষার্থীদের কোড পরীক্ষা করার লক্ষ্যে সমস্ত উল্লিখিত সরঞ্জামগুলির জন্য অনেক কাজ করা প্রয়োজন। এই ক্ষেত্রে সবচেয়ে ভাল উপায়টি হবে আমার মতে ভার্চুয়ালবক্সে। ঠিক আছে, এটি একটি সম্পূর্ণ x68-সিস্টেম অনুকরণ করে এবং এইভাবে স্যান্ডবক্সিংয়ের অর্থের সাথে কিছুই করার নেই তবে আমি যদি আমার প্রোগ্রামিং শিক্ষকের কল্পনা করি তবে এটি তার পক্ষে সেরা হবে। সুতরাং ডেবিয়ান ভিত্তিক সিস্টেমগুলিতে "অ্যাপটি-ইনস্টল ভার্চুয়ালবক্স" করুন, অন্যরা http://virtualbox.org/ এ চলে যান , একটি ভিএম তৈরি করুন, একটি আইসো যুক্ত করুন, ইনস্টল ক্লিক করুন, কিছুক্ষণ অপেক্ষা করুন এবং ভাগ্যবান হন। ব্যবহারকারী-মোড-লিনাক্স সেট আপ করতে বা কিছু ভারী স্ট্রেস স্টাফ করানো হিসাবে এটি ব্যবহার করা আরও সহজ হবে ...

এবং যদি আপনার শিক্ষার্থীদের হ্যাকিংয়ের বিষয়ে আপনার যদি ভয় থাকে তবে আমার ধারণা যে আপনার একটি কর্তৃপক্ষের সমস্যা রয়েছে এবং এর সমাধানের জন্য তাদের হুমকি দেওয়া হবে যে আপনি যদি তাদের দেওয়া কাজটিতে ম্যালওয়ারের কেবল একটি কামড় প্রমাণ করতে পারেন তবে আপনি তাদের থেকে জীবিত দিবালোকের বিরুদ্ধে মামলা করবেন you আপনি...

এছাড়াও যদি কোনও ক্লাস থাকে এবং এর 1% যদি সে যেমন কাজ করতে পারে ততই ভাল, এগুলিকে এত সাধারণ কাজ দিয়ে বিরক্ত করবেন না এবং তাদের আরও কিছু দিতে হবে যেখানে তাদের আরও কিছু কোডিং করতে হবে। ইন্টিগ্রেটিভ লার্নিং সবার জন্য সবচেয়ে ভাল তাই পুরানো ডেডলকড স্ট্রাকচারের উপর রিলে না ont

এবং কারণ হিসাবে, আপনি ওয়েব ব্রাউজিং এবং টেস্টিং সফ্টওয়্যার এর মতো জিনিসের জন্য যে জিনিসগুলি ব্যবহার করছেন (গুরুত্বপূর্ণ প্রত্যয়ন এবং পরীক্ষা লেখার মতো) জন্য একই কম্পিউটারটি কখনই ব্যবহার করবেন না।

গুরুত্বপূর্ণ বিষয়গুলির জন্য একটি অফ লাইন কম্পিউটার এবং অন্যান্য সমস্ত জিনিসের জন্য একটি অন লাইন কম্পিউটার ব্যবহার করুন।

তবে অন্য সকলের কাছে যারা একজন ভৌতিক শিক্ষক না হন (কাউকে বাধা দিতে চান না, আমি কেবলমাত্র মতামত যে আপনি প্রোগ্রামার শিক্ষক হওয়া শুরু করার আগে আপনার সুরক্ষা এবং আমাদের সমাজ সম্পর্কে বেসিকগুলি শিখানো উচিত ...)

... আমি কোথায় ছিলাম ... সবার জন্য:

হ্যাপি হ্যাপি !!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.