تکنولوژی

آموزش Snort : راهنمای کامل سیستم تشخیص نفوذ شبکه (NIDS) و ادغام با Splunk   

امتیاز کاربران

ستاره فعالستاره فعالستاره فعالستاره فعالستاره فعال
 

Snort  یک سیستم تشخیص و پیشگیری از نفوذ در شبکه (NIDS/NIPS) بصورت open source و قدرتمند است که نخستین بار توسط Martin Roesch توسعه یافت و از سال 2013 به مالکیت شرکت Cisco Systems درآمد. این ابزار به‌واسطه‌ی عملکرد دقیق، انعطاف‌پذیری بالا و پشتیبانی گسترده، به یکی از معیارهای اصلی در پیاده‌سازی سامانه‌های دفاعی مبتنی بر شبکه در سطح جهانی تبدیل شده است.

📌 بیشتر بدانید | چرا نام این ابزار "Snort" انتخاب شده است؟

🐽 نام Snort  برگرفته از فعل انگلیسی to snort  به معنای » بو کشیدن« سگ های شکاری یا صدایی که خوک‌ها از خودشان درمی آورند است. این انتخاب نام از سوی خالق ابزار، Martin Roesch، به‌صورت هوشمندانه انجام شده تا عملکرد ابزار را به شکلی استعاری نشان دهد.

همان‌طور که یک سگ نگهبان با بو کشیدن به دنبال شناسایی تهدید یا مزاحم است، Snort نیز ترافیک شبکه را تحلیل می‌کند تا نشانه‌های نفوذ یا رفتارهای مشکوک را شناسایی کند. به همین دلیل، نام «Snort» نه‌تنها منحصر‌به‌فرد و به‌یادماندنی است، بلکه با کارکرد فنی آن نیز هماهنگی مفهومی دارد.

ویژگی‌های کلیدی Snort :

✔️ تحلیل ترافیک شبکه بصورت real time برای شناسایی الگوهای مشکوک،  Signatureهای حمله و سوءاستفاده‌ها

✔️ پشتیبانی از قوانین قابل‌سفارشی‌سازی جهت تطبیق با تهدیدات خاص هر سازمان

✔️ توانایی عمل به‌صورت IPS (فعال) یا IDS (غیرفعال)

✔️ مجتمع‌شده در تجهیزات Cisco Firepower NGFW و قابل‌ادغام با سامانه‌های SIEM مانند Splunk

معماری Snort

Snort  مانند یک سیستم امنیتی چندمرحله‌ای عمل می‌کند. هر ماژول وظیفه‌ی خاصی دارد و اطلاعات را برای ماژول بعدی آماده می‌کند. بیایید با یک مثال ساده همراه با توضیح هر بخش جلو برویم:

فرض کنید شما در حال بررسی ترافیک ورودی به یک سرور وب هستید که احتمال می‌دهید مورد حمله قرار گرفته باشد. حالا ببینیم Snort در این مسیر چه کارهایی انجام می‌دهد:

 Packet Decoder

این ماژول اولین مرحله است. بسته‌های خامی که از کارت شبکه دریافت می‌شود، توسط این بخش باز می‌شوند تا Snort بتواند اطلاعاتی مانند IP مبدأ، مقصد، پورت‌ها و پروتکل‌ها را استخراج کند.

مثال:
اگر بسته‌ای شامل یک درخواست HTTP از آدرس IP مشکوک باشد، Packet Decoder  این اطلاعات را تفکیک می‌کند:
Source IP: 203.0.113.5 → Destination IP: 192.168.1.10, Protocol: TCP, Port: 80

 Preprocessors

قبل از بررسی محتوا، بسته‌ها باید به شکل استانداردی برسند.  Preprocessorها وظیفه دارند بسته‌هایی که تکه‌تکه شده‌اند (fragmented)، یا رمزنگاری/پنهان‌سازی شده‌اند را به حالتی تبدیل کنند که برای Snort قابل‌فهم باشند.

 Detection Engine

مغز اصلی Snort همینجاست. در این قسمت، محتویات بسته‌ها با قوانین تعریف‌شده مقایسه می‌شود تا رفتار یا الگوی مشکوکی شناسایی شود.

 Logging and Alerting System

اگر تشخیصی انجام شود، این سیستم گزارشی تولید می‌کند. می‌توان آن را به صورت فایل ذخیره کرد یا آلارم به اپراتور فرستاد.

مثال:
Snort
یک هشدار تولید می‌کند:
[**] [1:1000001:1] ATTACK – Attempt to read /etc/passwd [**]

 Output Plugins

برای اینکه هشدارها به سیستم‌های دیگر بروند، مثل syslog، Splunk یا یک پایگاه‌داده، از Output Plugin استفاده می‌کنیم.

مثال:
اگر سازمان از Splunk برای تحلیل مرکزی امنیتی استفاده کند، Snort از طریق Plugin مناسب، این هشدارها را به Splunk ارسال می‌کند تا گراف، هشدار صوتی یا تحلیل‌های عمیق‌تر روی آن‌ها انجام شود.
Snort
با یک فرآیند گام‌به‌گام و ماژولار، مثل یک خط تولید امنیتی عمل می‌کند. هر بسته‌ی شبکه از چند فیلتر عبور می‌کند تا در نهایت، حملات احتمالی کشف، گزارش و در صورت نیاز، متوقف شوند.

Snort در مقایسه با سایر NIDSها مانند Suricata و Zeek

ویژگی

Snort

Suricata

Zeek (Bro)

مدل تحلیل

Signature-based

Hybrid (Signature + Protocol + Anomaly)

Behavior-based

عملکرد

تک‌ریسمانی (Single-threaded) در نسخه 2، پشتیبانی از چندریسمانی در Snort 3

Multi-threaded

Scriptable و انعطاف‌پذیر

زبان تعریف Rule

Snort Rule Language

سازگار با Snort، توسعه‌یافته‌تر

Zeek Script

استفاده

شبکه‌های سازمانی، سخت‌افزارهای Cisco

شبکه‌های پرترافیک، SOCهای پیشرفته

تحلیل رفتاری عمیق در تحقیقات و forensic

 

📌  نکته مهم:  Snort بیشتر در محیط‌هایی مناسب است که نیاز به تطبیق سریع و دقیق با قوانین شناخته‌شده دارند، در حالی که Zeek بیشتر برای تحلیل رفتار و Suricata برای محیط‌های با بار بالا پیشنهاد می‌شود.

🧠 چرا هنوز هم Snort یکی از انتخاب‌های اصلی است؟

✔️ سادگی در راه‌اندازی و یادگیری: برای بسیاری از تیم‌های تازه‌وارد به دنیای IDS، Snort نقطه شروع مناسبی است.

✔️ انعطاف‌پذیری در تعریف قوانین: قوانین Snort با سینتکس ساده اما دقیق، امکان تعریف سیاست‌های امنیتی پیچیده را فراهم می‌کند.

✔️ ادغام با ابزارهای SIEM و سیستم‌های مدیریت لاگ مانند Splunk، ELK و OSSIM

 

 🚨 اما چه زمانی بهتر است از Suricata یا Zeek استفاده کنیم؟

✔️ اگر نیاز به عملکرد بالا در شبکه‌های پرسرعت )10Gbps یا بیشتر( دارید، Suricata انتخاب بهتری است، چون از پردازش چندرشته‌ای (Multithreading) پشتیبانی می‌کند.

✔️ اگر تمرکز شما روی تحلیل رفتاری، استخراج ویژگی‌های ترافیکی و تحلیل ارتباطات در سطح بالا است، Zeek (Bro) گزینه‌ای پیشرفته و قدرتمند محسوب می‌شود.

🛠آموزش گام‌به‌گام نصب Snort 3 روی Ubuntu 22.04

پس از بررسی مفاهیم پایه، معماری داخلی و مزایای ابزار Snort در مقایسه با سایر سیستم‌های تشخیص نفوذ، اکنون زمان آن رسیده است که وارد فاز عملیاتی شویم. در ادامه این مقاله، به‌صورت گام‌به‌گام و کاربردی نحوه نصب، پیکربندی و به‌کارگیری Snort را در یک محیط واقعی بررسی خواهیم کرد.

این بخش به‌ویژه برای کارشناسان امنیت، مدیران SOC و متخصصان DevSecOps طراحی شده تا بتوانند از Snort نه فقط به‌عنوان یک ابزار مانیتورینگ، بلکه به‌عنوان یک ماژول مؤثر در معماری دفاعی سازمان خود استفاده کنند.

🧰 پیش‌نیازهای نصب و اجرای Snort

قبل از شروع نصب، مطمئن شوید که موارد زیر فراهم هستند:

📌 حداقل پیش‌نیازهای سخت‌افزاری و نرم‌افزاری:

✔️ سیستم‌عامل: Ubuntu 20.04 LTS یا نسخه‌های بالاتر

✔️ دسترسی root یا کاربر با sudo

✔️ اتصال اینترنت برای دانلود منابع

✔️ بسته‌های ضروری

: build-essential, libpcap-dev, libpcre3-dev, libdumbnet-dev, zlib1g-dev, luajit, pkg-config, و cmake

🔐  نکته امنیتی:

در محیط سازمانی، توصیه می‌شود نصب و پیکربندی Snort در محیط ایزوله (isolated lab) و پشت فایروال انجام شود.

مرحله ۱: نصب پیش‌نیازها

قبل از هر چیز، باید کتابخانه‌ها و ابزارهای مورد نیاز را نصب کنیم:

sudo apt update && sudo apt upgrade -y

sudo apt install -y build-essential libpcap-dev libpcre3-dev libdumbnet-dev zlib1g-dev libluajit-5.1-dev pkg-config cmake libssl-dev

 

مرحله ۲: دانلود و نصب DAQ برای Packet I/O

DAQ = Data Acquisition library
این کتابخانه بین Snort و رابط شبکه تعامل برقرار می‌کند.

cd /usr/src/
sudo git clone https://github.com/snort3/libdaq.git
cd libdaq
sudo ./bootstrap
sudo ./configure
sudo make
sudo make install

 

مرحله ۳: دانلود و نصب Snort 3

cd /usr/src/
sudo git clone https://github.com/snort3/snort3.git
cd snort3
sudo ./configure_cmake.sh --prefix=/usr/local/snort
cd build
sudo make
sudo make install

 

مرحله ۴: افزودن Snort به PATH

export PATH=$PATH:/usr/local/snort/bin

برای دائمی شدن:

echo 'export PATH=$PATH:/usr/local/snort/bin' >> ~/.bashrc
source ~/.bashrc

 

⚙️ پیکربندی اولیه Snort 3

ساخت دایرکتوری‌های مورد نیاز

sudo mkdir -p /usr/local/snort/etc /var/log/snort

دریافت rule sets رایگان

از وب‌سایت Snort.org یا Emerging Threats قوانین پایه را دانلود کنید و در مسیر /usr/local/snort/etc/rules/ قرار دهید.

نمونه اجرای Snort 3 در حالت تست

snort -c /usr/local/snort/etc/snort.lua -R /usr/local/snort/etc/rules/snort3-community.rules -i eth0 -A alert_fast -l /var/log/snort

 

 ✅ تست عملکرد با ICMP

اضافه کردن یک قانون ساده به فایل rules :

alert icmp any any -> any any (msg:"ICMP Test Detected"; sid:1000001; rev:1;)

سپس:

ping 8.8.8.8
cat /var/log/snort/alert_fast.txt

جمع‌بندی: چرا Snort یکی از ارکان اصلی امنیت شبکه است؟

ابزار Snort به‌عنوان یکی از محبوب‌ترین و قدرتمندترین سیستم‌های تشخیص و پیشگیری از نفوذ شبکه (IDS/NIPS)، با ترکیب قابلیت‌های تحلیل ترافیک، تعریف قوانین اختصاصی، و پشتیبانی از ماژول‌های گوناگون، به یکی از انتخاب‌های اصلی در تیم‌های امنیتی تبدیل شده است.

در این مقاله با ساختار داخلی Snort، تفاوت آن با ابزارهای مشابه مانند Suricata، نحوه‌ی عملکرد ماژول‌ها، و حتی روش ادغام آن با پلتفرم‌هایی مانند Splunk آشنا شدیم.

اگر در حال طراحی یک SOC، پیاده‌سازی یک سیاست تشخیص تهدیدات شبکه، یا ارتقای ابزارهای امنیتی خود هستید، یادگیری و استقرار Snort می‌تواند یک نقطه شروع قدرتمند و کم‌هزینه باشد.

🧭  پیشنهاد:

اگر این مقاله برایتان مفید بود، پیشنهاد می‌کنیم مقاله‌ی مرتبط زیر را هم بخوانید:
🔗  آموزش THOR APT Scanner و تفاوت آن با LOKI

 

تمام حقوق سایت برای سلام دیجی و نويسندگان آن محفوظ می باشد