جستجو و تهیه گزارشات در اسپلانک

نرم افزار Splunk ES بعنوان یک راهکار SIEM و با فراهم کردن داشبوردهای جامع برای مدیران، امکان جست و جو و تهیه گزارشات جامع را امکان پذیر ساخته است. در این مقاله با نحوه جست و جو در این نرم افزار و قابلیت های آن آشنا خواهیم شد.

روش های ارسال لاگ به اسپلانک

اسپلانک

در پیاده سازی های رایج، مدیران میتوانند به روش های زیر لاگ ها خود را به سمت اسپلانک ارسال نمایند:

دریافت لاگ از طریق Universal Forwarder: در این روش بر روی سروری که میخواهیم لاگ هایش را بر روی اسپلانک دریافت کنیم Universal Forwarder را نصب و کانفیگ میکنیم  تا لاگ ها به در صورت وجود فورواردر های دیگر در نهایت به Indexer فرستاده شوند.

دریافت لاگ از طریق پروتکل های مانیتورینگ: در این روش لاگ ها از طریق دستگاه های شبکه همچون روتر، سوییچ، فایروال و غیره از طریق پروتکل هایی همچونWMI و Syslog گرفته میشود.

دریافت لاگ از طریق فایل های بر روی دیسک: در این روش میتوان لاگ فایلی که از دستگاه ها و سرویس های تحت شبکه گرفته شده را مستقیم بر روی سرور اسپلانک آپلود کرد.

لایسنس اسپلانک

در قسمت  New Search میتوان عبارت مورد نظر برای جست وجو را نوشت و با دکمه ذره بین عمل جست و جو را انجام داد. در قسمت پایین صفحه نیز نتایج جستوجو نمایش داده میشود. برای جست وجو میتوان بازه زمانی مورد نظر برای جست و جو را از قسمت بالا و راست صفحه تعیین نمود. چنانچه بر روی آن کلیک کنیم به  صورت پیشفرض Time All انتخاب شده است که میتوان بازه زمانی را به صورت پیشرفته تعیین نمود.

با استفاده از اپ Search And Reporting در اسپلانک میتوان لاگ ها را به صورت لحظه ای مانیتور کرد. همچنین با استفاده از زبان Search Processing Language (SPL)  میتوان فیلتر هایی بر اساس نوع دیتا ، سورس ، دستینیشن ، ایندکس و موارد دیگر برای اسپلانک در نظر گرفت. به 2 صورت Real-Time Search و Relative Search میتوان جستجو را در اسپلانک انجام داد. که در قسمت Real-Time Search میتوان مشخص کرد که به صورت لحظه ای در چه بازه زمانی هایی سرور اسپلانک لاگ ها را به روز رسانی کند که به صورت پیش فرض بر روی بازه 30 ثانیه میباشد. و در قسمت Relative Search مشخص میکنیم که لاگ ها در چه بازه زمانی نمایش داده شوند که به صورت پیش فرض لاگ های یک روز گذشته انتخاب شده.در این داشبورد در قسمت Data Summary میتوان مشخص کرد که لاگ های چه هاست هایی بر اساس مبدا و مقصد نمایش داده شوند.

زبان برنامه نویسی اسپلانک

زبان اسکریپت نویسی و جست‌و‌جو در اسپلانک (Search Processing Language) SPL میباشد که با بیش از 140 دستور، سینتکس‌های این زبان براساس Unix Pipeline و SQL است. کاربرد SPL در Splunk شامل: جست و جو، فیلتر کردن، اصلاح، تغییر، اضافه کردن ، حذف داده‌ها و ساخت جداول می‌باشد. به عنوان مثال، زمانی که نتیجه‌ای برای یک جست‌ و جو دریافت می‌کنید، شاید با توجه به نیاز، احتیاج به فیلتر برخی از اصطلاحات خاص داشته باشید یا بخواید تغییراتی در نتایج بدید. برای انجام چنین کاری، SPL از نوعی App به نام Search and Reporting استفاده می‌کند. Search and Reporting App قابلیت‌های دیگری را علاوه بر جست و جو با استفاده از زبان SPL مانند Report، Alert، Dashboard و … دراختیار ما قرار می‌دهد. در قسمت ورودی سرچ میتوان با زبان SPL فیلتر های مورد نظر برای جستجو را در نظر گرفت. برای مثال با دستور index=Cisco در این قسمت تمامی ایندکس لاگ هایی که به عنوان Cisco در نظر گرفته شده نمایش داده میشود. در این حالت اسکریپت نویسی فیلد ها و استرینگ وجود دارد که بعضی فید ها مانند index به صوت پیش فرض در اسپلانک تعریف شده اند. این زبان حساس به حروف کوچک و بزرگ بوده.همچنین میتوان بر اساس استرینگ های دیگر همچون کلمات کلیدی جستجو ها را انجام داد. در مثال زیر میتوان بین تجهیزات F5 بر اساس نوع پورت TCP و UDP ، ای پی های رنج 10 سرچ را انجام داد:

index=F5 10.x.x.x And (UDP or TCP)

میتوان روش جست وجو را از نوع Verbose, Fast و یا Smart تعیین نمود.

روش Fast همانطور که از نام آن مشخص است، یک روش جستوجوی سریع میباشد معمولا سریعترین روش است چون فقط از فیلدهای پیش فرض استفاده مینماید. روش Verbose زمان طولانی را برای جست و جو نیاز دارد زیرا همه فیلدهایی که میتواند را پیدا میکند. روش Smart روش پیشفرض است و میتواند بسته به فعال یا غیرفعال کردن فیلد، شبیه دو روش ذکر شده Verbose و Smart در نظر گرفته شود. بعد از جست و جو نتایج در پایین صفحه نمایش داده میشود. در برگه یEvents   تعداد رخداد هایی که با این جست و جو اتفاق افتاده است نشان داده میشود .همچنین در قسمت وسط صفحه یک نمودار نمایش داده میشود که بیانگر تعداد دفعاتی است که رخداد در فاصله زمانی که انتخاب کردیم اتفاق افتاده است. چنانچه بر روی هر یک از مستطیل های سبز رنگ کلیک کنیم میتوانیم جزئیات بیشتر در فاصله زمانی کوتاه تر را مشاهده کنیم. میتوان گزارشهایی را برای فیلد مورد نظر گزارش نمود. برای مثال دستور fail* password| top port را در نظر بگیرید دستور Top به صورت پیش فرض 10 مقدار با بیشترین تکرار را به ترتیب نزولی برای فیلد های مشخص برمیگرداند. بنابراین خروجی این دستور با port 10 top| password* fail برابر است. در واقع این دستور در جاهایی که پسورد اشتباه وارد شده است، 10 پورت با بالاترین تکرار را برمیگرداند. جستوجو در Splunk بر مبنای لغت میباشد. یعنی اگر لغت fail را جست و جو کنیم و در لاگ ها failure داشته باشیم، در خروجی نشان داده نمیشود. به همین منظور الزم است عبارت fail* را جستوجو کنیم. علاوه براین، این جست و جو به حروف بزرگ و کوچک حساس میباشد. برای عبارت ترکیبی جست و جو نیز میتوان از OR و AND استفاده نمود. در اسپلانک میتوان بر روی نتایج به دست آمده عملیاتی همچون میانگین گرفتن و جمع و … انجام داده و نتایج را بر روی جدول نشان داد. برای مثال در دستور زیر فیلتر هایی در نظر گرفته شده که بر اساس آن ها جدولی با فیلد های ای پی و نتورک از نتایج به دست آمده نشان داده میشود.

sourcetype=access_* | dedup clientip | eval network=if(cidrmatch(“192.0.0.0/16”, clientip), “local”, “other”) | table clientip, network

این امکان در اسپلانک وجود دارد که بتوان اسکریپت های سرچ کاربردی را در این داشبرد ذخیره و شخصی سازی کرد تا به سهولت نتایج جستجو در دسترس قرار گیرند. امکان استفاده از ماکرو و تگ از دیگر امکانات سرچ اسپلانک میباشد که با عبارات و تگ های تعریف شده میتوان به فرایند جستجو سهولت بخشید و فرایند ها ها را بر اساس رویداد های تولید شده خودکارسازی کرد.همچنین در اسپلانک میتوان فایل های اکسل CSV را با داده های اسپلانک ترکیب کرد و با زبان SPL به نتایج فیلتر شده در قالب های مختلف رسید. در اسپلانک این قابلیت وجود دارد که بتوان بر اساس SPL های تعریف شده گزارش هایی تهیه کرد. که در داشبورت ریپورت میتوان گزارش را در فرمت های مختلف همچون PDF , CSV و … دانلود کرد. همچنین این امکان وجود دارد که در بازه های زمانی گزارش ها به ایمیل ارسال شوند یا اسکریپتی در صورت بروز یکسری هشدارها اجرا شود.