Skip to Content

Traditional Logs

লিনাক্সে প্রায় প্রতিটি সার্ভিস এবং অ্যাপ্লিকেশন তাদের কার্যক্রমের একটি লিখিত রেকর্ড রাখে। এই রেকর্ডগুলোকে বলা হয় Text Logs, এগুলো /var/log ডিরেক্টরিতে থাকে। একজন হ্যাকারকে ট্রেস করা বা সিস্টেমের এরর খুঁজে বের করার জন্য এটিই প্রথম ধাপ।

The Map of /var/log

সব লগ ফাইল এক জায়গায় থাকলেও একেকটি ফাইলের কাজ একেক রকম। নিচে গুরুত্বপূর্ণ কিছু লগ ফাইলের তালিকা দেওয়া হলো যা আপনার সবসময় চেক করতে হবে:

ফাইল পাথকী থাকে?কেন চেক করবেন?
/var/log/auth.logAuthentication logsকেউ লগইন করার চেষ্টা করছে কি না বা sudo পাসওয়ার্ড দিচ্ছে কি না।
/var/log/syslogGlobal system logsসিস্টেমের প্রায় সব ধরণের মেজেস এখানে পাওয়া যায়।
/var/log/kern.logKernel logsহার্ডওয়্যার ড্রাইভ বা কার্নেল লেভেলের কোনো সমস্যা হলে।
/var/log/apache2/Web server logsওয়েবসাইটের ভিজিটর এবং এরর চেক করতে।

Anatomy of a Log Line (লগের ব্যবচ্ছেদ)

একটি লগ ফাইলের প্রতিটি লাইন একটি নির্দিষ্ট ফরম্যাট মেনে চলে। নিচে একটি Apache Access Log উদাহরণের মাধ্যমে এর প্রতিটি অংশ ব্যাখ্যা করা হলো:

Log Entry Example
10.9.232.111 - - [04/May/2021:18:18:16 +0000] "GET /catsanddogs.jpg HTTP/1.1" 200 51395
অংশউদাহরণব্যাখ্যা
IP Address10.9.232.111কে আপনার সার্ভারে ভিজিট করেছে (অ্যাটাকার বা ইউজার)।
Timestamp04/May/2021...ঘটনাটি ঠিক কখন ঘটেছে।
RequestGET /catsanddogs.jpgভিজিটর কী দেখতে চেয়েছে (ফাইল পাথ)।
Status Code200রিকোয়েস্টটি সফল হয়েছে কি না (200 = OK, 404 = Not Found)।
Size51395কতটুকু ডাটা ট্রান্সফার হয়েছে (বাইট-এ)।
User-AgentMozilla/5.0...ভিজিটর কোন ডিভাইস বা ব্রাউজার ব্যবহার করছে।

Advanced Byte (V8 vs WebKit):
লগ লাইনে AppleWebKit দেখে বিভ্রান্ত হবেন না। এটি হলো ব্রাউজারের Rendering Engine (যা ওয়েবসাইট দেখায়)। অন্যদিকে V8 হলো লজিক প্রসেস করার JS Engine। লগ ফাইল মূলত রেন্ডারিং কম্প্যাটিবিলিটি ট্র্যাক করে বলে এখানে ইঞ্জিনের নাম WebKit বা Blink থাকে।

Dealing with Compressed Logs (.gz)

আপনি যখন /var/log ডিরেক্টরিতে ls চালাবেন, দেখবেন অনেকগুলো ফাইল .gz ফরম্যাটে আছে। এগুলো হলো পুরনো লগ যা জায়গা বাঁচানোর জন্য জিপ করা হয়েছে। এগুলো পড়তে আপনাকে ফাইল আনজিপ করতে হবে না, বরং সরাসরি নিচের টুলগুলো ব্যবহার করতে পারেন:

  • zless: জিপ করা ফাইল স্ক্রল করে পড়ার জন্য (যেমন: zless auth.log.2.gz)।
  • zgrep: জিপ করা ফাইলের ভেতর কিছু সার্চ করতে (যেমন: zgrep "Failed" auth.log.2.gz)।
  • zcat: জিপ করা ফাইলের সব কন্টেন্ট টার্মিনালে দেখতে।

The User Workflow (কী করবেন?)

একজন অ্যাডমিনিস্ট্রেটর বা লার্নার হিসেবে যখন আপনি /var/log এ আসবেন, তখন নিচের ধাপগুলো অনুসরণ করা সবচেয়ে কার্যকর:

১. উদ্দেশ্য অনুযায়ী ফাইল ফাইল বাছুন

আপনি কেন এসেছেন? লগইন সমস্যা হলে প্রথমেই auth.log খুলুন। সিস্টেম ক্র্যাশ করলে syslog বা kern.log দেখুন।

২. লাইভ মনিটর করুন (যদি সমস্যাটি এখন ঘটে থাকে)

যদি সমস্যাটি এই মুহূর্তে ঘটছে এমন মনে হয়, তবে tail -f ব্যবহার করে ফাইলটি খোলা রাখুন। এটি রিয়েল-টাইমে নতুন লাইনগুলো দেখাবে।

Terminal
sudo tail -f /var/log/syslog

৩. কি-ওয়ার্ড দিয়ে ফিল্টার করুন

হাজার হাজার লাইনের মাঝে সময় নষ্ট না করে grep দিয়ে আপনার প্রয়োজনীয় শব্দ খুঁজুন।

Terminal
cat /var/log/auth.log | grep "Failed"

৪. বাইনারি লগ চেক করুন

lastlog, wtmp, বা btmp এর মতো ফাইলগুলো সরাসরি পড়া যায় না। এগুলো পড়ার জন্য বিশেষ কমান্ড ব্যবহার করুন:

  • last: গত কয়েকদিনের সফল লগইনগুলো দেখতে।
  • lastb: ফেইল্ড লগইন অ্যাটেম্পট বা হ্যাকিং চেষ্টা দেখতে।

Do’s and Don’ts (কী করবেন এবং কী করবেন না?)

সার্ভার ম্যানেজমেন্টের সময় লগ ফাইল নিয়ে কাজ করার কিছু অলিখিত নিয়ম আছে যা আপনাকে একজন দক্ষ অ্যাডমিনিস্ট্রেটর হতে সাহায্য করবে:

✅ যা করবেন (Do’s):

  • সার্চ করার আগে স্যাম্পল দেখুন: কোনো বড় ফাইল ফিল্টার করার আগে head বা tail দিয়ে তার ৪-৫টি লাইন দেখে নিন যে ফরম্যাট ঠিক আছে কি না।
  • সার্ভিস অনুযায়ী লগ খুঁজুন: ওয়েবসাইট ডাউন থাকলে সরাসরি apache2/error.log বা php-fpm.log দেখুন।
  • পুরনো লগের সাহায্য নিন: আপনার সিস্টেমে যদি .gz ফাইল থাকে, তবে গত কয়েকদিনের ট্রেন্ড বোঝার জন্য zgrep ব্যবহার করুন।

❌ যা করবেন না (Don’ts):

  • সরাসরি ডিলিট (rm) করবেন না: একটি একটিভ লগ ফাইল কখনোই rm কমান্ড দিয়ে ডিলিট করবেন না। এতে সেই সিস্টেমটি লগ লেখা বন্ধ করে দিতে পারে।
  • Cat ব্যবহার থেকে সিরিয়াসলি বিরত থাকুন: যদি ফাইলটি অনেক বড় হয়, তবে cat দিলে আপনার টার্মিনাল হ্যাং হয়ে যেতে পারে। সবসময় less বা tail ব্যবহার করুন।
  • বড় ফাইলে এডিটর (Nano/Vim) খুলবেন না: বিশাল বড় লগ ফাইল এডিটরে খুললে আপনার র‍্যাম (RAM) ফুল হয়ে সার্ভার ক্র্যাশ করতে পারে।

CyberSec Note

Log Forensic (Deep Dive):

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

Terminal
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

এটি আপনাকে একটি পরিসংখ্যান দেবে যে কোন আইপি থেকে সবচেয়ে বেশিবার অ্যাটাক হয়েছে।

Troubleshooting: Permission Denied (লগ পড়তে না পারলে)

লগ ফাইল নিয়ে কাজ করার সময় আপনি প্রায়ই Permission denied এরর পাবেন। এটি সমাধান করার জন্য নিচের ধাপগুলো অনুসরণ করুন:

১. ফাইল পারমিশন চেক করুন

প্রথমে দেখুন ফাইলটির মালিক কে এবং কোন গ্রুপ এটি পড়তে পারে।

Terminal
ls -l /var/log/apache2/access.log # আউটপুট: -rw-r----- 1 root adm ...

এখানে খেয়াল করুন:

  • Owner (root): পড়তে ও লিখতে পারে।
  • Group (adm): শুধু পড়তে পারে।
  • Others: কোনো এক্সেস নেই।

২. আপনার গ্রুপ চেক করুন

যদি আপনি root না হয়ে থাকেন, তবে আপনার ইউজারটি adm গ্রুপের সদস্য কি না তা দেখুন:

Terminal
id

যদি আউটপুটে groups=...4(adm) থাকে, তবে আপনি sudo ছাড়াও এই লগগুলো পড়তে পারবেন (কিছু সিস্টেমে)। আর যদি না থাকে, তবে আপনাকে sudo ব্যবহার করতে হবে।

৩. ফাইলের সাইজ খেয়াল করুন

লগ ফাইল যদি একদম খালি হয় (সাইজ 0 bytes), তবে cat বা tail দিলে কিছুই দেখাবে না। সবসময় ls -l এ ফাইলের সাইজ দেখে নিশ্চিত হোন যে ভেতরে কোনো ডাটা আছে কি না।

Quick Check

  • জিপ করা লগ ফাইল আনজিপ না করে পড়ার কমান্ড কোনটি?
  • last কমান্ডটি দিয়ে কী দেখা হয়?
  • tail -f কখন ব্যবহার করা সবচেয়ে ভালো?
  • একটি লগ লাইনে sshd[1234] এর অর্থ কী?

পরবর্তী → Mastering journalctl

linux traditional logs bangla, var log directory bengali, auth log investigation bangla, zless zgrep bangla tutorial, linux forensics logs bangla, last command bengali

Last updated on