استفاده از دستور last در لینوکس — راهنمای کاربردی

۲۷۱ بازدید
آخرین به‌روزرسانی: ۰۳ مهر ۱۴۰۲
زمان مطالعه: ۶ دقیقه
استفاده از دستور last در لینوکس — راهنمای کاربردی

چه کسی، چه زمان و از کجا؟ رویه‌های امنیتی مناسب از ما می خواهند که بدانیم چه کسی به رایانه لینوکسی من دسترسی یافته است. در این نوشته با روش استفاده از دستور last به عنوان راه‌حلی برای این مسئله آشنا خواهیم شد.

فایل wtmp

لینوکس و دیگر سیستم‌های عامل شِبه یونیکس مانند macOS در زمینه گزارش‌گیری (logging) عملکرد مناسبی دارند. بدین ترتیب جایی در اعماق سیستم، مکانی وجود دارد که در آن همه چیزهایی که می‌توانید تصور کنید ثبت می‌شوند. فایل log که ما به آن علاقه‌مند هستیم wtmp نام دارد. حرف w اختصاری برای «چه زمان» (When) یا «چه کسی» (Who) است. هیچ کس در مورد آن مطمئن نیست. حروف tmp نیز اختصاری برای عبارت «temporary» (موقت) است ، اما می‌تواند اختصاری برای timestamp نیز باشد.

آن چه می‌دانیم این است که wtmp یک فایل لاگ است که همه رویدادهای لاگین و لاگ‌آوت را ثبت و ضبط می‌کند. مرور داده‌های موجود در لاگ wtmp یک گام ابتدایی برای اجرای رویکرد امنیتی در خصوص وظایف مدیر سیستم محسوب می‌شود. در مورد یک رایانه معمول خانوادگی شاید این موضوع چندان ضرورت امنیتی حادی محسوب نشود، اما این که می‌توانید استفاده ترکیبی افراد مختلف از رایانه را مورد بررسی قرار دهید جالب خواهد بود.

برخلاف بسیاری از فایل‌های لاگ مبتنی بر متن، wtmp یک فایل باینری است. برای دسترسی به داده‌های داخل آن باید از یک ابزار که به این منظور طراحی شده استفاده کنید. این دستور last نام دارد.

دستور last

دستور last داده‌ها را از لاگ wtmp می‌خواند و آن‌ها را در پنجره ترمینال نمایش می‌دهد. اگر عبارت last را وارد کرده و اینتر را بزنید همه رکوردهای فایل لاگ نمایش پیدا می‌کنند:

Last

فرمان last

هر رکورد در فایل wtmp در پنجره ترمینال نمایش پیدا می‌کند.

از چپ به راست، هر خط شامل موارد زیر است:

  • نام کاربری فردی که لاگین کرده است.
  • ترمینالی که کاربر برای لاگین کردن استفاده کرده است. مدخل ترمینال با مقدار:0 به معنی این است که کاربر روی خود رایانه لینوکس لاگین کرده است.
  • آدرس IP دستگاهی که کاربر از آن لاگین کرده است.
  • زمان لاگین و تاریخ آن.
  • مدت نشست لاگین کاربر.

فرمان last

خط آخر، تاریخ و زمان ابتدایی‌ترین نشست ثبت‌شده در فایل لاگ را نمایش می‌دهد.

یک مدخل طولانی برای کاربر خیالی reboot در لاگ وارد شده است که هر بار رایانه روشن می‌شود وارد عمل می‌شود. فیلد ترمینال با نسخه کرنل جایگزین شده است. مدت لاگین در نشست برای این مدخل‌ها نشان‌دهنده زمان روشن بودن رایانه است.

نمایش تعداد خاصی از خطوط

استفاده از دستور last به نوبه خود یک dump از کل لاگ را نشان می‌دهد که بخش غالب آن به سرعت در پنجره ترمینال اسکرول شده و می‌گذرد. بخشی که در محدوده دید می‌ماند، قدیمی‌ترین داده‌های موجود در لاگ است. این بخش احتمالاً آن چیزی نیست که علاقه‌مند دیدن آن هستید.

می‌توان به last اعلام کرد که تعداد خاصی از خطوط را در خروجی نمایش دهد. این کار با تعیین کردن تعداد خطوطی که می‌خواهید در خط فرمان ببینید انجام می‌یابد. به خط تیره توجه کنید. برای دیدن پنج خط باید از عبارت 5- و نه 5 استفاده کنید.

last -5

فرمان last

بدین ترتیب پنج خط نخست از لاگ خوانده می‌شود که تازه‌ترین مدخل‌ها است.

فرمان last

نمایش نام‌های شبکه برای کاربران ریموت

گزینه d- که اختصاری برای عبارت «سیستم نام دامنه» (Domain Name System) است به دستور last اعلام می‌کند که تلاش کند آدرس‌های IP کاربران ریموت را به یک نام دستگاه یا شبکه resolve کند.

last –d

امکان تبدیل آدرس IP به نام شبکه برای دستور last همواره امکان‌پذیر نیست، اما دستور last زمانی که بتواند این کار را انجام دهد آن را اجرا خواهد کرد.

فرمان last

پنهان‌سازی آدرس‌های IP و نام‌های شبکه

اگر به آدرس IP یا نام شبکه علاقه‌مند نیستید، از گزینه R- (بدون hostname) برای خاموش کردن این فیلد استفاده کنید.

فرمان last

از آنجا که این وضعیت یک خروجی تمیزتر بدون شکستگی‌های زشت به دست می‌دهد، این گزینه در همه مثال‌های ادامه مورد استفاده قرار گرفته است. اگر می‌خواهید از last برای شناسایی فعالیت‌های نامعمول یا مشکوک استفاده کنید، نباید این فیلد را خاموش کنید.

فرمان last

انتخاب رکوردها با تاریخ

شما می‌توانید از گزینه s- به معنی Since برای محدودسازی خروجی برای نمایش صرفاً رویدادهای لاگین که از یک تاریخ خاص به بعد اجرا می‌شوند استفاده کنید.

اگر فقط می‌خواهید رویدادهای لاگین را که از بیست و ششم می 2019 به بعد اتفاق افتاده‌اند ببینید، از دستور زیر استفاده کنید:

last -R -s 2019-05-26

فرمان last

خروجی رکوردهایی را نمایش می‌دهد که رویدادهای لاگین از زمان 00:00 در تاریخ مذکور تا جدیدترین رکوردها در فایل لاگ را نشان می‌دهند:

فرمان last

جستجو تا تاریخ انتهایی

با استفاده از گزینه t– به معنی until می‌توانید تاریخ انتهایی جستجوی خود را تعیین کنید. این گزینه امکان انتخاب مجموعه‌ای از رکوردهای لاگین را می‌دهد که بین دو تاریخ مورد نظر قرار دارند:

فرمان last

این دستور از last می‌خواهد که رکوردهای لاگین را از زمان 00:00 در تاریخ بیست و ششم تا 00:00 در تاریخ بیست و هفتم بازیابی کرده و نمایش دهد. بدین ترتیب لیست بندی به نشست‌های لاگینی محدود می‌شود که صرفاً در بیست و ششم اتفاق افتاده‌اند.

فرمان last

قالب‌های تاریخ و زمان

شما می‌توانید از این زمان‌ها نیز به همراه تاریخ‌ها با گزینه‌های s- و t- استفاده کنید.

می‌توان از قالب‌های زمانی مختلف با گزینه last استفاده کرد که برای تاریخ‌ها و زمان‌های مختلف مناسب هستند:

  • YYYYMMDDhhmmss
  • YYYY-MM-DD hh:mm:ss
  • YYYY-MM-DD hh:mm – ثانیه‌ها روی 00 تنظیم شده است.
  • YYYY-MM-DD – زمان روی 00:00:00 تنظیم شده است.
  • hh:mm:ss – تاریخ روی امروز تنظیم شده است.
  • hh:mm – تاریخ روی امروز و زمان روی 00 تنظیم شده است.
  • now
  • yesterday – زمان روی 00:00:00 تنظیم شده است.
  • today – زمان روی 00:00:00 تنظیم شده است.
  • tomorrow – زمان روی 00:00:00 تنظیم شده است.
  • 5min+
  • 5days-

توجه داشته باشید که قالب‌های دوم و سوم در فهرست فوق در طی بررسی‌های ما عمل نکردند. این دستورها روی توزیع‌های اوبونتو، فدورا، و منجارو تست شده‌اند. این توزیع‌ها به ترتیب نسخه‌هایی از توزیع‌های دبیان، ردهت و Arch هستند. این توزیع‌ها همه اعضای اصلی خانواده توزیع‌های لینوکس را پوشش می‌دهند.

last -R -s 2019-05-26 11:00 -t 2019-05-27 13:00

فرمان last

چنان که می‌بینید این دستور کلاً هیچ رکوردی بازگشت نمی‌دهد. با استفاده از قالب تاریخ و زمان اول لیست با همان تاریخ و زمان‌های دستور قبلی، رکوردهایی بازگشت می‌یابند:

last -R -s 20190526110000 -t 20190527130000

فرمان last

جستجو بر اساس واحدهای نسبی

امکان تعیین واحدهای زمانی برحسب دقیقه، یا روز در نسبت با تاریخ و زمان جاری نیز وجود دارد. در ادامه رکوردهایی از دو روز قبل تا یک روز قبل از روز جاری بازگشت می‌یابند:

last -R -s -2days -t -1days

فرمان last

دیروز، امروز و حال

می‌توان از کلیدواژه‌های yesterday و tomorrow به ترتیب برای تاریخ‌های دیروز و امروز استفاده کرد.

last -R -s yesterday -t today

فرمان last

توجه کنید که این لیست شامل رکوردهای امروز نیست. این همان رفتاری است که مورد انتظار ما است. این دستور رکوردهایی را با آغاز از تاریخ ابتدایی تا تاریخ انتهایی دریافت می‌کند. بدین ترتیب شامل رکوردهایی از تاریخ انتها به بعد نخواهد بود.

فرمان last

گزینه now اختصاری برای «امروز و زمان حاضر» است. برای دیدن رویدادهای لاگین که از ساعت 00:00 تا زمانی که دستور را صادر می‌کنید اتفاق افتاده‌اند می‌توانید از دستور زیر استفاده کنید:

last -R -s today -t now

فرمان last

دستور فوق رویدادهای لاگین را تا دقیقاً زمان جاری نمایش می‌دهد که شامل آن نشستی که هم اینک در آن لاگین کرده‌اید نیز می‌شود.

فرمان last

گزینه present

گزینه present با حرف p- امکان یافتن این که چه کسی در یک زمان خاص لاگین کرده است را می‌دهد. مهم نیست که فرد چه زمانی لاگین یا لاگ‌آوت کرده است، اما اگر در زمانی که تعیین کرده‌اید در رایانه لاگین کرده باشد، در لیست خروجی ظاهر خواهد شد. اگر زمانی را بدون یک تاریخ last تعیین کنید، به صورت پیش‌فرض today تصور می‌شود:

last -R -p 09:30

فرمان last

بدیهی است افرادی که همچنان در سیستم لاگین کرده‌اند، زمان لاگ‌آوت ندارند و به صورت still logged in نمایش پیدا می‌کنند. اگر رایانه از زمان تعیین شده راه‌اندازی مجدد نشده باشد، به صورت still running در خروجی ظاهر می‌شود.

فرمان last

اگر از کلیدواژه اختصاری now با گزینه present استفاده کنید، می‌توانید ببیند که در زمان صدور دستور چه کسی در سیستم لاگین کرده است:

last -R -p now

فرمان last

البته این روش برای رسیدن به نتیجه مطلوب کمی طولانی است و روش آسان‌تر استفاده از دستور who است.

فرمان last

دستور lastb

در این جا باید به دستور lastb نیز اشاره کنیم، این فرمان داده‌ها را از یک لاگ به نام btmp می‌خواند. در مورد نام این لاگ اجماع اندکی وجود دارد. b اختصاری برای bad است، اما بخش tmp همچنان محل نزاع است.

Lastb تلاش‌های لاگین بد (ناموفق) را لیست می‌کند. این فرمان همان گزینه‌های مربوط به دستور last را می‌پذیرد. از آنجا که این لاگ شامل تلاش‌های ناموفق لاگین است، مداخل آن‌ها همگی مدت 00:00 دارند. شما در زمان استفاده از دستور lastb باید از sudo استفاده کنید:

sudo lastb –R

فرمان last

سخن پایانی

دانستن این که چه کسی در یک رایانه لینوکسی لاگین کرده و این کار چه زمانی و از کجا صورت گرفته اطلاعات مفیدی محسوب می‌شود. ترکیب کردن این اطلاعات با جزییات تلاش‌های لاگین ناموفق شما را قادر می‌سازد که نخستین گام‌های خود را در بررسی رفتارهای مشکوک روی سیستم بردارید.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
howtogeek
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *