আমি কীভাবে ব্যবহারকারীদের অডিট করতে পারি এবং আমার সার্ভারে এসএসএইচ-এর প্রচেষ্টা অ্যাক্সেস করতে পারি?


28

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

আমি চাই:

  • ব্যবহারকারীর লগইন এবং লগআউটগুলি ট্র্যাক করুন
  • যে কোনও বিদ্বেষমূলক কার্যকলাপ আবিষ্কার করতে এই এসএসএইচের ক্রিয়াকলাপটি ট্র্যাক করুন
  • ব্যবহারকারীদের লগ মুছতে বাধা দিন

আমি কোনও সিআইএস অ্যাডমিনের মতো নই এবং আমি এই বিষয়ে যথেষ্ট অনভিজ্ঞ, সুতরাং যে কোনও ধরণের পরামর্শ খুব স্বাগত এবং খুব সহায়ক হবে। :)

উত্তর:


27

যেহেতু আমরা এসএসএইচ সার্ভারের কথা বলছি, তাই আমি আপনাকে কমান্ড লাইন সমাধান দেব।

  • ব্যবহারকারীর লগইন এবং লগআউটগুলি ট্র্যাক করুন। এটি সহজ, ফাইলটির /var/log/auth.logএই তথ্য থাকা উচিত।

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

  • ব্যবহারকারীদের লগগুলি মুছতে বাধা: ব্যবহারকারীদের স্পর্শ করতে সক্ষম হওয়া উচিত নয় auth.log.bash_historyআপনার সাথে খেলতে বাধা দেওয়ার জন্য কয়েক কৌশল অবলম্বন করা উচিত

  • ব্যবহারকারী যদি রুট অ্যাক্সেস পেতে পরিচালনা করেন? : আপনি মাতাল. যদি তারা কোনও ভুল না করে তবে তারা তাদের সমস্ত পদক্ষেপ গোপন করতে সক্ষম হবে।


নোট করুন যে ব্যাশের unset HISTFILEভিতরে ব্যবহারকারীদের টাইপ করা থেকে বিরত করার কোনও উপায় নেই এবং তারপরে বাশ ইতিহাস রেকর্ড করা হবে না।
গিলস 'তাই মন্দ হওয়া বন্ধ করুন'

@ গিলস, দয়া করে কৌশলগুলি লিঙ্কটি পড়ুন। তারা প্রোফাইলে একটি পঠনযোগ্য পরিবর্তনশীল হিসাবে HITSFILE সেট করেছে।
জাভিয়ের রিভেরা

আমি ভেবেছিলাম আপনি একটি সীমাবদ্ধ নয় এমন ব্যাশে একটি পঠনযোগ্য পরিবর্তনশীল আনসেট করতে পারেন, তবে দৃশ্যত তা নয় not এটি অন্য শেলটি (যা পড়বে না ~/.bash_historyবা প্রকাশিত হবে না ~/.bashrc) শুরু হওয়ার পরে এটি সনাক্তকরণের সামান্য উন্নতি করে $HISTFILE। তবে এটি নিজেই পুরোপুরি বৈধ হতে পারে (যেমন ব্যবহারকারী কেবল চালাতে চান zsh, বা বিকল্পে তাদের নিজস্ব বিকল্প সেট করতে চান bashrc)।
গিলস 'অশুভ হওয়া বন্ধ করুন'

1
হ্যাঁ। আপনি তাকে বাশ বা অন্য কোনও শেলের মধ্যে সীমাবদ্ধ করতে পারেন। সর্বোপরি সুরক্ষা কেবল একটি দৌড়।
জাভিয়ের রিভেরা

এটি সত্য নয় যে "যদি ব্যবহারকারীরা রুট অ্যাক্সেস অর্জন করতে পরিচালিত হয়" তবে তারা সমস্ত পদক্ষেপগুলি আড়াল করতে সক্ষম হবে। আপনি সর্বদা নিরীক্ষণের জন্য বহিরাগত সার্ভার ব্যবহার করতে পারেন, যেখানে রুট হয়ে ওঠার সাথে সমস্ত পদক্ষেপ রেকর্ড করা হবে।
পেট্র

6

[অস্বীকৃতি] আমি বুঝতে পেরেছি যে আমি পার্টিতে দেরি করে ফেলেছি, তবে আমি অন্য প্রশ্নের যে উত্তর দিয়েছি তা পেস্ট করতে চাই , কারণ আমার মনে হয় এটি পাঠকদের কাছে কিছুটা ভাল অন্তর্দৃষ্টি দিতে পারে, এবং এই প্রশ্নটি আপাতদৃষ্টিতে মনে হচ্ছে বেসিক ssh তথ্যের জন্য স্থান।

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

এখন আমি যে প্রশ্নের সাথে লিঙ্ক করেছি সে অনুসারে, আপনি যদি নিজের মেশিনে ssh (ব্যর্থ বাহিনীর প্রচেষ্টা বা যে কোনও কিছু হতে পারে) এর ব্যর্থ লগইন প্রচেষ্টা দেখতে চান তবে এটি টাইপ করার চেষ্টা করুন:

grep sshd.\*Failed /var/log/auth.log | less

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

Ssh কনফিগারেশন ফাইল পরিবর্তন করুন

এটি করতে, আপনার প্রিয় সম্পাদকের সাথে / etc / ssh / sshd_config এ অবস্থিত ফাইলটি খুলুন vim /etc/ssh/sshd_config

১. পোর্ট ২২ থেকে এসএসএস স্থানান্তরিত করার চেষ্টা করুন : এখন যে রেখাটি পড়েছে তা সন্ধান করুন:

# What ports, IPs and protocols we listen for
Port 22

এবং পোর্ট 22 মন্তব্য করুন, এবং আপনার পছন্দসই কাউকে ব্যবহার করুন। উদাহরণ:

# What ports, IPs and protocols we listen for
# Port 22
Port 28934

দয়া করে মনে রাখবেন যে 1024 নীচের বন্দরগুলির জন্য বিশেষ (মূল) অনুমতি প্রয়োজন। আমি জানি না কীভাবে এটি এতে হস্তক্ষেপ করতে পারে, তবে আমি কেবল বলছি।

২. এসএসএসের মাধ্যমে রুট লগইনগুলি অক্ষম করুন : যেহেতু মূল ব্যবহারকারীর নাম অনুমানযোগ্য এবং আপনার সিস্টেমে সম্পূর্ণ অ্যাক্সেস সরবরাহ করে, তাই এসএসএইচ-এর মাধ্যমে এই অ্যাকাউন্টে নিরক্ষিত অ্যাক্সেস সরবরাহ করা বুদ্ধিমানের নয়। পড়া লাইন নির্ণয় PermitRootLogin করুন এবং এটি সেট কোন

PermitRootLogin no

৩. পাসওয়ার্ড প্রমাণীকরণ অক্ষম করুন : আপনার সিস্টেমে লগ ইন করতে এসএসএইচ কী তৈরি করুন এবং ব্যবহার করুন । পাসওয়ার্ড সক্ষম না করে আক্রমণকারীদের আপনার সার্ভারে অ্যাক্সেস পাওয়ার জন্য আপনার এসএসএইচ প্রাইভেট কীটি অনুমান করতে হবে (বা চুরি করতে হবে)। এমন কিছু যা খুব কঠিন। লাইন যে সার্চ এটি এগিয়ে যান PasswordAuthentication করুন এবং এটি সেট কোন

PasswordAuthentication no

! সতর্কবার্তা! এটি করার আগে দয়া করে শংসাপত্রের প্রমাণীকরণ কীভাবে সেট আপ করবেন সে সম্পর্কে এখানে এই গাইডের পরামর্শ নিন ।

দ্রষ্টব্য: আপনি পরিবর্তনগুলি ব্যবহার করার পরে sudo /etc/init.d/ssh restart। SSH ব্যবহার মাধ্যমে অন্য পোর্টের সাথে সংযোগ করার জন্য: ssh username@hostname.com -p <port_number>

একটি ফায়ারওয়াল সেটআপ করুন

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

সুরক্ষায় আপনাকে সহায়তা করতে স্ক্রিপ্টগুলি সেটআপ করুন

যে আমি ব্যক্তিগতভাবে এবং দ্রুত ব্যবহার মন থেকে আসে Fail2Ban । Fail2ban ব্যর্থ লগইন চেষ্টার জন্য আপনার লগ ফাইল নিরীক্ষণ করবে। কোনও আইপি ঠিকানা প্রমাণীকরণের প্রচেষ্টা সর্বাধিক সংখ্যার ছাড়িয়ে যাওয়ার পরে, এটি নেটওয়ার্ক পর্যায়ে ব্লক করা হবে এবং ইভেন্টটি লগ ইন করা হবে /var/log/fail2ban.log। এটি ইনস্টল করতে:sudo apt-get install fail2ban

Ssh এর মাধ্যমে কমান্ডের ইতিহাস পরীক্ষা করুন

একটি লিনাক্স কমান্ড রয়েছে, যার নাম রয়েছে history, যা আপনাকে দেখতে দেয় যে বিন্দু পর্যন্ত কোন কমান্ডগুলি ইনপুট করা হয়েছিল। historyবিন্দু পর্যন্ত সমস্ত কমান্ড দেখতে টার্মিনালে টাইপ করার চেষ্টা করুন । আপনি রুট হলে এটি সাহায্য করতে পারে ।

একটি নির্দিষ্ট কমান্ড অনুসন্ধান করার চেষ্টা করুন:history | grep command-name

Ssh এর পরে সমস্ত কমান্ডের তালিকা করতে :fc -l ssh

আপনি vi ব্যবহার করে কমান্ডগুলিও সম্পাদনা করতে পারেন (এটি ভিমের চেষ্টা করে দেখুন না, যদিও আমি ধরে নিই যে এটি কাজ করে):fc -e vi

আপনি ইতিহাস মুছতে পারেন :history -c

দ্রষ্টব্য: আপনি যদি কমান্ডের অনুরাগী না হন তবে historyআপনার হোম ডিরেক্টরিতে ( cd ~) নামে একটি ফাইল রয়েছে যার নাম .bash_history (যদি আপনি ব্যাশ ব্যবহার করছেন) যা আপনি catব্যাশ শেলের মধ্যে টাইপ করা আছে তা দেখতে পারেন ।


খুব সুন্দর উত্তর। আপনি জিজ্ঞাসাবাবু / এ / ৩৯০ub
2৯২৫০


3
  1. জ্যাভিয়ার ইতিমধ্যে এটির উত্তর দিয়েছেন: /var/log/auth.log
  2. আমি এই সম্পর্কে একটি মহান নিবন্ধ পাওয়া যায় এখানে
  3. যদি আপনার ব্যবহারকারীদের রুটে অ্যাক্সেস না থাকে তবে আপনার লগ ফাইলগুলি নিরাপদ থাকা উচিত। আপনার ব্যবহারকারীরা কীভাবে অ্যাক্সেস করতে পারবেন এবং কীভাবে সীমাবদ্ধ করতে আপনি sudoers ফাইলে কিছু কাস্টম বিধি তৈরির চেষ্টা করতে পারেন। এছাড়াও আপনি sshd ডিমন জন্য লগ স্তর বৃদ্ধি করতে পারেন।

3

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

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

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