امیرحسین تنگسیری نژاد
مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

آموزش نصب و پیکربندی Suricata در حالت IPS

ابزار Suricata چیست؟ دراصل Suricata یکی از ابزارهای محبوب و رایگان و متن باز (Open Source) حوزه امنیت میباشد که به در حالت های متعددی از جمله NSM/IPS/IDS توانایی قرار گیری و ایفای نقش را دارد. در این مقاله قصد داریم به نصب و راه اندازی Suricata بر روی یک سرور لینوکس Ubuntu بپردازیم و Suricata را در حالت IPS به جهت شناسایی و جلوگیری از حملات و رخداد های امنیتی مورد استفاده قرار دهیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

شروع نصب Suricata بر روی Ubuntu

توجه داشته باشید که ابتدا ما به سراغ نصب و راه اندازی کردن خوده Suricata بر روی سرور Ubuntu میرویم

مرحله اول - بروزرسانی مخازن (Repository)

قبل از شروع نصب Suricata اولین مرحله از کار ما بروزرسانی مخازن (Repository) سیستم Ubuntu میباشد که بر اینکار از دستور زیر استفاده میکنیم:

sudo apt update

آموزش نصب و پیکربندی Suricata در حالت IPS

مرحله دوم - اضافه کردن PPA

در مرحله دوم از کارمان به اضافه کردن PPA متعلق به OISF میپردازیم که بتوانیم آخر نسخه و بهینه ترین نسخه مربوط به Suricata را دریافت کنیم

sudo add-apt-repository ppa:oisf/suricata-stable

آموزش نصب و پیکربندی Suricata در حالت IPS

مرحله سوم - بروزرسانی دوباره مخازن (Repository)

در این مرحله پس از اضافه شدن PPA دوباره مخازن خود را بروزرسانی میکنیم

sudo apt update -y

نکته: سوییچ -y بدین منظور است که اگر سوالی از ما بپرسد پاسخ مثبت بدهد.

مرحله چهارم - نصب Suricata از طریق مخازن (Repository)

در این مرحله به راحتی حالا میتوانیم Suricata را بر روی سیستم Ubuntu با یک دستور نصب و راه اندازی کنیم. برای اینکار به شکل زیر عمل میکنیم

sudo apt install suricata -y

آموزش نصب و پیکربندی Suricata در حالت IPS

مرحله پنجم - اطمینان از نصب Suricata از طریق مخازن (Suricata)

برای اینکه مطمئن شوید Suricata به صورت کامل بر روی سیستم شما نصب و راه اندازی شده میتوانید از دستور زیر استفاده کنید و اگر خروجی مانند تصویر زیر داشت میتوانید مطمئن شوید که Suricata به صورت کامل برای شما نصب شده است.

sudo systemctl status suricata

آموزش نصب و پیکربندی Suricata در حالت IPSنکته: دستور بالا به منظور بررسی وضعیت فعلی Suricata مورد استفاده قرار گرفته است و در تصویر میبینیم که وضعیت سرویس مربوط به Suricata در حالت فعال (Active) میباشد.

شروع پیکربندی و کار با Suricata 

اگر با بستر Snort که مشابه Suricata میباشد آشنا باشید میدانید که این بستر در ابتدا در هیچ حالتی از IDS و یا IPS قرار ندارد و صرفا یک بستر برای Capture کردن داده ها میباشد و نیاز به پیکربندی خاص دارد اما Suricata باتوجه به اینکه شبیه به Snort است اما مانند آن نیست و برعکس‌ Snort در حالت اول پس از نصب و راه اندازی بدون نیاز به پیکربندی خاصی در حالت IDS قرار دارد و این موضوع در Suricata یک مبحث پیش فرض میباشد.

این موضوع که Suricata در حالت IDS باشد عیبی ندارد منتها این حالت صرفا فقط توانایی ایجاد هشدارهارا برای ما دارد و جلوی تهدیدات را نمیتواند بگیرد و ما قصد داریم با تغییر این حالت جلوی تهدیدات را بگیریم.
بستر Suricata پس از نصب و راه اندازی یک فایل Suricata.yaml ایجاد میکند که این فایل دراصل فایل پیکربندی مربوط به Suricata است که در مسیر زیر قرار گرفته است:

/etc/suricata/Suricata.yaml

معرفی و فعال سازی Community-ID Flow در Suricata

توجه داشته باشید که در Suricata یک بخش تحت عنوان Command ID Flow وجود دارد که در هنگام ترکیب Suricata با دیگر ابزارهای همچون Zeek و ElasticSearch فعال سازی میشود که رکورد های تولید شده توسط به ابزارهای این چنینی مرتبط شوند.
برای فعال سازی این ویژگی فایل Suricata.yaml را بازمیکنیم و بخش community-id را از false به true تغییر میدهیم مانند تصویر زیر:

آموزش نصب و پیکربندی Suricata در حالت IPS

مشخص کردن رابط شبکه (Network Interface) برای Suricata

توجه کنید که Suricata به صورت پیش فرض تمامی از تمامی رابط های که بر روی سیستم هستند داده هارا دریافت و تحلیل میکند اما برای اینکه بخواهیم از رابط شبکه ای مشخصی داده های شبکه را دریافت میکنیم به شکل زیر عمل کنیم و از دستور زیر ابتدا برای پیدا کردن یک‌ رابط شبکه با یک مسیر پیش‌فرض یا همان Default Route پیدا کنیم‌.

آموزش نصب و پیکربندی Suricata در حالت IPS

نکته: Default Route مسیری میباشد که تمامی بسته ها درصورتی که مسیرآنها در جدول مسیریابی نباشد به آن مسیر ارسال میشود.

نکته: در دستور بالا از سوییچ -p برای نمایش خروجی به شکل انسان فهم و از سوییچ -j برای نمایش در فرمت Json استفاده کرده ایم

همانطور که در تصویر بالا دیدید در مقابل dev رابط شبکه مارا مشخص کرده است که این نام میتواند متفاوت باشد براساس کارت شبکه برای مثال برای رابط های که به اصطلاح Tunnel میباشند عبارت tun0 نمایش داده میشود و رابطه های شبکه های وایرلس و بیسیم نیز معمولا Wlan0 و...
پس از پیدا کردن نام کارت شبکه مد نظرمان وارد فایل Suricata.yaml میشویم و در قسمت af-packet نام کارت شبکه‌مان را قرار میدهیم

آموزش نصب و پیکربندی Suricata در حالت IPS

معرفی و پیکربندی ویژگی Live Rule Reloadibg در Suricata

تا به اینجا پیکربندی و راه اندازی Suricata را باهم انجام دادیم و به شکل کامل آن را راه اندازی کردیم اما این همه ماجرا نیست.
توجه کنید که در Suricata یک ویژگی جالب تحت عنوان Live Rule Reloading وجود دارد که میتواند به راحتی بدون نیاز به غیرفعال و فعال کردن Suricata قوانین و Signature های جدید را در کار خود اضافه کند و در تحلیل خود بکارگیری کند.
به بیان ساده تر زمانی که Suricata درحال کار و شناسایی حملات میباشد ما میتوانیم قوانين و Signature هایمان را اضافه کنیم و بدون نیاز به غیرفعال کردن و فعال کردن Suricata جهت اعمال شدن قوانین این قوانین را اعمال کنیم و Suricata از آنها استفاده کند.

برای پیکربندی این ویژگی وارد فایل Suricata.yaml میشویم و دستور زیر را در انتهای فایل پیکربندی Suricata قرار میدهیم

detect-engine:
  - rule-reload: true

آموزش نصب و پیکربندی Suricata در حالت IPSبه واسطه این دستورالعمل بالا دیگر در هنگام بروزرسانی و یا اضافه کردن قوانین جدید احتیاجی به غیرفعال سازی و فعال سازی Suricata جهت اعمال شدن قوانین وجود ندارد.
اکنون بعد از موارد بالا Process مربوط به Suricata را با استفاده از دستور kill با استفاده از usr2 جهت اعمال تمامی پیکربندی میبندیم:

sudo kill -usr2 (Suricata PID)

بروزرسانی مخزن Ruleset و Signature های Suricata

حالا که ویژگی Live Rule Reloading را فعال کردیم و همه چیز آماده است تا Rule های خودمان را بروزرسانی و اضافه نکنیم Suricata کاری از پیش نمیگیرد از همین بابت در این مرحله هر زمان که بخواهید Suricata را اجرا و از آن استفاده کنید پیغامی مانند تصویر زیر دریافت میکنید و خطا به شما میدهد.

آموزش نصب و پیکربندی Suricata در حالت IPS

نکته: Suricata دارای یک مجموعه قوانین یا اصطلاح Ruleset میباشد که رایج ترین Rule ها و پروتکل هارا به واسطه آن شناسایی میکند و این قوانین نیز در مسیر قرار گرفته اند:

/etc/suricata/rules

برای رفع این مشکل بالا و اروری که به ما میدهد باید مجموعه قوانینی را به Suricata بدهیم که از همین بابت در Suricata یک ویژگی و دستور وجود دارد که به راحتی می‌تواند قوانین را از ارائه دهنده های شخص ثالث دریافت کند.
دستور زیرا را جهت دریافت مجموعه قوانین اجرا سازی میکنیم:

آموزش نصب و پیکربندی Suricata در حالت IPS

دستور بالا و خروجی بالا تعدادی Rule را از طریق اتصال به Website دانلود و در مسیر زیر قرار میدهد:

/var/lib/suricata/rules/

به صورت کلی خروجی دستور بالا توضیحات زیر را برای ما دارد:

  • تعداد کل Ruleaet ما برابر با 31737 میباشد
  • تعداد کل Rule های فعال شده برابر با 24355 میباشد
  • تعداد Rule های اضافه شده نیز برابر با 31737 و تعداد حذف شده نیز 0 میباشد.

دیدن تمامی ارائه دهنده های Ruleset در Suricata

برای دیدن لیست تمامی ارائه دهندگان Ruleset در Suricata به راحتی میتوانید از دستور زیر استفاده کنید:

آموزش نصب و پیکربندی Suricata در حالت IPS

قرار دادن Suricata در حالت IPS

برای قرار دادن 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 این است که به راحتی میتوانیم پیکربندی های انجام شده و کارای Suricata را تست و بررسی کنیم و اگر خطا و مشکلی نباشد به ما بگوید. برای پیاده سازی این موضوع از دستور زیر استفاده میکنیم

sudo suricata -T -c /etc/suricata/suricata.yaml -v

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

آموزش نصب و پیکربندی Suricata در حالت IPS


امیرحسین تنگسیری نژاد
امیرحسین تنگسیری نژاد

مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

متخصص امنیت اطلاعات و کارشناس شکار تهدیدات بانک ملی ایران ، دارای مدارک مختلف از Splunk و AWS و Fortinet و Huawei حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider می‌باشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند PenTest و SoC فعالیت داشته و دارم. سابقه همکاری با بعضی سازمان های در قالب پروژه و... را داشته ام الان به عنوان تحلیلگر امنیت سایبری در زیرساخت بانک ملی مشغول به کار هستم. لینکداین: https://www.linkedin.com/in/amirhoseintangsirinezhad/

نظرات