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
ببینی پورت ۸۰ یهو ۱۰ برابر شده یعنی یه چیزی در حال وقوعه