YAF [Yet Another Flowmeter]
ابزاری جریانسنج است که قابلیت این را دارد تا بستههای داده را پردازش کرده و جریان دوطرفهی مربوطه را استخراج کند.
معرفی
ابزاری جریانسنج است که قابلیت این را دارد تا بستههای داده را پردازش کرده و جریان دوطرفهی مربوطه را استخراج کند. ورودی برنامه میتواند دامپفایل (dumpfile)های خروجی برنامه tcpdump باشد و هم میتواند به صورت زنده بر روی واسط شبکه گوش فرادهد و جریان متناظر را تولید نمیاد، سپس خروجی تولید شده را در فایلی با فرمت IPFIX ذخیره کند یا آن را به سمت برنامهای که قابلیت دریافت این فرمت را دارد،ارسال نمیاد.
- ورودی
- dumpfile
- network interface
- خروجی
- IPFIX-based file format
- IPFIX Collecting Processes
خروجی YAF را میتوان به هر برنامهای که از IPFIX پشتیبانی میکند فرستاد. در وبگاه رسمی برنامه ابزارهای SiLK ، super_mediator و Pipeline 5 پیشنهاد شدهاند. من از دو مورد اول یعنی SiLK و super_mediator استفاده میکنم و در آینده مستندات مربوط به آنها را خواهم نوشت.
نصب
وابستگیها
قبل از دانلود سورسکد برنامه و کامپایل آن، نیاز است وابستگیهای مورد نیازش را نصب کنیم. glib و libpcap را از مخازن رسمی میتوان نصب کرد. اما چون سرور مورد استفاده دبیان ۸ است، نسخهی libfixbuf موجود در مخازن رسمی دبیان ۸ قدیمی بوده و بایستی نسخهی جدید را از وبگاه رسمی دانلود کرده و دستی کامپایل و نصب کنیم. (بسته به توزیع و مخزن مورد استفادهی شما، شاید بتوانید از مخازن رسمی استفاده کنید. باید بررسی کنید که نسخهی موجود در مخازن برابر و یا جدیدتر از ۱.۷.۰ باشد)
$ sudo apt update
$ sudo apt install build-essential libglib2.0-dev libpcap-dev
برای توزیعها برپایه ردهت:
$ sudo yum groupinstall "Development Tools"
$ sudo yum install libpcap libpcap-devel pcre pcre-devel glib2-devel
سپس به صفحهی رسمی libfixbuf رفته و سورس برنامه را دانلود نمایید:
$ wget https://tools.netsa.cert.org/releases/libfixbuf-1.8.0.tar.gz
در ادامه سورسکد را از حالت فشرده خارج کرده و عملیات کامپایل و نصب را انجام میدهیم:
tar -xvzf libfixbuf-1.7.0.tar.gz
cd libfixbuf-1.7.0
./configure
make
make install
کامپایل برنامه
به وبگاه رسمی برنامه مراجعه کرده و آخرین نسخهی آن را دانلود کنید:
$ wget https://tools.netsa.cert.org/releases/yaf-2.9.2.tar.gz
سپس سورسکد را از حالت فشرده خارج کرده و عملیات کامپایل و نصب را انجام میدهیم:
tar -xvzf yaf-2.9.2.tar.gz
cd yaf-2.9.2
./configure --enable-applabel --enable-plugins
make
make install
پیکربندی برنامه
در شاخهی فعلی، نمونهای از فایلهای پیکربندی برنامه وجود دارد، که برای شروع با تنظیمات پیشفرض مناسب میباشند. شاخههای مورد نیاز را ایجاد میکنیم و فایلها را در محل خود کپی میکنیم:
- اجرا برنامه به صورت سرویس
cp etc/init.d/yaf /etc/init.d/
cp etc/yaf.conf /usr/local/etc/
chmod +x /etc/init.d/yaf
- ساخت شاخههای مورد نیاز
mkdir /var/log/yaf
mkdir /var/log/yaf/log
mkdir /var/log/yaf/run
- افزودن متغیر محیطی برای محل کتابخانههای برنامه
$ export LTDL_LIBRARY_PATH=/usr/local/lib/yaf
- تنظیمات برنامه
فایل تنظیمات در مسیر
usr/local/etc/yaf.conf/
قرار دارد، برای نمونه:
ENABLED=1
YAF_CAP_TYPE=pcap
YAF_CAP_IF=eth0
YAF_IPFIX_PROTO=tcp
YAF_IPFIX_HOST=localhost
YAF_IPFIX_PORT=18001
YAF_STATEDIR=/var/log/yaf
YAF_EXTRAFLAGS="--silk --applabel --max-payload=2048 --plugin-name=/usr/local/lib/yaf/dpacketplugin.la"
فیلد YAF_CAP_IF
واسط شبکهای که بایستی برنامه به آن گوش دهد و جریان IPFIX تولید کند را مشخص میکند. درصورتی که بخواهید ترافیک روی تمامی واسطهای شبکه بررسی شود، میتوانید از عبارت any
استفاده کنید.
در سه فیلد YAF_IPFIX_PROTO, YAF_IPFIX_HOST, YAF_IPFIX_PORT
اطلاعات مربوطه به مقصد دریافت کننده IPFIX را وارد میکنیم. اینکه خروجی به چه درگاهی، چه پروتکلی و چه مقصدی ارسال شود.
سپس در YAF_EXTRAFLAGS
سایر فیلدهای مورد نظر خود را قرار دهید. به عنوان مثال اگر تمایل دارید فقط ترافیک IP نسخهی ۴ بررسی شود، میتوانید به گزینههای این قسمت ip4-only--
اضافه کنید:
YAF_EXTRAFLAGS="--silk --ip4-only --applabel --max-payload=2048 --plugin-name=/usr/local/lib/yaf/dpacketplugin.la"
گزینههای متعددی وجود دارد که برخی از آنها در ادامه آورده شده است، میتوانید برای جزئیات بیشتر man yaf $
را مطاله کنید، یا به سایر پیوندها و منابع معرفی شده در اتنهای این نوشته مراجعه نمایید.
|--in INPUT_SPECIFIER | --out OUTPUT_SPECIFIER|
|--config CONFIG_FILE | --live LIVE_TYPE|
|--ipfix TRANSPORT_PROTOCOL | --no-output|
|--decompress DECOMPRESS_DIR | --filter BPF_FILTER|
|--rotate ROTATE_DELAY | --lock|
|--caplist | --group SPREAD_GROUP_NAME(s)|
|--groupby GROUPBY_TYPE | --stats INTERVAL][--no-stats|
|--noerror | --export-interface|
|--gre-decode | --no-frag|
|--max-frags FRAG_TABLE_MAX | --ip4-only|
|--ip6-only | --idle-timeout IDLE_TIMEOUT|
|--active-timeout ACTIVE_TIMEOUT | --udp-temp-timeout TEMPLATE_TIMEOUT|
|--force-read-all | --flow-stats|
|--delta | --ingress INGRESS_INT|
|--egress EGRESS_INT | --max-payload PAYLOAD_OCTETS|
|--udp-payload | --max-export PAYLOAD_OCTETS|
|--max-flows FLOW_TABLE_MAX | --export-payload|
|--silk | --udp-uniflow PORT|
|--uniflow | --mac|
|--force-ip6-export | --observation-domain DOMAIN_ID|
|--entropy | --applabel|
|--applabel-rules RULES_FILE | --ipfix-port PORT|
|--tls | --tls-ca CA_PEM_FILE|
|--tls-cert CERT_PEM_FILE | --tls-key KEY_PEM_FILE|
|--become-user UNPRIVILEGED_USER | --become-group UNPRIVILEGED_GROUP|
|--log LOG_SPECIFIER | --loglevel LOG_LEVEL|
|--verbose | --version|
|--p0fprint | --p0f-fingerprints FILENAME|
|--fpexport | --plugin-name LIBPLUGIN_NAME[,LIBPLUGIN_NAME...]|
|--plugin-opts "OPTIONS[,OPTIONS...]" | --plugin-conf CONF_FILE_PATH[,CONF_FILE_PATH...]|
|--pcap PCAP_FILE_PREFIX | --pcap-per-flow|
|--max-pcap MAX_FILE_MB | --pcap-timer PCAP_ROTATE_DELAY|
|--pcap-meta-file META_FILE_PREFIX | --index-pcap|
|--hash FLOW_KEY_HASH | --stime FLOW_START_TIMEMS]
منابع
- بهترین و سریع ترین منبع:
man yaf $
:) - مستندات رسمی برنامه: https://tools.netsa.cert.org/yaf/docs.html
Let me know what you think of this article on twitter @haghighi_ahmad or leave a comment below!