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
clonehttps://github.com/snort3/libdaq.git
cd libdaq
sudo ./bootstrap
sudo ./configure
sudo make
sudo make install
مرحله ۳: دانلود و نصب Snort 3
cd /usr/src/
sudo git
clonehttps://github.com/snort3/snort3.git
cd snort3
sudo ./configure_cmake.sh --prefix=/usr/local/snort
cd build
sudo make
sudo make install
مرحله ۴: افزودن Snort به PATH
exportPATH=
$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