جدول محتوا
لاگ دسترسی، یک فایل لاگ است که تمام وقایع مرتبط با کلاینتاپلیکیشنها و دسترسیهای کاربران به یک منبع در کامپیوتر را ثبت میکند. بهعنوان مثال، لاگ دسترسی ممکن است شامل لاگهای مرتبط با دسترسی به وبسرور، لاگهای دستورات FTP یا لاگ Queryهای یک پایگاه داده باشد.
مدیریت لاگهای دسترسی، یک وظیفۀ مهم برای ادمینهای سیستم است. توسعهدهندگان نرمافزار، مهندسان عملیات و تحلیلگران امنیتی، از لاگهای دسترسی برای نظارت بر شیوۀ عملکرد برنامهشان، اینکه چه کسانی به آن دسترسی دارند و چه اتفاقاتی پشت صحنه رخ میدهد، استفاده میکنند. لاگهای دسترسی این قابلیت را دارند که به تیمهای فناوری اطلاعات در کشف مشکلات، شناسایی تهدیدها و غیره کمک کنند.
بهطور معمول لاگهای دسترسی شامل بعضی اطلاعات رایج میشوند، بهعنوان مثال:
- تاریخ و زمان دسترسی کلاینت
- آدرس IP کلاینت یا نام میزبان
- نام کاربری
- وضعیت یا بحرانی بودن رویداد
- موفقیت یا شکست در عملیات
- هرگونه پیام مرتبط
در این مقاله، انواع مختلف و دلایل اهمیت داشتن لاگهای دسترسی، محل ذخیرهسازی محتویات و پارامترهای پیکربندی مختلف آنها را بررسی خواهیم کرد.
انواع لاگهای دسترسی
بهصورت کلی میتوانیم لاگهای دسترسی را به سه دستۀ اصلی طبقهبندی کنیم:
- لاگهای فعالیت
- لاگهای دسترسی به سرور
- لاگهای خطا
لاگهای فعالیت
کلیۀ اقداماتی را که در طول یک نشست یا Session توسط کاربر انجام شده است، ثبت میکنند. چنین فعالیتهایی شامل اجرای دستورات، بازدید از URLها و دسترسی به فایلها میشود. برخی از نمونههای لاگهای فعالیت عبارتاند از:
- لاگ Query عمومی MySQL
- لاگ فعالیت Azure
- لاگ دسترسی به وبسرور Apache
- لاگهای ممیزی اکتیو دایرکتوری
لاگهای دسترسی به سرور
شامل اطلاعاتی دربارۀ اتصالات کاربر و درخواستهای منابع آنها هستند. این لاگها برخلاف لاگهای فعالیت، حاوی اطلاعات دقیقی دربارۀ آنچه کاربر انجام داده، نیستند. نمونههایی از لاگهای دسترسی به سرور عبارتاند از:
- Linux Lastlog
- لاگ امنیتی ویندوز
- لاگ دسترسی به سرور AWS S3 Bucket
- لاگ دسترسی به سرور Oracle Directory
- ممیزیهای ورود SQL Server
لاگهای خطا
شامل اطلاعاتی هستند که در خطاهای مربوط به نشستهای کلاینت رخ میدهند. این لاگها برای ایرادیابی خطاهای برنامه و سامانه مفید هستند، بهعنوان مثال:
- Nginx error log
- IBM z/Transaction Processing Facility system error log
برای سادهتر کردن موضوع، در این مقاله تمرکز خود را بر لاگهای دسترسی وبسرور قرار خواهیم داد. بهطور معمول، لاگهای دسترسی وبسرور شامل سه نوع اطلاعات (دسترسی کاربر، فعالیت کاربران و خطاهای درخواست) هستند.
چرا باید لاگ دسترسی را ثبت کنیم؟
ثبت و تحلیل لاگهای دسترسی وبسرور، برای ادمینهای سامانهها بسیار مفید است. در واقع، این فرایند مشخص میکند که برنامۀ وب، در دسترس و سالم است و برای رفع سریعتر خطاهای رخداده نیز استفاده میشود. بهعنوان مثال، اگر لاگ دسترسی نشان دهد که تعداد زیادی خطای HTTP 404 وجود دارد، به این معناست که کاربران درحال تلاش برای دسترسی به یک یا چند صفحۀ ناموجود هستند یا سایت، از URL اشتباه استفاده میکند. همچنین، یک لاگ دسترسی، به رفع خطاهای اساسی کمک میکند. بهعنوان مثال، تعداد زیادی از خطاهای 5XX نشان میدهد که وبسرور با خطاهای داخلی روبهرو شده یا بخشی از سایت، به احتمال زیاد دچار خطا شده است. با بررسی بیشتر در لاگ خطای وبسرور، میتوانید اطلاعات بیشتری را کشف کنید. همچنین، بازاریابان دیجیتال با استفاده از لاگهای دسترسی وبسرور، میتوانند به دادههای مفیدی از سایت مانند بازدیدهای کاربران، لینکهایی که روی آنها کلیک شده، دادههای درخواستشده، فرمهای تکمیلشده و فایلهای دانلودشده، دسترسی پیدا کنند. تمام موارد ممکن است به پروفایلهای کاربری بهینهشده و بهینهسازی موتورهای جستوجو کمک کنند.
مهندسان امنیتی نیز از لاگهای دسترسی وبسرور برای یافتن رفتارهای نامعمول استفاده میکنند. بهعنوان مثال، میتوان به افزایش غیرمنتظرۀ درخواستهای HTTP GET، از یک محدودۀ آدرس IP خاص اشاره کرد. این وضعیت ممکن است نشانگر حملۀ DDoS از مجموعهای از کامپیوترهای قربانیشده باشد، یا اگر وبسرور فقط باید ترافیک HTTP/HTTPS را از فایروال برنامۀ وب قبول کند، درخواستهای مستقیم HTTP از آدرس IP دیگر، ممکن است نشانگر دسترسی غیرمجاز باشد.
لاگ دسترسی شامل چه مواردی است؟
بهطور معمول، لاگ دسترسی به وبسرور، شامل اطلاعات زیر است:
تاریخ و ساعت دسترسی به سایت یا صفحه، که ممکن است به UTC یا به وقت محلی وبسرور باشد. | Date and time |
آدرس IP دستگاه کلاینت. | Source IP |
آدرس IP وبسرور. | Destination IP |
نام کامل دامنۀ وبسرور. | Destination FQDN |
پورت درخواستی در وبسرور که بهطور معمول 80 (پیشفرض برای HTTP) یا 443 (پیشفرض برای HTTPS) است. اما بسته به پورتی که وبسایت درحال اجرا است، ممکن است هرچیزی باشد. |
Destination port |
پروتکل شبکۀ دسترسی کلاینت، یک مثال معمولی HTTP 1.1 است. | Protocol |
دسترسی کاربر به وبسایت (اگر ناشناس باشد، با خط فاصله مشخص میشود). | Username |
صفحه یا عنصر درخواستشده. | Resource |
این روش درخواست HTTP (مانند GET ،POST و غیره). | HTTP method |
کد وضعیت بازگرداندهشده توسط وبسرور (مانند 200 OK ،404 Page Not Found و غیره). | HTTP status code |
درخواست برنامه، بهعنوان بخشی از درخواست HTTP به وبسایت ارسال میشود. | URI Query |
آدرس IP یا URL که کلاینت را به این وبسایت هدایت میکند. | HTTP referrer |
نوع و نسخۀ مرورگر کلاینت. | HTTP user agent |
تعداد بایتهای دریافتشده توسط وبسرور از کلاینت. | Bytes received |
تعداد بایتهای ارسالشده توسط وبسرور به کلاینت. | Bytes sent |
برای اینکه ببینیم این فیلدها به چه صورت هستند، قطعهای از لاگ دسترسی به وبسرور آپاچی را در نظر میگیریم:
116.35.41.41 - - [21/May/2022:11:22:41 +0000] "GET/aboutus.html HTTP
/1.1" 200 6430 "https://34.227.9.153/" "Mozilla/
5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15"
در اینجا، لاگ دسترسی یک درخواست کلاینت از آدرس IP 116.35.41.41 در تاریخ ۲۱ مه ۲۰۲۲ ساعت ۱۱:۲۲ صبح به وقت محلی سرور نشان داده شده است. کلاینت به صفحۀ aboutus.html در روتدایرکتوری وبسایت دسترسی پیدا کرده است. کد وضعیت HTTP 200 و آدرس وبسایت مرجع /https://34.227.9.153 بوده؛ یعنی درخواست کلاینت باموفقیت انجام شده است. مرورگر کاربر Safari، شرکت Apple بوده و زمانی که وبسرور صفحه را ارائه کرده، 6430 بایت به کلاینت فرستاده شده است.
با جمعآوری این اطلاعات از لاگ دسترسی، میتوانید موارد زیر را پیدا کنید:
- تعداد بازدیدکنندگان هر صفحه یا صفحههای بازدیدشده توسط هر بازدیدکننده
- مکان جغرافیایی بازدیدکنندگان سایت
- پربازدیدترین قسمتهای سایت
- پرکاربردترین Queryهای کاربر
- تعداد کل کدهای مختلف وضعیت HTTP
چگونگی پیدا کردن لاگ دسترسی
مکان لاگ دسترسی یک وبسرور، به سیستمعامل و نوع آن وبسرور بستگی دارد. بهعنوان مثال، مکان پیشفرض لاگ دسترسی وبسرور Apache در سیستمهای مبتنیبر RHEL در var/log/httpd/ است. در سیستمهای مبتنیبر Debian، مانند Ubuntu، مکان آن var/log/apache2/ است. برای Nginx، بهطور پیشفرض، لاگ دسترسی در Directory/var/log/nginx در هر دو دسته سیستمعاملهای مبتنیبر RHEL و Debian است.
محل لاگ دسترسی پیشفرض برای وبسرور IIS که روی سرور ویندوز اجرا میشود، %SystemDrive%\inetpub\logs\LogFiles\W3SVC است. %SystemDrive% بهطور معمول \:C و site_id شناسۀ وبسایت میزبان IIS است. راههای مختلفی برای خواندن لاگ دسترسی وبسرور وجود دارد. مدیر سایت در سیستمهای مبتنیبر لینوکس میتواند با استفاده از دستوراتی مانند cat ،tail و grep با استفاده از SSH به فایل دسترسی پیدا کند و آن را بخواند. گاهی اوقات، مدیران وبسایتها باید از پنل کنترل ارائهدهندۀ میزبانی، مانند Cpanel برای باز کردن و خواندن لاگ دسترسی استفاده کنند.
شیوۀ پیکربندی لاگ دسترسی
میتوانید خصوصیات لاگ دسترسی وبسرور را (مانند بیشتر تنظیمات) در پروندۀ پیکربندی آن تنظیم کنید. مکان پروندۀ پیکربندی اصلی یک وبسرور، به نوع وبسرور و سیستمعامل بستگی دارد. در اینجا یک لیست است:
Main Configuration File | OS | Webserver |
---|---|---|
etc/httpd/conf/httpd.conf/ | RHEL-based | Apache |
etc/apache2/apache2.conf/ | Debian-based | Apache |
etc/nginx/nginx.conf/ | RHEL-based | Nginx |
etc/nginx/nginx.conf/ | Debian-based | Nginx |
%WinDir%\System32\Inetsrv\Config\ApplicationHost.config | Windows Server | IIS |
بعضی از تنظیمات رایج لاگ دسترسی در هر وبسرور عبارتاند از:
- مکان لاگ
- فرمت لاگ
- سطح لاگ
- دورهبندی لاگ (Log Rotation)
مکان لاگ دسترسی برای هر وبسایتی که در وبسرور میزبانی میشود، ممکن است متفاوت باشد. بهعنوان مثال، دستور زیر در Apache، مکان لاگ دسترسی در سراسر سرور را تنظیم میکند:
CustomLog "/var/log/httpd2/access_log" common
اما برای VirtualHost میتوان آن را بازنویسی کرد:
<VirtualHost *:80>
ServerName www.mysite.com
ServerAlias test.com
DocumentRoot/var/www/html/test.com
ErrorLog/var/log/httpd/mysite.com/error_log
CustomLog/var/log/httpd/mysite.com/access_log combined
</VirtualHost>
پیکربندی فرمت لاگ دسترسی، فیلدهایی را که در ورودیهای لاگ قرار میگیرد، مشخص میکند. فرمت لاگ دسترسی ممکن است عمومی (Common) یا ترکیبی (Combined) باشد. تصویر زیر، نمونهای از یک پیکربندی را نشان میدهد:
LogFormat "%h %l %u %t\"%r\" %>s %b" common
بهگونهای که:
- %h نام میزبان Remote است.
- %l نام لاگ Remote از Identd است. (اگر در دسترس باشد.)
- %u شناسۀ کاربری کلاینت است. (اگر در دسترس باشد.)
- %t زمان دریافت درخواست است.
- %r اولین خط درخواست HTTP است.
- %>s کد وضعیت HTTP بازگشتدادهشده توسط وبسرور است.
- %b اندازۀ منبع بازگشتی به بایت است.
شما میتوانید به مستندات Apache مراجعه کنید تا متوجه شوید چگونه از ماژول Custom log برای پیکربندی فرمت لاگ دسترسی خود استفاده کنید.
تنظیمات پیکربندی لاگ دسترسی Apache شامل Log Level و Log Rotation است. Log Level فقط رویدادهای خاصی را که با سطح بحرانی خاصی مطابقت دارند، شامل میشود. این سطوح بحرانی شامل Debug ،Info ،Notice ،Warn Error ،Crit ،Alert ،Emerg و بین Trace1 تا Trace8 است. هرچه Log Level کمتر باشد، ورودیهای لاگ، جزئیات بیشتری خواهند داشت. در تصویر زیر، لاگ دسترسی را بهمنظور ضبط پیامهای سطح هشدار (Warn) و بالاتر پیکربندی میکنیم:
1.LogLevel warn
از این مثال، میتوان برای VirtualHostهای Apache استفاده کرد. همچنین، شما میتوانید Apache Log Rotation را با استفاده از ابزار Logrotate لینوکس یا برنامۀ Rotatelog Apache تنظیم کنید.
این مقاله، ترجمهای از سایت CrowdStrike است.