NetFlow و sFlow چیه و چطور ترافیک رو آنالیز کنیم؟

NetFlow و sFlow چیه و چطور ترافیک رو آنالیز کنیم؟


NetFlow و sFlow دو تا پروتکل برای جمع آوری و آنالیز ترافیک شبکه هستن باهاشون میتونی بفهمی چه حجم ترافیکی از سرور رد میشه از کجا میاد به کجا میره و چه پروتکلی داره


چرا NetFlow و sFlow مهم هستن؟

مانیتورینگ پهنای باند

بفهمی کدوم سرور کدوم سایت یا کدوم کاربر داره پهنای باند رو میخوره

شناسایی حمله DDoS

وقتی ترافیک یهو میره بالا میتونی بفهمی از کجا داره میاد و چطور جلوش رو بگیری

عیب یابی شبکه

بفهمی چرا یه بخش از شبکه کند شده یا کجا bottleneck داری

تحلیل رفتار

ببینی کاربرا بیشتر چه پروتکل هایی استفاده میکنن به چه IP هایی وصل میشن چه پورت‌هایی پربازدیده

امنیت

ترافیک مشکوک مثل اسکن پورت C&C بات نت ها یا Data Exfiltration رو تشخیص بدی


NetFlow چیه؟

NetFlow رو Cisco اختراع کرد کارش اینه که روتر یا سوئیچ ترافیک رو میبینه و اطلاعات هر Flow رو ثبت میکنه


Flow یعنی چی؟

یه Flow یعنی یه جریان ترافیک بین دو نقط. مثلا ارتباط بین IP تو و IP سرور مقصد روی یه پورت خاص با یه پروتکل مشخص


یه Flow شامل این اطلاعاته:

IP مبدا و مقصد

پورت مبدا و مقصد

پروتکل (TCP/UDP/ICMP)

حجم داده جابجا شده

مدت زمان اتصال

تعداد بسته ها


NetFlow ترافیک رو چطور جمع میکنه؟

روتر یا سوئیچ بسته ها رو نگاه میکنه Flow ها رو شناسایی میکنه و هر چند ثانیه یه بار اطلاعاتشون رو میفرسته به یه Collector (جمع‌کننده) Collector داده ها رو ذخیره می‌کنه و Analyzer روشون تحلیل انجام میده


نسخه‌های NetFlow:

v5: قدیمی ولی هنوز پراستفاده فقط IPv4

v9: جدیدتر IPv4 و IPv6، قابل انعطاف با Template

IPFIX: استاندارد جهانی شده NetFlow v10


sFlow چیه؟

sFlow (Sampled Flow) توسط HP و InMon ساخته شد فرق اصلیش با NetFlow اینه که به جای دیدن همه بسته ها فقط Sample (نمونه) برمیداره

مثلا:

از هر ۱۰۰۰ بسته، فقط ۱ بسته رو بررسی میکنه و اطلاعاتش رو میفرسته

مزایای sFlow:

مصرف CPU و منابع کمتر روی روتر/سوئیچ

مقیاس پذیرتر برای شبکه های خیلی بزرگ

اطلاعات لایه ۲ (MAC) رو هم داره

معایب sFlow:

چون Sampling هست دقت کمتری داره

ممکنه Flow های کوتاه رو از دست بده


چطور NetFlow روی سرور لینوکس راه بندازیم؟

با ntopng (ساده‌ترین راه):

نصب ntopng

sudo apt install ntopng


فعال کردن NetFlow Collector

sudo ntopng --collector-port 2055

حالا روتر یا سوئیچت رو تنظیم کن NetFlow رو به IP سرور روی پورت ۲۰۵۵ بفرسته


با softflowd (تبدیل ترافیک سرور به NetFlow):

sudo apt install softflowd

اجرا و گوش دادن روی اینترفیس

sudo softflowd -i eth0 -n collector-ip:2055

با pmacct (حرفه‌ای و سبک):

sudo apt install pmacct

تنظیمات در /etc/pmacct/pmacctd.conf

daemonize: true

interface: eth0

aggregate: src_host, dst_host, src_port, dst_port, proto

plugins: print

چطور sFlow روی سرور راه بندازیم؟

با Host sFlow:

نصب

wget https://github.com/sflow/host-sflow/releases/download/v2.0/hsflowd-ubuntu_2.0_amd64.deb
sudo dpkg -i hsflowd-ubuntu_2.0_amd64.deb

تنظیمات در /etc/hsflowd.conf

sflow {
 collector { ip = collector-ip }
 collector { port = 6343 }
}

تحلیل داده‌ها با چه ابزاری؟

ntopng (گرافیکی و کامل)

sudo apt install ntopng

داشبورد تحت وب داره همه چی رو گرافیکی نشون میده

ElastiFlow (مبتنی بر ELK)

NetFlow و sFlow رو میفرسته به Elasticsearch و با Kibana تحلیل میکنی

Grafana + InfluxDB

داده ها رو توی InfluxDB ذخیره کن و با Grafana نمودار بساز

nfdump و nfsen (خط فرمان)

sudo apt install nfdump nfsen

خوندن فایل NetFlow

nfdump -r flow-file

10 IP برتر از نظر ترافیک

nfdump -r flow-file -s ip -n 10

یه مثال: پیدا کردن IP پرمصرف

با nfdump:

nfdump -r /var/cache/nfdump/latest -s ip/bytes -n 10

خروجی:

Top 10 IP Addr ordered by bytes:

192.168.1.100  2.5 GB

10.0.0.5     1.8 GB

192.168.1.50   800 MB

حالا میدونی کدوم دستگاه داره پهنای باند رو میخوره

یه مثال: تشخیص DDoS

اگه ترافیک یهو از یه IP خاص یا به یه پورت خاص چند برابر بشه:

nfdump -r /var/cache/nfdump/latest -s port -n 10

ببینی پورت ۸۰ یهو ۱۰ برابر شده یعنی یه چیزی در حال وقوعه

 amir

amir

برنامه نویس python, php طراح سایت