প্রোডাকশন সার্ভারগুলিতে প্রশাসকদের দ্বারা পরিচালিত সমস্ত কমান্ড লগ করুন


70

প্রশাসকদের ব্যক্তিগত ব্যবহারকারীর নাম দিয়ে সার্ভারে লগইন করা এবং তারপরে sudo -iরুট হওয়ার জন্য চালানো এটি কোম্পানির নীতি । চলার পরে sudo -i, sudo নামক একটি পরিবেশগত পরিবর্তনশীল তৈরি করবে SUDO_USER, এতে মূল ব্যবহারকারীর ব্যবহারকারীর নাম রয়েছে।

নিম্নলিখিত সিনট্যাক্সের অনুরূপ কিছু সহ সিসলগের মধ্যে সমস্ত কমান্ড লগ করার কোনও উপায় আছে :

${TIME/DATE STAMP}: [${REAL_USER}|${SUDO_USER}]: ${CMD}

একটি উদাহরণ এন্ট্রি হবে:

Sat Jan 19 22:28:46 CST 2013: [root|ksoviero]: yum install random-pkg

স্পষ্টতই এটি উপরের সিনট্যাক্সের মতো হতে হবে না, এতে কেবলমাত্র সর্বনিম্ন প্রকৃত ব্যবহারকারীর (যেমন। রুট), সুডো ব্যবহারকারীর (যেমন। Ksoviero), এবং সম্পূর্ণ কমান্ডটি অন্তর্ভুক্ত থাকতে হবে (যেমন। ইউম এলোমেলো-পিকেজি ইনস্টল করুন)।

আমি ইতিমধ্যে চেষ্টা করেছি snoopy, তবে এতে SUDO_USERচলকটি অন্তর্ভুক্ত হয়নি ।


13
আপনি প্রয়োজন auditd
মাইকেল হ্যাম্পটন


1
কেউ দয়া করে উত্তর হিসাবে পোস্ট করতে পারেন? দয়া করে অন্তর্ভুক্ত করুন কীভাবে আমি ব্যবহারকারীদের দ্বারা পরিচালিত সমস্ত আদেশগুলি কঠোরভাবে লগ করব। "সংক্ষিপ্ত পরিচিতির নিরীক্ষণ" দরকারী ছিল তবে এটিতে আসল কমান্ডগুলি লগ করার সাথে সম্পর্কিত কিছু অন্তর্ভুক্ত ছিল না (যতদূর আমি যাই বলতে পারি)।
সোভিয়েরো

1
ঠিক আছে, আমি খেলতে শুরু করেছি auditd, এবং সমস্ত কমান্ড চালিত হওয়া লগ করার জন্য এটি অর্জন করার পরে, এতে SUDO_USERচলক (বা সমমানের তথ্য) অন্তর্ভুক্ত নেই এবং আমি এটি অন্তর্ভুক্ত করার উপায় খুঁজে পাচ্ছি না। কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে!
সোভিয়েরো

1
এরপর সেই ভীড়ের কি করবে না প্রশাসকদের দ্বারা প্রবেশ সব কম্যান্ডের এই রেকর্ড সঙ্গে?
ইয়েওয়াইট

উত্তর:


82

আপডেট : মন্তব্যগুলিতে এবং ফলো-আপ প্রশ্নে আরও দুটি জিনিস পপ আপ হয়েছে:

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

মাইকেল হ্যাম্পটনের পরামর্শ অনুসারে, auditdএখানে কাজের সঠিক সরঞ্জাম।

আমি এটি একটি উবুন্টু ১২.১০ ইনস্টলসে পরীক্ষা করেছি, সুতরাং আপনার মাইলেজ অন্যান্য সিস্টেমে আলাদা হতে পারে।

  • ইনস্টল করুন auditd:

    apt-get install auditd

  • এই 2 লাইন যুক্ত করুন /etc/audit/audit.rules:

    -a প্রস্থান, সর্বদা -F আর্কাইজ = b64 -F euid = 0 -S সম্পাদন
    -a প্রস্থান, সর্বদা -F আর্কাইজ = b32 -F euid = 0 -S সম্পাদন

এটি রুট ( euid=0) দ্বারা চালিত সমস্ত কমান্ড ট্র্যাক করবে । দুটি নিয়ম কেন? execveপ্রাপ্ত syscall উভয় 32 এবং 64 বিট কোডে ট্র্যাক করা উচিত নয়।

  • auid=4294967295লগগুলিতে বার্তাগুলি পরিত্রাণ পেতে , audit=1কার্নেলের সিএমডিলাইন যুক্ত করুন (সম্পাদনা করে /etc/default/grub)

  • লাইন রাখুন

    session required pam_loginuid.so

লগইন ( /etc/pam.d/{login,kdm,sshd}) প্রাসঙ্গিক সমস্ত পিএএম কনফিগারেশন ফাইলগুলিতে , তবে suবা এর সাথে প্রাসঙ্গিক ফাইলগুলিতে নয় sudo। এটি কল করার সময় বা auditdকল করার সময় কলিং ব্যবহারকারীর uidসঠিকভাবে পেতে দেয় ।sudosu

  • এখনই আপনার সিস্টেমটি পুনরায় চালু করুন।

  • লগইন এবং কিছু কমান্ড চালানো যাক:

    $ আইডি -উ
    1000
    do সুডো এলএস /
    বিন বুট ডেটা ইত্যাদির জন্য হোম initrd.img
    $ সুডো সু -
    # এলএস / ইত্যাদি
    [...]

এটি এতে এর মতো কিছু অর্জন করবে /var/log/audit/auditd.log:

----
time->Mon Feb  4 09:57:06 2013
type=PATH msg=audit(1359968226.239:576): item=1 name=(null) inode=668682 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1359968226.239:576): item=0 name="/bin/ls" inode=2117 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1359968226.239:576):  cwd="/home/user"
type=EXECVE msg=audit(1359968226.239:576): argc=2 a0="ls" a1="/"
type=SYSCALL msg=audit(1359968226.239:576): arch=c000003e syscall=59 success=yes exit=0 a0=10cfc48 a1=10d07c8 a2=10d5750 a3=7fff2eb2d1f0 items=2 ppid=26569 pid=26570 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="ls" exe="/bin/ls" key=(null)
----
time->Mon Feb  4 09:57:06 2013
type=PATH msg=audit(1359968226.231:575): item=1 name=(null) inode=668682 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1359968226.231:575): item=0 name="/usr/bin/sudo" inode=530900 dev=08:01 mode=0104755 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1359968226.231:575):  cwd="/home/user"
type=BPRM_FCAPS msg=audit(1359968226.231:575): fver=0 fp=0000000000000000 fi=0000000000000000 fe=0 old_pp=0000000000000000 old_pi=0000000000000000 old_pe=0000000000000000 new_pp=ffffffffffffffff new_pi=0000000000000000 new_pe=ffffffffffffffff
type=EXECVE msg=audit(1359968226.231:575): argc=3 a0="sudo" a1="ls" a2="/"
type=SYSCALL msg=audit(1359968226.231:575): arch=c000003e syscall=59 success=yes exit=0 a0=7fff327ecab0 a1=7fd330e1b958 a2=17cc8d0 a3=7fff327ec670 items=2 ppid=3933 pid=26569 auid=1000 uid=1000 gid=1000 euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=1 comm="sudo" exe="/usr/bin/sudo" key=(null)
----
time->Mon Feb  4 09:57:09 2013
type=PATH msg=audit(1359968229.523:578): item=1 name=(null) inode=668682 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1359968229.523:578): item=0 name="/bin/su" inode=44 dev=08:01 mode=0104755 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1359968229.523:578):  cwd="/home/user"
type=EXECVE msg=audit(1359968229.523:578): argc=2 a0="su" a1="-"
type=SYSCALL msg=audit(1359968229.523:578): arch=c000003e syscall=59 success=yes exit=0 a0=1ceec48 a1=1cef7c8 a2=1cf4750 a3=7fff083bd920 items=2 ppid=26611 pid=26612 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="su" exe="/bin/su" key=(null)
----
time->Mon Feb  4 09:57:09 2013
type=PATH msg=audit(1359968229.519:577): item=1 name=(null) inode=668682 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1359968229.519:577): item=0 name="/usr/bin/sudo" inode=530900 dev=08:01 mode=0104755 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1359968229.519:577):  cwd="/home/user"
type=BPRM_FCAPS msg=audit(1359968229.519:577): fver=0 fp=0000000000000000 fi=0000000000000000 fe=0 old_pp=0000000000000000 old_pi=0000000000000000 old_pe=0000000000000000 new_pp=ffffffffffffffff new_pi=0000000000000000 new_pe=ffffffffffffffff
type=EXECVE msg=audit(1359968229.519:577): argc=3 a0="sudo" a1="su" a2="-"
type=SYSCALL msg=audit(1359968229.519:577): arch=c000003e syscall=59 success=yes exit=0 a0=7fff327ecab0 a1=7fd330e1b958 a2=17cc8d0 a3=7fff327ec670 items=2 ppid=3933 pid=26611 auid=1000 uid=1000 gid=1000 euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=1 comm="sudo" exe="/usr/bin/sudo" key=(null)
----
time->Mon Feb  4 09:57:09 2013
type=PATH msg=audit(1359968229.543:585): item=1 name=(null) inode=668682 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1359968229.543:585): item=0 name="/bin/bash" inode=6941 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1359968229.543:585):  cwd="/root"
type=EXECVE msg=audit(1359968229.543:585): argc=1 a0="-su"
type=SYSCALL msg=audit(1359968229.543:585): arch=c000003e syscall=59 success=yes exit=0 a0=13695a0 a1=7fffce08a3e0 a2=135a030 a3=7fffce08c200 items=2 ppid=26612 pid=26622 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="bash" exe="/bin/bash" key=(null)
----
time->Mon Feb  4 09:57:11 2013
type=PATH msg=audit(1359968231.663:594): item=1 name=(null) inode=668682 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1359968231.663:594): item=0 name="/bin/ls" inode=2117 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1359968231.663:594):  cwd="/root"
type=EXECVE msg=audit(1359968231.663:594): argc=3 a0="ls" a1="--color=auto" a2="/etc"
type=SYSCALL msg=audit(1359968231.663:594): arch=c000003e syscall=59 success=yes exit=0 a0=7fff8c709950 a1=7f91a12149d8 a2=1194c50 a3=7fff8c709510 items=2 ppid=26622 pid=26661 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="ls" exe="/bin/ls" key=(null)

auidকলাম ধারণ করে কলিং ব্যবহারকারীর uid, যা আপনার সাথে এই ব্যবহারকারীর দ্বারা পরিচালিত কমান্ডের জন্য ফিল্টার পারবেন

 ausearch -ua 1000

এটি এমনকি ব্যবহারকারীকে মূল হিসাবে চালিত কমান্ডগুলি তালিকাভুক্ত করবে।

সূত্র:


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

আগে থেকেই সতর্ক থাকুন যে এই পরিবর্তনগুলি /var/log/audit/audit.log এ কারওর লগ ভলিউমকে বাড়িয়ে দিতে পারে। এই ফাইলটিতে আমার লগের পরিমাণ আরও বেশি দ্বিগুণ হয়েছে নিরীক্ষা.রুলসগুলিতে দ্বিগুণ রেখা যুক্ত করার পরে
জেডিএস

10

মনে রাখবেন যে sudo নিজেই সিস্টোলে সমস্ত sudo কমান্ড লগ করে, তাই সমস্ত ব্যক্তিগত ব্যবহারকারীর রুট শেলটি পেতে কেবল sudo না থেকে শিক্ষিত হওয়া উচিত:

sudo command p1 p2 ... pn

এই বা আমি যে কোনও পদ্ধতির কথা ভেবেছি তা সমস্যাটি হ'ল এটি rootব্যবহারকারী হিসাবে কোনও নির্দিষ্ট ধরণের লগিং এড়াতে বাধা দেওয়া বেশ কঠিন difficult এইভাবে আপনি যে কোনও জিনিস চেষ্টা করবেন <100% বলার জন্য আমি দুঃখিত।

শিক্ষা, ডকুমেন্টেশন, প্রয়োগকরণ এবং সর্বোপরি বিশ্বাসের জন্য প্রয়োজনীয়।


3
আমি বুঝতে পারি যে কোনও কিছুই নিখুঁত হবে না, তবে আমরা কখনই আপনার বর্ণনার মতো সবাইকে কাজ করতে সক্ষম করব না। এগুলি আমরা যে
স্যাসাডমিনগুলির

3
সত্য নয় .... কমপক্ষে দুটি বড় সংস্থা আমি ব্যক্তিগতভাবে বিপুল সংখ্যক সিস্টেম অ্যাডমিনিস্ট্রেটারের সমন্বয়ে কাজ করেছি যার এই নীতিমালা রয়েছে! আবার, শিক্ষা এবং প্রয়োগের সাথে এটি কাজ করে।
এমডিপিসি

2
এমডিপিসি 100% সঠিক। Sudo কমান্ডটি ঠিক এটির জন্য। আমি শত হোস্টের সাথে দশ সিসাদমিনের একটি দোকানে আছি এবং আমরা প্রতিটি কিছুর জন্য পৃথক সুডো কমান্ড ব্যবহার করি - একটি নির্দিষ্ট নীতি আছে যা সু এর মাধ্যমে মূল হয়ে উঠতে নিষেধ করে। অ্যাডমিন অপারেশনগুলি সঠিকভাবে নিরীক্ষণ করা হয় তা নিশ্চিত করার একমাত্র যুক্তিযুক্ত উপায়।
জেফ অ্যালবার্ট 0

4
-1 শিক্ষা কখনই তা করবে না। আমরা আউটসোর্স ওয়ার্ল্ডে থাকি যেখানে আপনি কেবল আপনার সিসাদমিনের অনেক গ্রাহক।
তৃণমূল

6

আমি একবার একই সমস্যার মুখোমুখি হয়েছিলাম এবং দ্রুত এবং নোংরা সমাধান নিয়ে আসতে হয়েছিল - কমান্ডটি চালানোর পরে প্রতিটি সুডো ব্যবহারকারীর নিজস্ব ইতিহাস ফাইল থাকবে sudo -i

ইন /root/.bashrcআমি নিম্নলিখিত লাইন যোগ -

 export HISTFILE=/root/.bash_history-$SUDO_USER
 export HISTTIMEFORMAT="%F %T "

সুতরাং প্রতিটি ব্যবহারকারী যারা রুট করতে সুডোস একটি ইতিহাস ফাইল .bash_history- ব্যবহারকারীর নাম থাকতে হবে।

অন্য পদ্ধতি -

নিম্নলিখিত কোডটি এতে যুক্ত করুন /root/.bashrcএবং এটি ব্যবহারকারীর নাম, সুডো-ব্যবহারকারী এবং লগ ফাইলে কমান্ড যুক্ত করবে, যেখানে নোটিশ স্তরটি সেট করা থাকে, সম্ভবত সম্ভবত / var / লগ / বার্তা।

function log2syslog
{
   declare COMMAND
   COMMAND=$(fc -ln -0)
   logger -p local1.notice -t bash -i -- "${USER}:${SUDO_USER}:${COMMAND}"
}
trap log2syslog DEBUG

ক্রেডিট - http://backdrift.org/logging-bash-history-to-syslog- using - traps


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

ঠিক আছে আমি ফাঁদ পদ্ধতির উপর নির্ভর করতে এটি আপডেট করেছি।
ড্যানিয়েল টি।

3
এবং বৈধ ব্যবহারকারীদের জন্য, এটি কাজ করে। তবে যদি সেই অ্যাকাউন্টটি ফাটল পাওয়া যায়, ক্র্যাকারটি দ্রুত বাশার মাধ্যমে বাশার ইতিহাস অক্ষম করতে পারে /bin/sh, unset HISTFILEবা /bin/bash --norc
স্টিফান লাসিউইস্কি 21

3

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

একটি সমাধান হ'ল সর্বশেষ কর্ন শেলটি কনফিগার করা (ksh-93, বিশদর জন্য http://kornshell.com/ দেখুন) দূরবর্তী সিসলোগ সার্ভারে রুট হিসাবে কার্যকর করা সমস্ত কমান্ড লগ করতে এবং তারপরে জরুরি অবস্থা ব্যতীত নীতি দ্বারা প্রয়োজনীয় যা পরিস্থিতি, সিসাদমিনগুলি ব্যক্তিগত অ্যাকাউন্টগুলির সাথে লগ ইন করে এবং সুডোর মাধ্যমে বর্ধিত কর্ন শেল চালায়। লগগুলি পরীক্ষা করে সনাক্ত করতে পারে যে কোনও প্রশাসক যখন তাদের ট্র্যাকগুলি কভার করার জন্য অনুমোদিত শেল থেকে অন্য শেলটি চালু করে এবং এসএকে তখন প্রয়োজনীয় হিসাবে শিক্ষিত করা যায়।


3

সক্ষম সেশনগুলি লগ করলে সুডোর সুডোরপ্লে নামে কিছু থাকে এবং পরে পুনরায় প্লে করা যায়, scriptকমান্ডের মতোই কাজ করে যা টার্মিনাল সেশনের একটি টাইপ স্ক্রিপ্ট তৈরি করে যা পরে scriptreplayকমান্ড দিয়ে পুনরায় খেলতে পারে ।


2

সংস্করণ 2.0.0 যেহেতু স্নুপী স্বেচ্ছাসেবী পরিবেশগত পরিবর্তনশীল লগ করতে সক্ষম।

যাইহোক, সাম্প্রতিক অবদানটি উল্লেখ করেছে যে টিটি-র লগিংয়ের মালিক "মূলটি হিসাবে কে এই আদেশটি কার্যকর করেছিলেন?" প্রশ্নের প্রশ্নের মোটামুটি কার্যকর এবং মার্জিত উত্তর।

প্রকাশ: আমি স্নোপি রক্ষণাবেক্ষণকারী।


সাধারণ লিঙ্কের পরিবর্তে ওপির প্রয়োজনীয়তা অনুযায়ী এটি কীভাবে সেট আপ করবেন সে সম্পর্কে দয়া করে নির্দেশাবলী সরবরাহ করুন। ধন্যবাদ।
Andrea Lazzarotto

1
-1। এটি স্নুপির জন্য কেবল একটি প্লাগ। আপনি প্রকাশটি অনুসরণ করেছিলেন, তবে আপনি এখনও আপনার পোস্টে প্রশ্নের উত্তর দেননি; আপনি কেবল আপনার প্রকল্পের সাথে লিঙ্ক করেছেন।
ডানকান এক্স সিম্পসন

1

এ পর্যন্ত অন্য উত্তরগুলির সাথে কোনও সমস্যা নেই বলে মনে হয় না, তবে আপনি যদি সিদ্ধান্ত নেন যে sudoএর মাধ্যমে লগইনটি syslogসন্তোষজনক, তবে আমি একটি কুঁচকির পরামর্শ দিতে পারি: এটি একটি দূরবর্তী অডিট হোস্টে নেটওয়ার্কের মাধ্যমে লগইন করুন।

এটি "এখন আমি রুট হয়ে গেছি, লগগুলি থেকে আমার অপব্যবহারের কোনও চিহ্ন সরিয়ে ফেলতে পারি" এর সমস্যাটি ঘুরে দেখা যায়। আপনি এখন স্থানীয় বাক্সে রুট হতে পারেন, তবে আপনি সেই লগ প্যাকেটটি নেটওয়ার্ক থেকে কল করতে পারবেন না এবং আপনার (সম্ভবত) দূরবর্তী অডিট হোস্টে রুট সুবিধাগুলি নেই।

আমি বছরের পর বছর ধরে পরিচালনা করি এমন কয়েকটি নেটওয়ার্কের সাথে এটি করে চলেছি এবং এর দুটি আরও সংকেত সুবিধা রয়েছে:

প্রথমত, সমস্ত সিসলগগুলি পরীক্ষা করতে নেটওয়ার্কে একটি জায়গা রয়েছে, যা ঘটনার অনেক সহজ সম্পর্ককে মঞ্জুরি দেয়, এবং তদন্তের জন্য একটি স্টপ শপ যেমন " junoএনএফএস সার্ভার heraযখন সাড়া দিচ্ছিল না তখন অন্য কেউ কি অভিযোগ করছিল? একই সময়ে একই জিনিস? যদি তাই heraহয় তবে সমস্যাটি হওয়ার সম্ভাবনা রয়েছে, আসুন দেখুন সে কী লগ করেছে; যদি তা না হয় তবে junoতার নেটওয়ার্ক সংযোগটি আরও সন্দেহজনক, আসুন junoসেই সময়ে আর কী লগড করা হয়েছিল তা দেখে নেওয়া যাক । "

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

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