• ایرانشل
  • وبلاگ
    • مفاهیم امنیت شبکه
    • معرفی راهکارها و سرویس‌های امنیتی
    • آموزش‌‌ راهکارهای امنیت شبکه
    • تهدیدات امنیتی
  • اخبار
  • دوره‌های امنیت
    • مسیرهای شغلی امنیت سایبری

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت
ایرانشل
  • ایرانشل
  • وبلاگ
    • مفاهیم امنیت شبکه
    • معرفی راهکارها و سرویس‌های امنیتی
    • آموزش‌‌ راهکارهای امنیت شبکه
    • تهدیدات امنیتی
  • اخبار
  • دوره‌های امنیت
    • مسیرهای شغلی امنیت سایبری
ورود و ثبت نام

وبلاگ

وبلاگ > آموزش‌‌ راهکارهای امنیت شبکه > نصب و راه اندازی Snort در مد inline

نصب و راه اندازی Snort در مد inline

آموزش‌‌ راهکارهای امنیت شبکه
ارسال شده توسط ایرانشل
5 نوامبر 2020
1.39k بازدید

نصب و راه اندازی Snort به عنوان NIPS

در این پست نحوه نصب و راه اندازی Snort در مد inline با استفاده از NFQUEUE توضیح داده شده است. در نسخه ۲ اسنورت این امکان وجود دارد تا بتوان از Iptables برای مسیردهی ترافیک بین چندین Subnet با امکان ارزیابی کل ترافیک عبوری استفاده کرد.

در حال حاضر نصب و راه اندازی Snort به عنوان یک سیستم IPS برخط با استفاده از NFQ بسیار پیچیده تر از راه اندازی Snort به عنوان NIDS و حتی پیچیده تر از راه اندازی آن به عنوان IPS با استفاده از ‌AFPACKET می باشد. این پیچیدگی به خاطر استفاده از Iptables و نیاز به فهم قوی از بحث Routing می‌باشد.

مقایسه NFQUEUE با AFPACKET

سیستم‌های لینوکسی این قابلیت را به ما می دهند تا با استفاده از ماژول NFQ یا AFPACKET سیستم اسنورت را در مد IPS و به صورت inline نصب و راه اندازی نماییم. این دو راهکار در راه اندازی، تقریبا مشابه هم بوده ولی عمده تفاوت آنها در نحوه هدایت ترافیک شبکه می‌باشد. اگر قصد استفاده از APACKET را دارید به این نکته توجه کنید که این ماژول فقط دارای امکان Bridge کردن جفت اینترفیس‌هابا هم می‌باشد، یعنی فقط می توانیم اینترفیس‌های eth0 را با eth1 و اینترفیس‌های eth2 را با eth3 در یک Bridge قرار دهیم. در این حالت دیگر امکان Bridge کردن همزمان eth0 با eth2 و eth3 نخواهیم داشت. پس ناچار به استفاده از روشی هستیم که امکان کنترل کامل ترافیک را به ما بدهد.

از فواید AFPACKET نسبت به NDFQUEUE سادگی راه اندازی snort با استفاده از آن در مد inline و بدون نیاز به تغییر در آدرس دهی و روتینگ شبکه می باشد. در مقابل با وجود پیچیدگی راه اندازی snort با استفاده از NFQ، این روش از لحاظ امنیتی بسیار قدرتمند می‌باشد.

مراحل راه اندازی Snort بر روی Ubuntu 20.04

  • پیکربندی شبکه
  • تنظمات روتینگ شبکه
  • تنظیمات مربوط به IP Forwarding Kernel
  • نصب نرم افزار
  • فعال سازی NFQUEUE
  • فعال سازی ruleهای فایروال

تنظیمات شبکه

برای پیاده سازی اسنورت به صورت Inline و با استفاده از NFQUEUE سناریوی زیر که در آن روتر اسنورت با سه اینترفیس به شبکه مختلف وصل شده است، استفاده خواهیم کرد.

توپولوژی شبکه

در این شکل شبکه 192.168.3.0/24 مربوط به Management می‌باشد که هیچ روتی بین این شبکه و سایر شبکه وجود نخواهد داشت. که در ادامه سیاست‌هایی در فایروال برای مسدود سازی این ترافیک‌ها در فایروال اضافه می‌کنیم

رنج آدرس 10.0.2.0/24 برای شبکه WAN در نظر گرفته شده است. ترافیک‌هایی که مربوط به شبکه داخلی نباشند را سیستم اسنورت در صورت داشتن مجوز به گیت وی این شبکه ارسال خواهد کرد.

رنج آدرس 172.16.1.0/24 برای شبکه دیتا سنتر در نظر گرفته شده است و آدرس گیت وی سرورها آدرس اسنورت می‌باشد. در سناریو تعریف شده برای سیستم اسنورت ترافیک بین این شبکه و شبکه WAN آنالیز و بررسی و در صورت تشخیص هرگونه مورد مشکوت در این ترافیک اسنورت انها را مسدود خواهد کرد.

از آنجایی که تصمیم داریم اسنورت را به عنوان یک Router در شبکه استفاده ‌کنیم بایستی اینترفیس‌هایی که قرار است ترافیک شبکه از طریق آنها Route شود هر کدام یک آدرس IP استاتیک داشته باشند. علاوه بر این بر روی این اینترفیس‌های بایستی LRO و GRO غیرفعال شوند.

تنظیما ت اینترفیس‌ها در Ubuntu 20.04

[email protected]:~$ sudo nano /etc/netplan/00-installer-config.yaml
تنظیمات کارت شبکه‌ها

غیرفعال کردن LRO و GRO

[email protected]:~$ sudo nano /lib/systemd/system/ethtool.service
غیرفعال کردن LRO و GRO
 [email protected]:~$ sudo systemctl enable ethtool
 [email protected]:~$ sudo service ethtool start
 [email protected]:~$ sudo ethtool -k eth* | grep receive-offload 

فعال سازی IP forwarding

 [email protected]:~$ /etc/sysctl.conf
 net.ipv4.ip_forward=1 

بعد از انجام این تنظیمات سیستم را ریستارت می‌کنیم.

نصب DAQ و Snort با قابلیت پشتیبانی NFQ

برای اینکه بتوانیم از اسنورت و DAQ به همراه NFQ استفاده کنیم بایستی طبق دستورالعمل زیر عمل کنیم.

نصب پیش نیازها
[email protected]:~$ sudo apt-get install -y build-essential libpcap-dev libpcre3-dev libdumbnet-dev bison flex zlib1g-dev liblzma-dev openssl libssl-dev
[email protected]:~$ sudo apt-get install libluajit-5.1-2 libluajit-5.1-common libluajit-5.1-dev luajit
[email protected]:~$ sudo apt install -y libnghttp2-dev 
نصب کتابخانه مورد نیاز NFQ
[email protected]:~$ sudo apt install libnetfilter-queue-dev
ایجاد دایرکتوری snort_src برای ذخیره همه فایل سورس مربوط به نرم افزارهای مورد نیاز
[email protected]:~$ mkdir ~/snort_src
[email protected]:~$ cd ~/snort_src
دانلود و نصب DAQ
[email protected]:~$ cd ~/snort_src
[email protected]:~$ wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz
[email protected]:~$ tar -xvzf daq-2.0.7.tar.gz
[email protected]:~$ cd daq-2.0.7
[email protected]:~$ ./configure
[email protected]:~$ sudo apt install libtool
[email protected]:~$ autoreconf -i --force
[email protected]:~$ make
[email protected]:~$ sudo make install

بعد از اجرای configure بایستی در قسمت NFQ پیغامی مشابه زیر مشاهده کنید.

NFQ
نصب Snort
[email protected]:~$ cd ~/snort_src
[email protected]:~$ wget https://www.snort.org/downloads/snort/snort-2.9.16.1.tar.gz
[email protected]:~$ tar -xvzf snort-2.9.16.1.tar.gz
[email protected]:~$ cd snort-2.9.16.1
[email protected]:~$ ./configure --enable-sourcefire --enable-open-appid
[email protected]:~$ make
[email protected]:~$ sudo make install

اجرای دستور زیر برای بروزرسانی کتابخانه‌های اشتراکی

[email protected]:~$ sudo ldconfig

در هنگام نصب اسنورت به صورت پیش فرض باینری‌های مربوط به ان در مسیر usr/local/bin/snort/ قرار می‌گیرد. این مرسوم است که یک symlink به مسیر usr/local/snort/ ایجاد شود.

[email protected]:~$ sudo ln -s /usr/local/bin/snort /usr/sbin/snort
تست Snort

در صورت موفقیت آمیز بودن نصب دستور snort با فلگ V خروجی مشابه عکس زیر خواهد داشت.

Snort

در صورت اجرای دستور زیر بایستی خروجی زیر که نشان دهنده کارکرد صحیح Snort با NFQ می‌باشد، نشان داده شود.

[email protected]:~$ snort --daq-list
DAQ list
انجام تنظیمات Snort

ایجاد کاربر و گروه کاربری برای اجرا کردن Snort

[email protected]:~$ sudo groupadd snort
[email protected]:~$ sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort
ایجاد فایل‌ها و فولدرهای مورد نیاز و تنظیمات مربوط به سطح دسترسی آنها
[email protected]:~$ sudo mkdir /etc/snort
[email protected]:~$ sudo mkdir /etc/snort/rules
[email protected]:~$ sudo mkdir /etc/snort/rules/iplists
[email protected]:~$ sudo mkdir /etc/snort/preproc_rules
[email protected]:~$ sudo mkdir /usr/local/lib/snort_dynamicrules
[email protected]:~$ sudo mkdir /etc/snort/so_rules
[email protected]:~$ sudo touch /etc/snort/rules/iplists/black_list.rules
[email protected]:~$ sudo touch /etc/snort/rules/iplists/white_list.rules
[email protected]:~$ sudo touch /etc/snort/rules/local.rules
[email protected]:~$ sudo touch /etc/snort/sid-msg.map
[email protected]:~$ sudo mkdir /var/log/snort
[email protected]:~$ sudo mkdir /var/log/snort/archived_logs

[email protected]:~$ sudo chmod -R 5775 /etc/snort
[email protected]:~$ sudo chmod -R 5775 /var/log/snort
[email protected]:~$ sudo chmod -R 5775 /var/log/snort/archived_logs
[email protected]:~$ sudo chmod -R 5775 /etc/snort/so_rules
[email protected]:~$ sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules
[email protected]:~$ sudo chown -R snort:snort /etc/snort
[email protected]:~$ sudo chown -R snort:snort /var/log/snort
[email protected]:~$ sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules 
کپی کردن فایل‌های مورد نیاز از فولدر مربوط به فایل‌های تاربال snort به فولدر تنطیمات snort
[email protected]:~$ cd ~/snort_src/snort-2.9.16.1/etc/

[email protected]:~$ sudo cp .conf /etc/snort
[email protected]:~$ sudo cp *.map /etc/snort
[email protected]:~$ sudo cp *.dtd /etc/snort

[email protected]:~$ cd ~/snort_src/snort-2.9.16.1/src/dynamic-preprocessors/build/usr/local/lib/snort_dynamicpreprocessor/
[email protected]:~$ sudo cp * /usr/local/lib/snort_dynamicpreprocessor/ 
غیرفعال کردن همه سیاست‌ها
[email protected]:~$ sudo sed -i 's/include \$RULE_PATH/#include \$RULE_PATH/' /etc/snort/snort.conf
انجام تنظیمات مربوط به فایل کانفیگ snort
[email protected]:~$ sudo nano /etc/snort/snort.conf
ipvar HOME_NET [192.168.3.0/24,176.16.1.0/24] # line 45

var RULE_PATH /etc/snort/rules # line 104
var SO_RULE_PATH /etc/snort/so_rules # line 105
var PREPROC_RULE_PATH /etc/snort/preproc_rules # line 106
var WHITE_LIST_PATH /etc/snort/rules/iplists # line 113
var BLACK_LIST_PATH /etc/snort/rules/iplists # line 114
include $RULE_PATH/local.rules #line 545

config daq: nfq
config daq_mode: inline
config daq_var: queue=4 

برای شروع به تست عمکرد صحیح IPS، سیاست زیر را که برای شناسایی ترافیک ICMP می‌باشد به رول‌های اسنورت اضافه می کنیم.

[email protected]:~$ sudo nano /etc/snort/rules/local.rule
alert icmp any any -> $HOME_NET any (msg:"ICMP test detected"; GID:1; sid:10000001; rev:001; classtype:icmp-event;)
فعال سازی NFQUEUE با استفاده از فلگ Q
[email protected]:~$ sudo snort -T -c /etc/snort/snort.conf -Q
تنظیم کردن NFQUEUE برای هدایت ترافیک به سمت اسنورت
[email protected]:~$ sudo iptables -I FORWARD -j NFQUEUE --queue-num=1

در صورتی که بخواهیم ترافیک شبکه در صورت crash کردن یا Stop شدن سرویس Snort همچنان عبور کند از فلگ queue-bypass استفاده می کنیم.

[email protected]:~$ sudo iptables -I FORWARD -j NFQUEUE --queue-num=1 --queue-bypass

برای استفاده از اسنورت در مد inline دستور زیر را اجرا می‌کنیم. برای اجرا شدن اتوماتیک snort در هنگام بوت شدن سیستم آن را به صورت سرویس به سیستم اضافه می کنیم.

[email protected]:~$ sudo/usr/local/bin/snort-A console -q -u snort -g snort -c /etc/snort/snort.conf -Q
[email protected]:~$ sudo nano /etc/systemd/system/snort.service
Snort Service Mode
[email protected]:~$ sudo systemctl enable snort
[email protected]:~$ sudo systemctl start snort 

برای مسدود کردن سایر ترافیک‌ها بدون آنالیز اسنورت از دستور زیر استفاده می‌کنیم.

[email protected]:~$ sudo iptables -P FORWARD DROP
اشتراک گذاری:
برچسب ها: NFQNIDSNIPSsnortسیست تشخیص و جلوگیری از نفوذ

دیدگاهتان را بنویسید لغو پاسخ

درباره ایرانشل

تیم ایرانشل با این هدف تشکیل شده است‌ تا بتوانند با کمک شما همراهان عزیز اقدامات مثبتی در جهت شفاف‌سازی نیازمندی‌های امنیتی، معرفی سرویس‌ها و راهکارهای امنیتی انجام دهد.

عضویت در خبرنامه

اطلاعات تماس
  • تهران - خیابان شریعتی - بالاتر از پل سیدخندان
  • 09125162976
  • [email protected]
شبکه‌های اجتماعی
کلیه حقوق این وب سایت متعلق به ایرانشل می‌باشد.
جستجو

جستجو با زدن Enter و بستن با زدن ESC