ابزار Suricata چیست؟ دراصل Suricata یکی از ابزارهای محبوب و رایگان و متن باز (Open Source) حوزه امنیت میباشد که به در حالت های متعددی از جمله NSM/IPS/IDS توانایی قرار گیری و ایفای نقش را دارد. در این مقاله قصد داریم به نصب و راه اندازی Suricata بر روی یک سرور لینوکس Ubuntu بپردازیم و Suricata را در حالت IPS به جهت شناسایی و جلوگیری از حملات و رخداد های امنیتی مورد استفاده قرار دهیم.
توجه داشته باشید که ابتدا ما به سراغ نصب و راه اندازی کردن خوده Suricata بر روی سرور Ubuntu میرویم
قبل از شروع نصب Suricata اولین مرحله از کار ما بروزرسانی مخازن (Repository) سیستم Ubuntu میباشد که بر اینکار از دستور زیر استفاده میکنیم:
sudo apt update
در مرحله دوم از کارمان به اضافه کردن PPA متعلق به OISF میپردازیم که بتوانیم آخر نسخه و بهینه ترین نسخه مربوط به Suricata را دریافت کنیم
sudo add-apt-repository ppa:oisf/suricata-stable
در این مرحله پس از اضافه شدن PPA دوباره مخازن خود را بروزرسانی میکنیم
sudo apt update -y
نکته: سوییچ -y بدین منظور است که اگر سوالی از ما بپرسد پاسخ مثبت بدهد.
در این مرحله به راحتی حالا میتوانیم Suricata را بر روی سیستم Ubuntu با یک دستور نصب و راه اندازی کنیم. برای اینکار به شکل زیر عمل میکنیم
sudo apt install suricata -y
برای اینکه مطمئن شوید Suricata به صورت کامل بر روی سیستم شما نصب و راه اندازی شده میتوانید از دستور زیر استفاده کنید و اگر خروجی مانند تصویر زیر داشت میتوانید مطمئن شوید که Suricata به صورت کامل برای شما نصب شده است.
sudo systemctl status suricata
نکته: دستور بالا به منظور بررسی وضعیت فعلی Suricata مورد استفاده قرار گرفته است و در تصویر میبینیم که وضعیت سرویس مربوط به Suricata در حالت فعال (Active) میباشد.
اگر با بستر Snort که مشابه Suricata میباشد آشنا باشید میدانید که این بستر در ابتدا در هیچ حالتی از IDS و یا IPS قرار ندارد و صرفا یک بستر برای Capture کردن داده ها میباشد و نیاز به پیکربندی خاص دارد اما Suricata باتوجه به اینکه شبیه به Snort است اما مانند آن نیست و برعکس Snort در حالت اول پس از نصب و راه اندازی بدون نیاز به پیکربندی خاصی در حالت IDS قرار دارد و این موضوع در Suricata یک مبحث پیش فرض میباشد.
این موضوع که Suricata در حالت IDS باشد عیبی ندارد منتها این حالت صرفا فقط توانایی ایجاد هشدارهارا برای ما دارد و جلوی تهدیدات را نمیتواند بگیرد و ما قصد داریم با تغییر این حالت جلوی تهدیدات را بگیریم.
بستر Suricata پس از نصب و راه اندازی یک فایل Suricata.yaml ایجاد میکند که این فایل دراصل فایل پیکربندی مربوط به Suricata است که در مسیر زیر قرار گرفته است:
/etc/suricata/Suricata.yaml
توجه داشته باشید که در Suricata یک بخش تحت عنوان Command ID Flow وجود دارد که در هنگام ترکیب Suricata با دیگر ابزارهای همچون Zeek و ElasticSearch فعال سازی میشود که رکورد های تولید شده توسط به ابزارهای این چنینی مرتبط شوند.
برای فعال سازی این ویژگی فایل Suricata.yaml را بازمیکنیم و بخش community-id را از false به true تغییر میدهیم مانند تصویر زیر:
توجه کنید که Suricata به صورت پیش فرض تمامی از تمامی رابط های که بر روی سیستم هستند داده هارا دریافت و تحلیل میکند اما برای اینکه بخواهیم از رابط شبکه ای مشخصی داده های شبکه را دریافت میکنیم به شکل زیر عمل کنیم و از دستور زیر ابتدا برای پیدا کردن یک رابط شبکه با یک مسیر پیشفرض یا همان Default Route پیدا کنیم.
نکته: Default Route مسیری میباشد که تمامی بسته ها درصورتی که مسیرآنها در جدول مسیریابی نباشد به آن مسیر ارسال میشود.
نکته: در دستور بالا از سوییچ -p برای نمایش خروجی به شکل انسان فهم و از سوییچ -j برای نمایش در فرمت Json استفاده کرده ایم
همانطور که در تصویر بالا دیدید در مقابل dev رابط شبکه مارا مشخص کرده است که این نام میتواند متفاوت باشد براساس کارت شبکه برای مثال برای رابط های که به اصطلاح Tunnel میباشند عبارت tun0 نمایش داده میشود و رابطه های شبکه های وایرلس و بیسیم نیز معمولا Wlan0 و...
پس از پیدا کردن نام کارت شبکه مد نظرمان وارد فایل Suricata.yaml میشویم و در قسمت af-packet نام کارت شبکهمان را قرار میدهیم
تا به اینجا پیکربندی و راه اندازی Suricata را باهم انجام دادیم و به شکل کامل آن را راه اندازی کردیم اما این همه ماجرا نیست.
توجه کنید که در Suricata یک ویژگی جالب تحت عنوان Live Rule Reloading وجود دارد که میتواند به راحتی بدون نیاز به غیرفعال و فعال کردن Suricata قوانین و Signature های جدید را در کار خود اضافه کند و در تحلیل خود بکارگیری کند.
به بیان ساده تر زمانی که Suricata درحال کار و شناسایی حملات میباشد ما میتوانیم قوانين و Signature هایمان را اضافه کنیم و بدون نیاز به غیرفعال کردن و فعال کردن Suricata جهت اعمال شدن قوانین این قوانین را اعمال کنیم و Suricata از آنها استفاده کند.
بیشتر بخوانید: حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟
برای پیکربندی این ویژگی وارد فایل Suricata.yaml میشویم و دستور زیر را در انتهای فایل پیکربندی Suricata قرار میدهیم
detect-engine:
- rule-reload: true
به واسطه این دستورالعمل بالا دیگر در هنگام بروزرسانی و یا اضافه کردن قوانین جدید احتیاجی به غیرفعال سازی و فعال سازی Suricata جهت اعمال شدن قوانین وجود ندارد.
اکنون بعد از موارد بالا Process مربوط به Suricata را با استفاده از دستور kill با استفاده از usr2 جهت اعمال تمامی پیکربندی میبندیم:
sudo kill -usr2 (Suricata PID)
حالا که ویژگی Live Rule Reloading را فعال کردیم و همه چیز آماده است تا Rule های خودمان را بروزرسانی و اضافه نکنیم Suricata کاری از پیش نمیگیرد از همین بابت در این مرحله هر زمان که بخواهید Suricata را اجرا و از آن استفاده کنید پیغامی مانند تصویر زیر دریافت میکنید و خطا به شما میدهد.
نکته: Suricata دارای یک مجموعه قوانین یا اصطلاح Ruleset میباشد که رایج ترین Rule ها و پروتکل هارا به واسطه آن شناسایی میکند و این قوانین نیز در مسیر قرار گرفته اند:
/etc/suricata/rules
برای رفع این مشکل بالا و اروری که به ما میدهد باید مجموعه قوانینی را به Suricata بدهیم که از همین بابت در Suricata یک ویژگی و دستور وجود دارد که به راحتی میتواند قوانین را از ارائه دهنده های شخص ثالث دریافت کند.
دستور زیرا را جهت دریافت مجموعه قوانین اجرا سازی میکنیم:
دستور بالا و خروجی بالا تعدادی Rule را از طریق اتصال به Website دانلود و در مسیر زیر قرار میدهد:
/var/lib/suricata/rules/
به صورت کلی خروجی دستور بالا توضیحات زیر را برای ما دارد:
برای دیدن لیست تمامی ارائه دهندگان Ruleset در Suricata به راحتی میتوانید از دستور زیر استفاده کنید:
برای قرار دادن Suricata درحالت IPS شما باید ابتدا وارد مسیر زیر شوید و فایل زیر را با ویرایشگر دلخواهتان بازکنید ( در اینجا از nano استفاده شده است )
sudo nano /etc/default/suricata
بعد از بازکردن فایل کافیست که عبارت LISTENMODE=af-packet در حالت کامنت قرار دهید ( با گذاشتن یک # در پشت این عبارت) و عبارت LISTENMODE=nfqueue را در آن قرار بدهید تا که Suricata در حالت IPS برای شما قرار بگیرد.
# LISTENMODE=af-packet
LISTENMODE=nfqueue
بعد از این کار یک بار Suricata را راه اندازی مجدد میکنیم
پیکربندی فایروال سیستم برای Suricata
در مرحله آخر میرسیم به پیکربندی فایروال سیستمان برای Suricata که برای این موضوع نیست کافیست دستورات زیر را در مسیر زیر قرار دهیم
نکته: مسیر بالا برای IPv4 میباشد و برای پیکربندی Suricata برای IPv6 باید از مسیر زیر اقدام کنید و دستورات بالا در مسیر زیر قرار بدهید.
یکی از ویژگی جالب و پر استفاده در Suricata این است که به راحتی میتوانیم پیکربندی های انجام شده و کارای Suricata را تست و بررسی کنیم و اگر خطا و مشکلی نباشد به ما بگوید. برای پیاده سازی این موضوع از دستور زیر استفاده میکنیم
sudo suricata -T -c /etc/suricata/suricata.yaml -v
اگر خروجی دستور بالا مانند زیر بود یعنی پیکربندی کاملا صحیح اعمال شده است و مشکلی وجود ندارد.
مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو
متخصص امنیت اطلاعات و کارشناس شکار تهدیدات بانک ملی ایران ، دارای مدارک مختلف از Splunk و AWS و Fortinet و Huawei حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider میباشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند PenTest و SoC فعالیت داشته و دارم. سابقه همکاری با بعضی سازمان های در قالب پروژه و... را داشته ام الان به عنوان تحلیلگر امنیت سایبری در زیرساخت بانک ملی مشغول به کار هستم. لینکداین: https://www.linkedin.com/in/amirhoseintangsirinezhad/
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود