Отчитане на трафика на Cisco ASA с NetFlow и nfdump на FreeBSD или Linux

отчитане

Когато се заех с конфигурирането на NetFlow, се оказа, че решенията с отворен код за внедряване на колектора не работят добре с Cisco ASA и има много малко информация в интернет какво да правя в този случай. Реших да запълня тази празнина: можете да направите приятели с FreeBSD / Linux с Cisco ASA за 20 минути.

Да започнем с това, което не работи при мен: flow-tools - изобщо не работи, очевидно не поддържа NetFlow v9. flowd - не съхранява данни за броя прехвърлени байтове и пакети. nfcapd - неправилно съхранява датата и часа, броя на прехвърлените байтове.

Не отричам възможността да са виновни кривите ми ръце или че новата версия на тези програми ще добави поддръжка без грешки за Cisco ASA.

След много търсене попаднах на версия на nfdump с активиран NSEL: nfdump-1.5.8-NSEL, която работи добре с ASA.

Процесът на инсталиране е стандартен: Първо изтеглете и разопаковайте nfdump-1.5.8-NSEL. След това в папката nfdump-1.5.8-NSEL: ./configure make make install

След това ще получим няколко програми: nfcapd е демон за събиране, който слуша на порт, събира данни и пише във файлове. nfdump - чете и извежда данни, събрани от nfcapd. nfexpire - завърта файлове, създадени от nfcapd. nfreplay - чете събраните от nfcapd файлове и ги изпраща по мрежата на друг колектор.

Стартирайте колектор: nfcapd -l -t -D

Сега трябва да конфигурирате Cisco ASA. защото Аз съм лаик в Cisco, ето връзки към готови ръководства: Ако конфигурирате ASA чрез ASDM GUI. Ако конфигурирате ASA през истинската конзола.

За съжаление, в моята версия на ASDM (6.3) имаше проблем, който не позволяваше добавянето на колектор към правилото за правилата, така че все пак трябваше да отида до конзолата.

Сега, ако всичко е наред, колекторът трябва да паднепакети: TCPDUMP ПОРТ 9995 TCPDUMP: Грандален изход потиска, използвайте -v или -VV за пълен протокол декодиране Слушане на EM0, тип връзка EN10MB (Ethernet), размер на улавяне 96 байта 18: 22: 36.909747 IP 192.168.4.1.56684 & gt; 192.168.4.7.9995: UDP, дължина 1436 18:22:37.012687 IP 192.168.4.1.56684 > 192.168.4.7.9995: UDP, дължина 1464 18:22:37.065782 IP 192.168.4.1.56684 > 192.168.4.7.9995: UDP, дължина 1432 . И папката, в която се записват файловете nfcapd, трябва да започне да нараства по размер.

Събиране на боклук

30 връзки в секунда (мрежа от 150 потребители) логът за 1 минута отнема около 2 MB. За да избегнете претрупването на диска, добавете nfexpire към командата crontab: /usr/local/bin/nfexpire -e -s -t Например, стартирането на nfexpire с опцията -t 2w ще изтрие всички файлове, по-стари от две седмици, а с -s 20g, най-старите файлове, така че общият им размер да е не повече от 20 GB. Тези опции могат да се използват заедно.

Обработка на данни

Има и уеб интерфейс към nfdump - NfSen, който може да рисува красиви графики.

Ако искате сами да обработвате данните, ще ви е необходим ключ -x на демона nfcapd - той ви позволява да стартирате програмата, когато следващият файл е готов. Например, написах php скрипт за обработка на изхода на nfdump и началният ми ред на nfcapd изглежда така: Моля, обърнете внимание, че командата е оградена в единични кавички и че %d и %f се предават като параметри на скрипта - това е съответно папката nfcapd и името на последния файл.

Оказа се много скъпо да регистрирам всеки пакет в базата данни, така че моят скрипт просто брои статистиката за всеки хост и протокол вбайта на всеки 10 минути. По този начин наблюдавам заразените машини и тези, които обичат да изтеглят канала на организацията, като изтеглят филми - сутринта получавам писмо от 20-те най-добри "рокери". Също така данните от nfdump допълват статистиката на прозрачния прокси сървър на Squid, който ще обслужва само 80-ия порт. Ако някой се нуждае от този скрипт като пример, можете да го изтеглите, но не очаквайте красив код :)

500 записа в секунда. Ако натоварването е много голямо, тогава ще започне да яде твърде много памет.