با نصب و راه اندازی Snort IDS از شبکه خود در برابر مزاحمان و حملات ناخواسته محافظت کنید.
اگر در مورد امنیت شبکه جدی هستید، نصب یک راه حل IPS یا IDS برای تقویت محیط شبکه و منحرف کردن ترافیک ناخواسته شبکه ضروری است.
Snort یکی از این راه حل های معروف، رایگان برای استفاده شخصی و منبع باز IPS/IDS است. بیایید بیاموزیم که چگونه می توانید Snort را روی لینوکس نصب و راه اندازی کنید تا از شبکه خود در برابر حملات سایبری دفاع کنید.
Snort چیست؟
Snort یک نرم افزار منبع باز سیستم تشخیص و پیشگیری از نفوذ شبکه (NIDS/IPS) است که همانطور که از نامش مشخص است، با اعمال قوانین و فیلترهایی که بسته های بالقوه مخرب تزریق شده به شبکه شما را شناسایی و رها می کنند، به ایمن سازی محیط شبکه شما کمک می کند.
با Snort، میتوانید ثبت ترافیک شبکه پیشرفته، شناسایی و تحلیل بستهها را انجام دهید و یک سیستم پیشگیری از نفوذ قوی راهاندازی کنید که از شبکه شما در برابر ترافیک ناخواسته و بالقوه مخرب دفاع میکند.
پیش نیازهای نصب Snort در لینوکس
قبل از نصب Snort، باید تنظیمات اولیه ای را انجام دهید. این بیشتر شامل به روز رسانی و ارتقاء سیستم شما و نصب وابستگی های مورد نیاز Snort برای عملکرد صحیح است.
با به روز رسانی و ارتقای سیستم خود شروع کنید.
در توزیعهای لینوکس مبتنی بر اوبونتو و دبیان:
sudo apt update && apt upgrade -y
در Arch Linux و مشتقات آن:
sudo pacman -Syu
در RHEL و Fedora:
sudo dnf upgrade
با ارتقای سیستم خود، به نصب وابستگی های مورد نیاز Snort ادامه دهید. در اینجا دستوراتی وجود دارد که باید اجرا کنید:
در اوبونتو و دبیان، اجرا کنید:
sudo apt install -y build-essential autotools-dev libdumbnet-dev libluajit-5.1-dev libpcap-dev zlib1g-dev pkg-config libhwloc-dev cmake liblzma-dev openssl libssl-dev cpputest libsqlite3-dev libtool uuid-dev git autoconf bison flex libcmocka-dev libnetfilter-queue-dev libunwind-dev libmnl-dev ethtool libjemalloc-dev libpcre++-dev
در Arch Linux اجرا کنید:
sudo pacman -S gperftools hwloc hyperscan ibdaqlibdnet libmnl libpcap libunwind luajit lz4 openssl pcre pulledporkxz zlib cmake pkgconf
برای RHEL و Fedora دستور زیر را صادر کنید:
sudo dnf install gcc gcc-c++ libnetfilter_queue-devel git flex bison zlib zlib-devel pcre pcredevel libdnet tcpdump libnghttp2 wget xz-devel -y
علاوه بر این، شما همچنین باید به صورت دستی Data Acquisition Library، LibDAQ for Snort را نصب کنید تا به درستی کار کند و همچنین gperftools را برای تولید فایل های ساخت.
ابتدا فایل های منبع LibDAQ را با استفاده از دستور wget از وب سایت رسمی دانلود کنید. سپس بایگانی را استخراج کرده و با استفاده از cd به دایرکتوری بروید. در داخل دایرکتوری، بوت استرپ را اجرا کرده و اسکریپت ها را پیکربندی کنید، سپس فایل ها را با make آماده کرده و با دستور make install نصب کنید.
wget https://www.snort.org/downloads/snortplus/libdaq-3.0.11.tar.gz
tar -xzvf lib*
cd lib*
./bootstrap
./configure
make
sudo make install
با نصب LibDAQ، باید آخرین وابستگی را نصب کنید: gperftools. با گرفتن فایل های منبع از مخزن GitHub شروع کنید. فایل ها را استخراج کنید، به دایرکتوری بروید و اسکریپت پیکربندی را اجرا کنید. در نهایت بسته را با استفاده از دستور make and make install نصب کنید.
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.10/gperftools-2.10.tar.gz
tar -xvzf gper* && cd gper
./configure
make
sudo make install
پس از نصب این وابستگی ها، می توانید به مراحل بعدی برای نصب Snort بروید.
Snort From Source را روی لینوکس نصب کنید
با خارج شدن از راه اندازی اولیه، اکنون می توانید روی نصب نرم افزار واقعی تمرکز کنید. شما آن را از منبع میسازید، بنابراین ابتدا فایلهای ساخت مورد نیاز را بردارید.
از دستور wget استفاده کنید یا فایل ها را به صورت دستی از صفحه دانلود رسمی دانلود کنید:
wget https://www.snort.org/downloads/snortplus/snort3-3.1.58.0.tar.gz
دانلود: Snort
پس از دانلود بایگانی حاوی فایل های ساخت، آن را با استفاده از دستور tar استخراج کنید:
tar -xzvf snort*
به پوشه استخراج شده بروید، اسکریپت پیکربندی را اجرا کنید، از دستور make برای آماده سازی فایل ها استفاده کنید و در نهایت آنها را با make install نصب کنید:
cd snort*
./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc
cd build
make
sudo make install
Snort اکنون با موفقیت در سیستم شما نصب خواهد شد. با این حال، فقط یک مرحله دیگر وجود دارد که باید تکمیل کنید. هنگامی که نرم افزار جدید به صورت دستی نصب می شود، دایرکتوری نصب و کتابخانه های مورد نیاز ممکن است به طور خودکار در مسیر پیش فرض سیستم قرار نگیرند. بنابراین ممکن است هنگام راه اندازی برنامه با خطا مواجه شوید.
برای جلوگیری از این مشکل، باید دستور ldconfig را اجرا کنید. حافظه پنهان کتابخانه مشترک سیستم را با کتابخانه ها و باینری های تازه نصب شده همگام می کند. یا دستور ldconfig را از پوسته ریشه اجرا کنید یا از پیشوند sudo استفاده کنید:
sudo ldconfig
اکنون تمام مراحل مهم مورد نیاز برای نصب Snort را پوشش داده اید. برای تأیید نصب، دستور Snort را با پرچم -V اجرا کنید، و باید خروجی را ببینید که نام نسخه و سایر داده ها را برمی گرداند.
snort -V
هنگامی که نصب Snort را تأیید کردید، به مراحل بعدی بروید تا آن را به عنوان یک IDS/IPS کامل تنظیم کنید.
پیکربندی اولیه Snort در لینوکس
کارایی Snort تقریباً به طور کامل به کیفیت مجموعه قوانین ارائه شده بستگی دارد.
با این حال، قبل از اینکه به تنظیم قوانین برسید، باید کارت های شبکه را برای کار با Snort پیکربندی کنید و همچنین باید آزمایش کنید که چگونه تنظیمات پیش فرض توسط Snort مدیریت می شود. با پیکربندی کارت های شبکه شروع کنید.
رابط شبکه را روی حالت غیرقانونی تنظیم کنید:
sudo ip link set dev interface_name promisc on
با استفاده از ethtool، Generic Receive Offload (GRO) و Large Receive Offload (LRO) را غیرفعال کنید تا از کوتاه شدن بسته های شبکه بزرگتر جلوگیری کنید:
sudo ethtool -K interface_name gro off lro off
نحوه عملکرد Snort را با پیکربندی پیش فرض آزمایش کنید:
snort -c /usr/local/etc/snort/snort.lua
این باید سیگنال خروجی موفقی را که Snort را به درستی در سیستم خود نصب و راه اندازی کرده اید، بازگرداند. اکنون میتوانید ویژگیهای آن را سرهم کنید و با پیکربندیهای مختلف آزمایش کنید تا بهترین مجموعه قوانین برای ایمن سازی شبکه خود را بیابید.
قوانین را تنظیم کنید و با Snort آنها را اجرا کنید
با تنظیمات اولیه، Snort اکنون آماده است تا از محیط شما دفاع کند. همانطور که می دانید، Snort برای تعیین اعتبار ترافیک به مجموعه قوانین نیاز دارد، بیایید چند مجموعه قانون رایگان و رایگان برای Snort تنظیم کنیم.
Snort مجموعه قوانین و تنظیمات را از دایرکتوری های خاص می خواند. بنابراین ابتدا با استفاده از دستورات mkdir و لمسی، چند دایرکتوری مهم برای ذخیره قوانین و سایر داده های مرتبط برای Snort ایجاد کنید:
sudo mkdir -p /usr/local/etc/{lists,so_rules,rules}
sudo touch /usr/local/etc/rules/local.rules
sudo touch /usr/local/etc/lists/default.blocklist
با ایجاد این دایرکتوری ها، می توانید مجموعه قوانین جامعه را با استفاده از دستور wget از وب سایت رسمی دانلود کنید:
wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz
پس از اتمام دانلود مجموعه قوانین، آن را استخراج کرده و در پوشه /usr/local/etc/rules/ کپی کنید.
tar -xvzf snort3-com*
cd snort3-com*
cp * /usr/local/etc/rules/
برای اجرای Snort با مجموعه قوانین این دستور را اجرا کنید:
sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/snort3-community.rules -i interface_name -s 65535 -k none
تفکیک دستور:
- -c مسیر فایل پیکربندی پیش فرض را تعیین می کند
- -R مسیر قانون تنظیم شده برای اجرا را تعیین می کند
- -i رابط را تنظیم می کند
- -s محدودیت snaplen را حذف می کند
- -k جمع های چک را نادیده می گیرد
این باید پیکربندی را تأیید کند و تمام مجموعه قوانین را در Snort اعمال کند. به محض مشاهده هرگونه اختلال در شبکه، با یک پیام کنسول به شما هشدار می دهد.
اگر میخواهید مجموعه قوانین خود را ایجاد و اجرا کنید، میتوانید از صفحات اسناد رسمی درباره آن اطلاعات بیشتری کسب کنید.
Logging با Snort را تنظیم کنید
به طور پیش فرض، Snort هیچ گزارشی را خروجی نمی کند. باید با پرچم -L مشخص کنید تا Snort در حالت ورود به سیستم شروع شود، نوع فایل log را تعریف کنید و پرچم -l را برای تنظیم دایرکتوری ورود به سیستم برای Snort تعیین کنید تا لاگ ها را تخلیه کند.
در اینجا دستور شروع Snort با فعال کردن ورود به سیستم آمده است:
sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/snort3-community.rules -i interface_name -s 65535 -k none -L file_type -l /var/log/snort
تفکیک دستور:
- -c مسیر فایل پیکربندی پیش فرض را تعیین می کند
- -R مسیر قانون تنظیم شده برای اجرا را تعیین می کند
- -i رابط را تنظیم می کند
- -s محدودیت snaplen را حذف می کند
- -k جمع های چک را نادیده می گیرد
- -L حالت ورود به سیستم را فعال می کند و نوع فایل لاگ را مشخص می کند
- -l مسیر ذخیره لاگ ها را تعریف می کند
توجه داشته باشید که در دستور مثال، دایرکتوری ورود به سیستم روی /var/log/snort تنظیم شده است. اگرچه این تمرین توصیه شده است، اما شما آزاد هستید که گزارش های خود را در جای دیگری ذخیره کنید.
میتوانید فایلهای گزارش را از Snort از دایرکتوری که تعریف کردهاید بخوانید یا آنها را برای تجزیه و تحلیل بیشتر در نرمافزار SIEM مانند Splunk ارسال کنید.
Snort را به عنوان Daemon راه اندازی سیستم اضافه کنید
اگرچه Snort را نصب و راهاندازی کردهاید، باید مطمئن شوید که در هنگام راهاندازی شروع به اجرا میکند و بهعنوان دیمون پسزمینه اجرا میشود. افزودن آن بهعنوان یک سرویس سیستم راهاندازی خودکار، اطمینان حاصل میکند که Snort فعال است و از سیستم شما در هر زمانی که آنلاین است دفاع میکند.
در اینجا نحوه اضافه کردن دیمون راه اندازی Snort در لینوکس آورده شده است:
- با ایجاد یک فایل سرویس systemd جدید شروع کنید: /lib/systemd/system/snort.service را لمس کنید
- فایل را در ویرایشگر متن دلخواه خود باز کنید و آن را با داده های زیر پر کنید. میتوانید پرچمها را متناسب با نیازهای خود تغییر دهید: [Unit]Description=Snort DaemonAfter=syslog.target network.target[Service]Type=simpleExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/ snort.lua -R /usr/local/etc/rules/snort3-community.rules -s 65535 -k هیچ -l /var/log/snort -D -L pcap -i ens33 [Install]WantedBy=multi-user. هدف
- فایل را ذخیره کرده و از آن خارج شوید. سپس با استفاده از دستورات service و systemctl اسکریپت را فعال و شروع کنید: sudo systemctl enable snort.servicesudo snort start
touch /lib/systemd/system/snort.service
[Unit]
Description=Snort Daemon
After=syslog.target network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/snort3-community.rules -s 65535 -k none -l /var/log/snort -D -L pcap -i ens33
[Install]
WantedBy=multi-user.target
sudo systemctl enable snort.service
sudo snort start
دیمون پسزمینه Snort اکنون باید راهاندازی شود. با استفاده از دستور systemctl status snort می توانید وضعیت اسکریپت را تأیید کنید. باید خروجی مثبت داشته باشد.
اکنون می دانید چگونه با Snort IDS از شبکه خود محافظت کنید
در حالی که پیاده سازی IDS یک عمل خوب است، اما یک اقدام منفعلانه نسبت به یک اقدام فعال است. بهترین راه برای بهبود و تضمین امنیت شبکه، آزمایش مداوم آن و جستجوی عیوب برای رفع آن است.
تست نفوذ یک راه عالی برای یافتن آسیب پذیری های قابل بهره برداری و اصلاح آنها است.