مانیتورینگ شبکه با ابزار Zeek و ELK
برای مطالعه بیشتر در مورد elk میتواند به این مقاله مراجعه کنید دوره مدیریت لاگ با elk میتواند برای درک بهتر بسیار مفید باشد - دوره مدیریت لاگ با ELK
زیک چیست؟
Zeek (Broسابق)یک فریم ورک تحلیل شبکه که رایگان و منبع باز است.اولین بار در سال1994توسط ورن پاکسون ساخته شد و در اصل با اشاره به برادر بزرگ جورج اورول از رمان نوزده هشتاد و چهارش نامگذاری شد.می تواند به عنوان یک سیستم تشخیص نفوذ شبکه(NIDS)اما با تجزیه و تحلیل زنده اضافی از وقایع شبکه استفاده شود.تحت مجوزBSDمنتشر می شود.
معماری کاربردی Zeek
بسته هایIPگرفته شده باpcapبه موتور رویدادی منتقل می شوند که آنها را قبول یا رد می کند.بسته های پذیرفته شده به مفسر اسکریپت خط مشی ارسال می شوند.
موتوررویدادها، ترافیک زنده یا ضبط شده شبکه را تجزیه و تحلیل می کند.این اتفاقات زمانی روی می دهد که“یک چیزی“اتفاق بیفتد.
رویدادها توسط اسکریپت های خط مشی اداره می شوند ، که رویدادها را تجزیه و تحلیل می کنند تا سیاست های عملیاتی ایجاد کنند.متن ها به زبان برنامه نویسی کامل تورینگZeekنوشته شده اند.به طور پیش فرضZeekبه راحتی اطلاعات مربوط به رویدادها را در پرونده ها ثبت می کند(Zeekاز ثبت وقایع در خروجی باینری نیز پشتیبانی می کند).با این حال ، می توان آن را پیکربندی کرد تا اقدامات دیگری مانند ارسال ایمیل ، افزایش هشدار ، اجرای دستور سیستم ، به روزرسانی متریک داخلی و حتی فراخوانی اسکریپتZeekدیگر را انجام دهد.رفتار پیش فرض ، خروجی مانندNetFlow (ورودی ورود به سیستم)و همچنین اطلاعات رویداد برنامه را تولید می کند.اسکریپت هایZeekقادر به خواندن داده های پرونده های خارجی مانند لیست های سیاه برای استفاده در اسکریپت های سیاستZeekهستند.
سوریکاتا چیست
Suricata یک موتور تشخیص نفوذ متن باز است که توسط OISF ایجاد شده است. نسخه Beta آن در اواخر سال 2009 و نسخه استاندارد آن در اواسط سال 2010 منتشر شد. این موتور می تواند به عنوان یک سیستم تشخیص نفوذ (IDS)، سیستم جلوگیری از نفوذ (IPS) و یا به عنوان ناظر بر امنیت شبکه استفاده شود. این ابزار با استفاده از مجموعه قوانین گسترده و زبان امضا، بر ترافیک شبکه نظارت می کند.
دلیل انتخابSuricataبه عنوان یک سیستم تشخیص نفوذ
همان طور که بیان شد یکی از رایج ترین گزینه ها ،Snort است که مدت هاست ابزاری مورد علاقه بسیاری از ادمین های شبکه است.اگرچهSuricataبسیار جدیدتر است، اما چندین مزیت دارد.این دو ابزار در معماری های مختلفی بنا شده اند، اما هر دو از امضاهای یکسان برای تشخیص استفاده می کنند.یک تفاوت اساسی بین آنهاچند نخی بودنSuricataاست، به این معنی که این ابزار می تواند از چند هسته همزمان در انجام امور خود استفاده کند(پردازش موازی).
این موتور به منظور بهره گیری از جدیدترین مجموعه های تراشه پردازنده چند هسته ای و همچنین استفاده از شتاب سخت افزاری برای قدرت پردازش بیشتر طراحی شده است.راندمان بالا، پشتیبانی ازIPو تشخیص خودکار پروتکل، آن را به ابزاری اثربخش برای دید بیشتر به شبکه تبدیل می کند. Suricataابزاری عالی و کم هزینه است که به نظارت بیشتر در شبکه کمک کرده و با طیف وسیعی از ابزارهایSnortسازگار است.
تعامل با چندینCPUبهSuricataاجازه می دهد تا چندین رویداد را همزمان بدون اینکه مجبور به قطع سایر درخواست ها شود، انجام دهد.قابلیت چند نخی، این ابزار را قادر می سازد تا بینCPUها تعادل بار(Load Balancing)برقرار کند،این قابلیت یک مزیت سیار بزرگی محسوب شده چرا که این ابزار می تواند مقادیر زیادی از ترافیک را بدون نیاز به کاهش قوانین، پردازش کند و این خود موجب کاهش بار پردازشی می گردد. بنابراین این سیستم تشخیص نفوذ می تواند عملکرد کلی تحلیل ترافیک شبکه را بهبود بخشد.
نصب و پیکربندی Suricata و Zeek
در همه مراحل یک کارت شبکه مشخص میشود که ترافیک شبکه به طو mirror به آن ارسال میشود. سناریو همان span پورت در سوییچ است.
نصب suricata
add-apt-repository ppa:oisf/suricata-stable
apt-get install suricata
حال می بایست در فایل /etc/suricata/suricata.yml هرجایی که آدرس کارت شبکه مشخص شده بود مقدار نام همان کارت شبکه ای را قرار دهیم که میخواهیم آن را مانیتور کنیم.
همین کار را برای فایل /etc/default/suricata هم انجام میدهیم
سوریکالا از رول هایی برای شناسایی خطرات در شبکه استفاده میکند برای بروز نگه داشتن این رول ها ابزاری به نام suricata-update تعبیه شده است
برای نصب suricata-update میتوانید از راه حل زیر استفاده کنین
apt install python3-pip
pip3 install pyyaml
pip3 install https://github.com/OISF/suricata-update/archive/master.zip
pip3 install --pre --upgrade suricata-update
حق دسترسی های مورد نیاز این ابزار به صورت زیر است
Directory /etc/suricata: read access
Directory /var/lib/suricata/rules: read/write access
Directory /var/lib/suricata/update: read/write access
ابتدا می بایست سورس هایی که میخواهیم از آن ها این رول ها را دریافت کنیم فعال کنیم
suricata-update enable-source oisf/trafficid
suricata-update enable-source etnetera/aggressive
suricata-update enable-source sslbl/ssl-fp-blacklist
suricata-update enable-source et/open
suricata-update enable-source tgreen/hunting
suricata-update enable-source sslbl/ja3-fingerprints
suricata-update enable-source ptresearch/attackdetection
برای بروزرسانی rule ها از دستور زیر استفاده میکنیم
suricata-update
حال سرویس آن را استارت میکنیم
systemctl enable suricata
systemctl start suricata
خروجی لاگ های این ابزار در فایل/var/log/suricata/eve.json ذخیره میشود .
نصب zeek
برای نصب این ابزار ابتدا رپازیتوری آن را اضافه و سپس ابزار را نصب میکنیم
echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_20.10/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list
curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_20.10/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null
apt update
apt -y install zeek
سپس به دایرکتوری زیر مراجعه و فایل های زیر را ویرایش میکنیم
/opt/zeek/etc
### node.cfg
# This is a complete standalone configuration. Most likely you will
# only need to change the interface.
[zeek]
type=standalone
host=localhost
interface=eth0 -- < در اینجا آدرس کارت شبکه مشخص میشود
### networks.cfg
# List of local networks in CIDR notation, optionally followed by a
# descriptive tag.
# For example, "10.0.0.0/8" or "fe80::/64" are valid prefixes.
در این بخش آدرس های داخلی شبکه شما مشخصی مشود
10.0.0.0/8 Private IP space
172.16.0.0/12 Private IP space
192.168.0.0/16 Private IP space
فایل zeekctl.cfg دارای پیکربندی خود سرویس زیک است که میتوانید بنا به نیاز خود آن را تغییر دهید
برای اینکه لاگ های ذخیره شده توسط زیک فرمت json داشته باشند میبایست در فایل زیر عبارتی را اضافه کنیم
### /opt/zeek/share/zeek/site/local.zeek#add this line
@load policy/tuning/json-logs.zeek
بعد از اعمال تغییرات بالا سرویس را اجرا میکنیم
./zeekctl install
./zeekctl deploy
تمامی لاگ ها در آدرس/opt/zeek/logs/current ذخیره میشوند
ارسال لاگ های زیک و سوریکاتا به ELK
برای مطالعه بیشتر در مورد elk میتواند به این مقاله مراجعه کنید
دوره مدیریت لاگ با elk میتواند برای درک بهتر بسیار مفید باشد – دوره مدیریت لاگ با ELK
برای ارسال فایل های لاگ زیک و سوریکاتا به استک الستیک از فایل بیت بدین منظور استفاده کینیم.
این ابزار دارای ماژول برای زیک و سوریکاتا بوده آنها را فعال میکنیم و سپس محتویات تنظیمالت ماژول آن دو را ادیت میکنیم
apt-get install apt-transport-httpswget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
apt-get update && apt -y install filebeat
filebeat modules enable suricata
filebeat modules enable zeek
محتویات فایل ها به صورت زیر است
######## /etc/filebeat/modules.d/zeek.yml
# Module: zeek
# Docs: /guide/en/beats/filebeat/7.6/filebeat-module-zeek.html
- module: zeek
capture_loss:
enabled: true
var.paths: ["/opt/zeek/logs/current/capture_loss.log"]
connection:
enabled: true
var.paths: ["/opt/zeek/logs/current/conn.log"]
dce_rpc:
enabled: true
var.paths: ["/opt/zeek/logs/current/dce_rpc.log"]
dhcp:
enabled: true
var.paths: ["/opt/zeek/logs/current/dhcp.log"]
dnp3:
enabled: true
var.paths: ["/opt/zeek/logs/current/dnp3.log"]
dns:
enabled: true
var.paths: ["/opt/zeek/logs/current/dns.log"]
dpd:
enabled: true
var.paths: ["/opt/zeek/logs/current/dpd.log"]
files:
enabled: true
var.paths: ["/opt/zeek/logs/current/files.log"]
ftp:
enabled: true
var.paths: ["/opt/zeek/logs/current/ftp.log"]
http:
enabled: true
var.paths: ["/opt/zeek/logs/current/http.log"]
intel:
enabled: true
var.paths: ["/opt/zeek/logs/current/intel.log"]
irc:
enabled: true
var.paths: ["/opt/zeek/logs/current/irc.log"]
kerberos:
enabled: true
var.paths: ["/opt/zeek/logs/current/kerberos.log"]
modbus:
enabled: true
var.paths: ["/opt/zeek/logs/current/modbus.log"]
mysql:
enabled: true
var.paths: ["/opt/zeek/logs/current/mysql.log"]
notice:
enabled: true
var.paths: ["/opt/zeek/logs/current/notice.log"]
ntlm:
enabled: true
var.paths: ["/opt/zeek/logs/current/ntlm.log"]
ocsp:
enabled: true
var.paths: ["/opt/zeek/logs/current/ocsp.log"]
pe:
enabled: true
var.paths: ["/opt/zeek/logs/current/pe.log"]
radius:
enabled: true
var.paths: ["/opt/zeek/logs/current/radius.log"]
rdp:
enabled: true
var.paths: ["/opt/zeek/logs/current/rdp.log"]
rfb:
enabled: true
var.paths: ["/opt/zeek/logs/current/rfb.log"]
sip:
enabled: true
var.paths: ["/opt/zeek/logs/current/sip.log"]
smb_cmd:
enabled: true
var.paths: ["/opt/zeek/logs/current/smb_cmd.log"]
smb_files:
enabled: true
var.paths: ["/opt/zeek/logs/current/smb_files.log"]
smb_mapping:
enabled: true
var.paths: ["/opt/zeek/logs/current/smb_mapping.log"]
smtp:
enabled: true
var.paths: ["/opt/zeek/logs/current/smtp.log"]
snmp:
enabled: true
var.paths: ["/opt/zeek/logs/current/snmp.log"]
socks:
enabled: true
var.paths: ["/opt/zeek/logs/current/socks.log"]
ssh:
enabled: true
var.paths: ["/opt/zeek/logs/current/ssh.log"]
ssl:
enabled: true
var.paths: ["/opt/zeek/logs/current/ssl.log"]
stats:
enabled: true
var.paths: ["/opt/zeek/logs/current/stats.log"]
syslog:
enabled: true
var.paths: ["/opt/zeek/logs/current/syslog.log"]
traceroute:
enabled: true
var.paths: ["/opt/zeek/logs/current/traceroute.log"]
tunnel:
enabled: true
var.paths: ["/opt/zeek/logs/current/tunnel.log"]
weird:
enabled: true
var.paths: ["/opt/zeek/logs/current/weird.log"]
x509:
enabled: true
var.paths: ["/opt/zeek/logs/current/x509.log"]
######## /etc/filebeat/modules.d/suricata.yml
# Module: suricata
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.x/filebeat-module-suricata.html
- module: suricata
# All logs
eve:
enabled: true
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
var.paths: ["/var/log/suricata/eve.json"]
سپس سرویس فایل بیت را استارت و داده را در کیبانا مشاهده میکنیم
systemctl enable filebeat
systemctl start filebeat
برای مطالعه بیشتر در مورد elk میتواند به این مقاله مراجعه کنید
دوره مدیریت لاگ با elk میتواند برای درک بهتر بسیار مفید باشد – دوره مدیریت لاگ با ELK
امیدارم راضی باشین
یا حق