1.0 مقدمه: چرا جمعآوری لاگ اولین و مهمترین قدم است؟
“به نام خداوند جان و خرد… درود و احترام فراوان خدمت شما همراهان عزیز. من محمد قنبری هستم و اینجا پادکست سیم باز است. این شما و این هم اپیزود دوم از فصل دوم.”
سلام عرض میکنم خدمت شما همراهان عزیز. به یک اپیزود دیگه از پادکست ما خوش اومدید. امروز میخوایم در مورد یک موضوع حیاتی صحبت کنیم که شاید به اندازهی هوش مصنوعی یا تحلیلهای پیچیدهی امنیتی جذاب به نظر نرسه، اما در واقع شالوده و فونداسیون اصلی تمام این کارهاست: جمعآوری لاگهای سرویس. فرقی نمیکنه از چه سیستم SIEM قدرتمندی استفاده میکنید، اگر دادههای ورودی شما ناقص، نادرست یا بیکیفیت باشن، تمام تحلیلهای بعدی بیفایده خواهند بود. در اکوسیستم Splunk، این اصل اهمیت دوچندانی داره. قبل از اینکه بتونیم داشبوردهای زیبا بسازیم یا هشدارهای هوشمند تعریف کنیم، باید مطمئن بشیم که دادهها رو به بهترین شکل ممکن جمعآوری کردیم. در این اپیزود، قراره با هم روشهای مختلف این کار رو با تمرکز بر ابزارها و استراتژیهای Splunk بررسی کنیم.
اجازه بدید از یک تشبیه ساده استفاده کنم. ساختن یک سیستم تحلیل امنیتی مثل ساختن یک آسمانخراش میمونه. شما میتونید بهترین معمارها و پیشرفتهترین تجهیزات رو داشته باشید، اما اگر فونداسیون این ساختمان، یعنی همون مرحلهی جمعآوری داده، ضعیف یا ناقص باشه، کل سازه ناپایدار و غیرقابل اعتماد خواهد بود. انتخاب استراتژی درست برای جمعآوری لاگ، دقیقاً مثل ریختن یک بتن محکم برای این فونداسیونه.
حالا که به اهمیت این موضوع پی بردیم، بیاید با هم اولین و متداولترین روش جمعآوری لاگ رو بررسی کنیم و ببینیم چطور میتونیم این کار رو به شیوهای هوشمندانه انجام بدیم.
2.0 روشهای جمعآوری لاگ: سنتی در برابر استخراج از شبکه
به طور کلی، دو رویکرد اصلی برای جمعآوری لاگ سرویسها وجود داره. رویکرد اول، روش سنتی و شناختهشدهی مبتنی بر نصب ایجنت روی سرورهاست. رویکرد دوم، یک روش مدرنتره که بر پایهی تحلیل ترافیک شبکه و استخراج لاگ از اون بنا شده. درک تفاوتها، مزایا و معایب هرکدوم از این روشها به شما کمک میکنه تا بر اساس شرایط خاص سازمان خودتون، بهترین و کارآمدترین راهکار رو انتخاب کنید.
2.2 روش سنتی با Splunk:
در دنیای Splunk، روش سنتی با یک ابزار سبک و قدرتمند به نام Splunk Universal Forwarder گره خورده. مفهومش خیلی سادهست: شما این ایجنت سبک رو روی سرورهای خودتون، مثلاً یک سرور DNS، نصب میکنید. بعد بهش میگید که فایلهای لاگ رو در یک مسیر مشخص زیر نظر بگیره. به محض اینکه یک خط لاگ جدید در اون فایل نوشته بشه، Universal Forwarder اون رو برمیداره و به صورت امن و مطمئن برای قلب تپندهی Splunk، یعنی Splunk Indexer، ارسال میکنه.
برای اینکه این فرآیند رو بهتر تصور کنید، فکر کنید هر سرور شما یک خبرنگار محلی (همون Universal Forwarder) داره. این خبرنگار وظیفهاش اینه که اخبار (یعنی لاگها) رو مستقیماً از منبع اصلی جمعآوری کنه و بدون فوت وقت، به دفتر خبر مرکزی (یعنی Splunk) مخابره کنه. این روش، یک ارتباط مستقیم و قابل اعتماد بین منبع لاگ و سیستم تحلیل شما برقرار میکنه.
2.3 روش استخراج از شبکه با Splunk:
حالا بیاید روش دوم رو بررسی کنیم. فرض کنید شما نمیخواید یا نمیتونید روی تکتک سرورهاتون ایجنت نصب کنید. اینجا ابزاری مثل Splunk Stream وارد بازی میشه. به جای اینکه روی هر سرور یک خبرنگار داشته باشیم، یک “شنودگر” بسیار هوشمند (Splunk Stream) رو در یک نقطهی استراتژیک از شبکهمون قرار میدیم. این کار معمولاً با استفاده از تکنیکهایی مثل TAP یا Port Mirror در سوییچهای شبکه انجام میشه که یک کپی از تمام ترافیک رو برای سنسور ما ارسال میکنه. این سنسور با مشاهدهی بستههای دادهای که در شبکه رد و بدل میشن، خودش لاگهای بسیار غنی و معنادار تولید میکنه.
برای تصویرسازی بهتر، Splunk Stream رو مثل یک دوربین کنترل ترافیک فوق پیشرفته در نظر بگیرید که در یک شاهراه اصلی شبکه نصب شده. این دوربین فقط از ماشینها (بستههای داده) عکس نمیگیره، بلکه اطلاعات کلیدی مثل پلاک (آدرس IP)، سرعت، مبدأ و مقصد رو استخراج میکنه و همهی اینها رو به صورت یک گزارش ساختاریافته و استاندارد (لاگ) ثبت میکنه.
حالا که با این دو رویکرد اصلی آشنا شدیم، وقتشه که عمیقتر به دنیای Splunk Stream شیرجه بزنیم و ببینیم این ابزار مدرن چه قابلیتهایی رو در اختیار ما قرار میده.
3.0 شیرجه عمیق در Splunk Stream: جایگزین مدرن Zeek
ابزارهایی مثل Splunk Stream، که در دنیای متنباز معادلهایی مثل Zeek و Security Onion دارن، به سرعت در حال تبدیل شدن به یکی از محبوبترین راهکارها در تیمهای امنیتی هستن.
این ابزاریه که در بزرگترین شرکتهای دنیا و پیشرفتهترین مراکز عملیات امنیت برای رسیدن به دید کامل در شبکه استفاده میشه. دلیل این محبوبیت هم مشخصه: این ابزارها به ما قدرت ایجاد یک دید فوری و جامع در شبکه رو میدن، بدون اینکه نیاز باشه حتی یک خط کد یا تنظیمات رو در سرویسهای اصلی و حیاتی سازمان تغییر بدیم.
بیایید قابلیتهای اصلی Splunk Stream رو با هم مرور کنیم:
مانیتورینگ غیرفعال (Passive Monitoring): این ابزار مثل یک شنوندهی ساکت عمل میکنه. بدون اینکه هیچ سربار یا اختلالی در عملکرد شبکه ایجاد کنه، فقط ترافیک رو “گوش” میده و از روی اون لاگ تولید میکنه.
تولید لاگهای متنوع: قدرت اصلی Splunk Stream در تنوع لاگهاییه که به طور پیشفرض تولید میکنه. به محض اتصال به شبکه، شما لاگهای ارزشمندی برای پروتکلهای کلیدی مثل DNS, HTTP, SSL, DHCP, RDP, SMTP و دهها پروتکل دیگه خواهید داشت.
نصب و راهاندازی سریع (Drop and Go): این مفهوم که در دنیای متنباز به Zeek نسبت داده میشه، کاملاً در مورد Splunk Stream هم صادقه. راهاندازی اون مثل یک غذای آمادهست که فقط به “آب” نیاز داره. در این سناریو، “آب” همون ترافیک شبکهست. کافیه به این ابزار دید شبکه (Network Visibility) بدید تا بلافاصله شروع به تولید لاگهای ارزشمند و استاندارد کنه.
بیایید یک مثال عملی رو با هم تصور کنیم. یک سنسور Splunk Stream رو در نظر بگیرید که از طریق Port Mirror به یکی از سوییچهای اصلی شبکهی شما متصل شده. به محض برقراری این اتصال، اتفاق شگفتانگیزی میافته: لاگهای DNS, HTTP و… از تمام سرورهایی که به اون سوییچ متصل هستن، به سمت Splunk سرازیر میشن. حتی لاگ مربوط به سرورهایی که شاید فراموش کرده بودیم روی اونها Forwarder نصب کنیم یا اصلاً از وجودشون بیخبر بودیم!
اما این قدرت زیاد، یک مسئولیت بزرگ هم به همراه داره. اگر در طراحی و جانمایی این سنسورها دقت نکنیم، ممکنه با یک چالش جدی روبرو بشیم که در بخش بعدی بهش میپردازیم.
4.0 چالشها و ملاحظات: مراقب لاگهای تکراری باشید!
قدرت زیاد ابزارهایی مثل Splunk Stream، مسئولیت زیادی هم به همراه داره. طراحی و جانمایی صحیح سنسورهای شبکه اهمیت فوقالعادهای داره، چون یک اشتباه کوچک در طراحی میتونه منجر به تولید دادههای اضافی، تکراری و در نهایت گمراهکننده بشه.
بیایید سناریوی ایجاد لاگ تکراری رو با هم بازسازی کنیم. تصور کنید یک کلاینت در شبکه، یک درخواست DNS به سرور DNS ارسال میکنه. این درخواست برای رسیدن به سرور، از دو سوییچ مختلف عبور میکنه. حالا فرض کنید ما روی هر دوی این سوییچها یک سنسور Splunk Stream قرار دادیم که ترافیک رو مانیتور میکنه. چه اتفاقی میافته؟ هر دو سنسور، بستهی مربوط به اون درخواست DNS رو میبینن و هر کدوم به طور مستقل، یک لاگ برای همون درخواست واحد ایجاد میکنن. در نتیجه، در Splunk دو رویداد برای یک اتفاق واقعی ثبت میشه. این موضوع نه تنها هزینهی لایسنس Splunk شما رو به خاطر دادههای تکراری بالا میبره، بلکه باعث میشه تحلیلگران شما زمان ارزشمندشون رو صرف بررسی هشدارهای دروغین کنن و دچار ‘خستگی از هشدار’ یا همون ‘Alert Fatigue’ بشن. این وضعیت تحلیل و شمارش رویدادها رو به شدت دچار مشکل میکنه.
خوشبختانه راهحل این مشکل نسبتاً سادهست. ما میتونیم با فیلتر کردن هوشمندانهی ترافیک در سطح سنسور Splunk Stream، از این تکرار جلوگیری کنیم. برای مثال، میتونیم یکی از سنسورها رو طوری تنظیم کنیم که ترافیک DNS که به سمت IP سرور DNS مشخصی میره رو نادیده بگیره. با این کار، فقط یک سنسور مسئول تولید لاگ برای اون ترافیک خاص خواهد بود.
این چالش به ما نشون میده که استخراج لاگ از شبکه چقدر میتونه قدرتمند باشه، اما نیاز به طراحی دقیق داره. حالا بیایید این دو رویکرد اصلی رو در کنار هم قرار بدیم و یک مقایسهی نهایی انجام بدیم.
5.0 جدول مقایسه: Splunk Forwarder در برابر Splunk Stream
باید همین اول بگم که هیچکدوم از این دو روش ذاتاً بهتر از دیگری نیست. انتخاب بین Splunk Forwarder و Splunk Stream کاملاً به نیازها، محدودیتها، بودجه و معماری سازمان شما بستگی داره. هدف ما در این بخش اینه که یک چارچوب مشخص برای تصمیمگیری بهتر در اختیار شما قرار بدیم.
5.1 مزایا و معایب جمعآوری سنتی (Splunk Forwarder):
مزایا:
درک آسان: مفهومش خیلی ساده و سرراسته. یک ایجنت روی سرور نصب میشه و لاگها رو ارسال میکنه.
راهاندازی مفهومی ساده: برای شروع کار، پیچیدگی خاصی نداره.
عدم نیاز به دسترسی به زیرساخت شبکه: شما نیازی به درگیر شدن با تیم شبکه برای گرفتن Port Mirror یا TAP ندارید که این خودش یک مزیت بزرگ سیاسی در سازمانهاست.
معایب:
نیاز به مدیریت تعداد زیادی Forwarder: در سازمانهای بزرگ، مدیریت و بهروزرسانی هزاران ایجنت میتونه به یک چالش تبدیل بشه.
کوری نسبت به سیستمهای ناشناخته (Shadow IT): این روش فقط از سیستمهایی لاگ جمع میکنه که شما از وجودشون باخبرید و روشون ایجنت نصب کردید.
نیاز به تغییرات احتمالی در تنظیمات سرویسها: گاهی اوقات برای اینکه یک سرویس (مثلاً DNS) لاگ تولید کنه، باید تنظیماتش رو تغییر بدید.
فرمتهای لاگ ناهماهنگ: هر اپلیکیشن و سرویس، لاگ رو با فرمت و فیلدهای خاص خودش تولید میکنه که این موضوع در ادامه باعث دردسر میشه.
5.2 مزایا و معایب استخراج از شبکه (Splunk Stream):
مزایا:
تولید لاگ برای سیستمهایی که از وجودشان بیخبریم: این بزرگترین مزیتشه. هر دستگاهی که به شبکه متصل بشه، ترافیکش دیده و لاگش ثبت میشه.
ایجاد لاگهای متعدد از یک منبع واحد: یک سنسور میتونه برای دهها پروتکل مختلف لاگ تولید کنه.
فرمت لاگ کاملاً یکپارچه و استاندارد: تمام لاگهای تولید شده توسط Stream، از یک ساختار استاندارد و هماهنگ پیروی میکنن.
عدم نیاز به تغییر در سرویسهای موجود: بدون دست زدن به سرورهای حساس، ازشون لاگ میگیرید.
معایب:
نیاز به دید کامل در شبکه: گرفتن مجوز و امکانات فنی برای Port Mirroring گاهی یک نبرد سیاسی و فنی تمامعیاره.
نیاز به سرورهای اضافی: این سنسورها برای پردازش حجم بالای ترافیک، به منابع سختافزاری قابل توجهی نیاز دارن.
پیچیدگیهای طراحی: همونطور که دیدیم، جلوگیری از تکرار لاگ و ایجاد گلوگاه (bottleneck) در شبکه، نیاز به طراحی دقیق داره.
در نهایت، بسیاری از سازمانهای بالغ به این نتیجه میرسن که بهترین راهحل، استفاده از ترکیبی هوشمند از هر دو روشه. اما اگر به هر دلیلی هیچکدوم از این دو روش ممکن نبود، آیا راه دیگهای هم وجود داره؟
6.0 راههای دیگر: وقتی دسترسی محدود است
گاهی اوقات شرایطی پیش میاد که نه اجازهی نصب Forwarder روی سرورها رو داریم و نه امکان گرفتن ترافیک شبکه برای Splunk Stream. در این مواقع، باید خلاق باشیم و از راههای جایگزین یا به قول معروف “پلن C” استفاده کنیم. خوشبختانه هنوز گزینههایی روی میز هست.
6.1 استفاده از فایروالهای نسل جدید (Next-Generation Firewalls):
بسیاری از فایروالهای مدرن، قابلیتهای پیشرفتهای برای تحلیل ترافیک دارن و میتونن لاگهای مربوط به سرویسهای مختلف مثل DNS یا HTTP رو تولید کنن. خبر خوب اینه که این لاگها رو میتونیم مستقیماً با استفاده از Splunk Add-on مربوط به اون فایروال، به Splunk ارسال کنیم. اما باید صادق باشیم؛ این روش رو بهتره به عنوان یک “تلاش آخرین لحظه” در نظر بگیریم. چرا؟ چون کیفیت، جزئیات و تعداد فیلدهای این لاگها معمولاً به خوبی روشهای تخصصی مثل Splunk Stream نیست و ممکنه اطلاعات کلیدی رو از دست بدیم.
6.2 تولید لاگ در سطح Endpoint:
این روش یک جایگزین بسیار قدرتمند برای مانیتورینگ شبکه محسوب میشه، به خصوص در دنیای امروز که با محیطهای ابری و کارمندان دورکار سر و کار داریم. در این رویکرد، نرمافزارهایی مستقیماً روی کلاینتها و سرورها (Endpoints) نصب میشن تا ترافیک شبکهی همون سیستم رو تحلیل و لاگهای مربوطه رو تولید کنن.
در اکوسیستم Splunk، چند راه برای این کار وجود داره:
میتونیم از Splunk Stream for Endpoints استفاده کنیم.
میتونیم لاگهای ابزار قدرتمندی مثل Sysmon رو با Splunk Universal Forwarder جمعآوری کنیم.
میتونیم لاگهای تولید شده توسط ابزارهای EDR رو به Splunk ارسال کنیم.
مزیت بزرگ این روش، مقیاسپذیری بالای اونه. مهمتر از اون، این روش میتونه لاگهای شبکه رو با اطلاعات فوقالعاده ارزشمندی مثل نام کاربری که اون ترافیک رو ایجاد کرده و نام پروسهای که مسئول اون اتصال شبکه بوده، غنیسازی کنه. این سطح از جزئیات در تحلیلهای امنیتی بینظیره.
حالا فرض کنیم ما به هر روشی که بود، موفق شدیم لاگهای مورد نظرمون رو جمع کنیم. اما اینجا با یک مشکل بزرگ دیگه روبرو میشیم: هرجومرج و ناهماهنگی دادهها.
7.0 مشکل بزرگ: ناهماهنگی فیلدها و هرجومرج دادهها
جمعآوری لاگ تنها نیمی از راهه. اگر دادههایی که از منابع مختلف جمع کردیم، با هم “حرف نزنن” و هر کدوم ساز خودشون رو بزنن، تمام تلاشهای ما تقریباً بیفایده خواهد بود. استانداردسازی و هماهنگی دادهها اهمیت فوقالعادهای داره.
بیایید یک سناریوی واقعی در دنیای Splunk رو تصور کنیم. فرض کنید ما لاگهای DNS رو از دو منبع مختلف جمعآوری میکنیم:
از یک سرور ویندوز، با استفاده از Splunk Universal Forwarder.
از ترافیک شبکه، با استفاده از Splunk Stream.
وقتی این دو نوع لاگ رو در Splunk کنار هم قرار میدیم، با یک تفاوت فاحش روبرو میشیم. در لاگ ویندوز، آدرس دامنهای که کاربر جستجو کرده، ممکنه در فیلدی به نام query قرار بگیره. اما در لاگ تولید شده توسط Splunk Stream، همون اطلاعات در فیلدی با نام dns_query ذخیره میشه.
شاید بپرسید: “خب که چی؟ این تفاوت کوچیک چه اهمیتی داره؟” اهمیتش زمانی مشخص میشه که شما بخواید یک داشبورد برای مانیتورینگ تمام درخواستهای DNS در سازمان بسازید. اگر فیلدها یکسان نباشن، شما باید برای هر منبع داده، یک پنل جداگانه در داشبورد بسازید، جستجوهای جداگانه بنویسید و هشدارهای جداگانه تعریف کنید. این کار در مقیاس بزرگ نه تنها غیرعملیه، بلکه یک کابوس به تمام معناست.
پس سؤال اصلی اینه: “Splunk چگونه این هرجومرج و بینظمی رو به یک ساختار منظم و قابل استفاده تبدیل میکنه؟”
8.0 راهحل Splunk: قدرت نرمالسازی داده و مدل اطلاعات مشترک (CIM)
اینجا دقیقاً نقطهایه که قدرت واقعی پلتفرم Splunk خودش رو نشون میده. Splunk فقط یک انبار بزرگ برای جمعآوری لاگ نیست؛ بلکه یک کارخانهی هوشمند پردازش دادهست که مواد خام و ناهماهنگ (یعنی لاگهای مختلف) رو تحویل میگیره و اونها رو به یک محصول نهایی استاندارد، یکپارچه و قابل استفاده تبدیل میکنه.
این فرآیند هوشمند درست در لحظهای که دادهها وارد Splunk میشن اتفاق میافته. در دنیای اسپلانک، ما به این کار میگیم نرمالسازی داده در زمان ورود یا (Normalization at Ingest Time). اسپلانک به ما این امکان رو میده که با استفاده از فایلهای تنظیماتی مثل props.conf و transforms.conf، به محض ورود دادهها، تغییرات لازم رو روی اونها اعمال کنیم. مثلاً میتونیم نام فیلدها رو تغییر بدیم (مثلاً query رو به dns_query تغییر نام بدیم)، فیلدهای جدیدی از دل دادههای خام استخراج کنیم و مقادیر رو یکسانسازی کنیم.
اما هدف نهایی این فرآیند چیه؟ هدف، رسیدن به Splunk Common Information Model (CIM) هست. CIM رو به عنوان یک “زبان مشترک” یا یک “دیکشنری استاندارد” برای تمام دادههای امنیتی در نظر بگیرید. CIM مجموعهای از مدلهای داده از پیش تعریفشده (مثل احراز هویت، ترافیک شبکه، بدافزار و…) با فیلدهای استاندارد رو ارائه میده.
بیایید با یک مثال عملی این فرآیند رو جمعبندی کنیم. فرض کنید یک سازمان هم از فایروال Palo Alto و هم از Fortinet استفاده میکنه. هر دوی این فایروالها لاگ ترافیک وب تولید میکنن، اما با نام فیلدها و ساختارهای کاملاً متفاوت. Splunk با استفاده از Add-onهای تخصصی که برای این محصولات وجود داره، به طور خودکار هر دو نوع لاگ رو به استاندارد Web در CIM نگاشت میده. نتیجه چیست؟ تحلیلگر امنیتی شما میتونه با یک جستجوی واحد و ساده مثل (datamodel=Web)، تمام ترافیک وب سازمان رو جستجو و تحلیل کنه، بدون اینکه اصلاً نگران باشه که منبع اصلی لاگ Palo Alto بوده یا Fortinet.
این هماهنگی و استانداردسازی، اساس و پایهی کار ابزارهای پیشرفتهتری مثل Splunk Enterprise Security (ES) رو تشکیل میده و به ما اجازه میده تحلیلهای پیچیده رو در مقیاس بزرگ انجام بدیم.
9.0 جمعبندی و توصیههای نهایی
بسیار خب، در این اپیزود یک سفر جامع به دنیای استراتژیهای جمعآوری لاگ داشتیم. بیایید خیلی سریع موارد اصلی رو با هم مرور کنیم:
Splunk Universal Forwarder:
روش سنتی، قابل اعتماد و مبتنی بر ایجنت که کنترل دقیقی روی منبع لاگ به ما میده.
Splunk Stream:
روش مدرن و هوشمند برای استخراج لاگ از ترافیک شبکه که دیدی جامع و فوری، حتی از سیستمهای ناشناخته، فراهم میکنه.
روشهای جایگزین: استفاده از لاگهای فایروالهای نسل جدید به عنوان یک راه حل موقت، و تولید لاگ در سطح Endpoint به عنوان یک جایگزین قدرتمند برای محیطهای مدرن.
توصیهی نهایی ما اینه که بهترین رویکرد، معمولاً استفاده از Forwarder، Stream یا ترکیبی هوشمند از هر دو است. اگر از هر دو روش استفاده میکنید، حتماً مراقب مشکل لاگهای تکراری باشید.
و در آخر، یک بار دیگه تأکید میکنم که جمعآوری داده تنها قدم اوله. کلید موفقیت واقعی در استفاده از یک SIEM قدرتمند مثل Splunk، در نرمالسازی دادهها و پایبندی به یک استاندارد مشترک مثل Splunk CIM نهفته است. این کار، تحلیلهای شما رو از مجموعهای از جستجوهای پراکنده به یک سیستم اطلاعاتی یکپارچه و هوشمند تبدیل میکنه.
ممنونم که تا پایان این اپیزود با ما همراه بودید. امیدوارم این مطالب براتون مفید بوده باشه. شما رو به شنیدن اپیزود بعدی دعوت میکنم. وقتتون بخیر.
پست های مرتبط
26 اردیبهشت 1405
26 اردیبهشت 1405
26 اردیبهشت 1405
دیدگاهتان را بنویسید