Jump to content
Калькуляторы

FastNetMon - программа для выявления входящих/исходящих атак

 

А в целом лучше спрашивать в официальной рассылке: https://groups.google.com/forum/#!forum/fastnetmon На офсайте тоже куча инфы: https://fastnetmon.com

 

Спасибо, Павел, все поднял, все работает!

Отлично! :)

 

SyJet, в версии FastNetMon Advanced это все имеется, обычные deb пакеты для Ubuntu 14.04 и много автоматики :) Версия FastNetMon Community не подразумевает подобных ограничений и поэтому скрипт - самый универсальный способ развертывания.

Share this post


Link to post
Share on other sites

pavel.odintsov так что, для нас местных жалкое подобие, а для забугорных прям адвенсид версия? ;-))))

Share this post


Link to post
Share on other sites

На бета-тест версии Advanced может записаться любой - никаких ограничений нету, разве что число мест в очереди - оно часто нулевое :) Я писал о бета тесте в рассылке почти полгода назад.

Share this post


Link to post
Share on other sites

Добрый день.

Поставил fastnetmon в режиме приема трафика по нетфлоу. Нетфлоу отдает CISCO 4510. Отдает точно - если вместо fastnetmon подставить flow-capture - то нетфлоу пишется в файл. А fastnetmon ничего не видит. Centos 7. Куда копать? Версия из гита.

Вот конфиг:

logging:local_syslog_logging = off

logging:remote_syslog_logging = off

logging:remote_syslog_server = 10.10.10.10

logging:remote_syslog_port = 514

enable_ban = off

process_incoming_traffic = on

process_outgoing_traffic = off

ban_details_records_count = 500

ban_time = 1900

unban_only_if_attack_finished = on

enable_subnet_counters = on

networks_list_path = /etc/networks_list

white_list_path = /etc/networks_whitelist

check_period = 1

enable_connection_tracking = off

ban_for_pps = on

ban_for_bandwidth = on

ban_for_flows = on

threshold_pps = 20000

threshold_mbps = 1000

threshold_flows = 3500

threshold_tcp_mbps = 100000

threshold_udp_mbps = 100000

threshold_icmp_mbps = 100000

threshold_tcp_pps = 100000

threshold_udp_pps = 100000

threshold_icmp_pps = 100000

ban_for_tcp_bandwidth = off

ban_for_udp_bandwidth = off

ban_for_icmp_bandwidth = off

ban_for_tcp_pps = off

ban_for_udp_pps = off

ban_for_icmp_pps = off

mirror = off

pfring_sampling_ratio = 1

mirror_netmap = off

mirror_snabbswitch = off

mirror_afpacket = off

interfaces = enp6s0f1

netmap_sampling_ratio = 1

netmap_read_packet_length_from_ip_header = off

pcap = off

netflow = on

sflow = off

enable_pf_ring_zc_mode = off

interfaces = enp6s0f1,enp7s0

average_calculation_time = 60

average_calculation_time_for_subnets = 60

netflow_port = 2055

netflow_host = 10.0.0.20

netflow_sampling_ratio = 1

netflow_divide_counters_on_interval_length = on

sflow_port = 6343

sflow_host = 0.0.0.0

notify_script_path = /usr/local/bin/notify_about_attack.sh

notify_script_pass_details = on

collect_attack_pcap_dumps = on

process_pcap_attack_dumps_with_dpi = off

redis_enabled = off

redis_port = 6379

redis_host = 127.0.0.1

redis_prefix = mydc1

mongodb_enabled = off

mongodb_host = localhost

mongodb_port = 27017

mongodb_database_name = fastnetmon

pfring_hardware_filters_enabled = off

exabgp = off

exabgp_command_pipe = /var/run/exabgp.cmd

exabgp_community = 65001:666

exabgp_next_hop = 10.0.3.114

exabgp_announce_host = on

exabgp_announce_whole_subnet = off

exabgp_flow_spec_announces = off

gobgp = off

gobgp_next_hop = 0.0.0.0

gobgp_announce_host = on

gobgp_announce_whole_subnet = off

graphite = off

graphite_host = 127.0.0.1

graphite_port = 2003

graphite_prefix = fastnetmon

monitor_local_ip_addresses = off

hostgroup = my_hosts:10.10.10.221/32,10.10.10.222/32

my_hosts_enable_ban = off

my_hosts_ban_for_pps = off

my_hosts_ban_for_bandwidth = off

my_hosts_ban_for_flows = off

my_hosts_threshold_pps = 20000

my_hosts_threshold_mbps = 1000

my_hosts_threshold_flows = 3500

pid_path = /var/run/fastnetmon.pid

cli_stats_file_path = /tmp/fastnetmon.dat

enable_api = off

sort_parameter = packets

max_ips_in_list = 7

Share this post


Link to post
Share on other sites

martin74, конфиг выглядит верно, попробуйте запустить его вот так: DUMP_ALL_PACKETS=yes ./fastnetmon Ну и фаерволл проверить :)

Share this post


Link to post
Share on other sites

Получилось что то такое. Значит netflow неправильно сформировано?

 

 

2017-01-26 07:44:42,057 [iNFO] Logger initialized!

2017-01-26 07:44:42,058 [WARN] We add subnet 10.10.10.221/32 to host group my_hosts

2017-01-26 07:44:42,058 [WARN] We add subnet 10.10.10.222/32 to host group my_hosts

2017-01-26 07:44:42,058 [iNFO] We have created host group my_hosts with 2 subnets

2017-01-26 07:44:42,058 [iNFO] We will read ban settings for my_hosts

2017-01-26 07:44:42,058 [ERROR] We can't find notify script /usr/local/bin/notify_about_attack.sh

2017-01-26 07:44:42,061 [iNFO] Read configuration file

2017-01-26 07:44:42,062 [iNFO] We loaded 5 networks from networks file

2017-01-26 07:44:42,062 [iNFO] Totally we have 5 IPv4 subnets

2017-01-26 07:44:42,062 [iNFO] Totally we have 0 IPv6 subnets

2017-01-26 07:44:42,062 [iNFO] Total number of monitored hosts (total size of all networks): 17920

2017-01-26 07:44:42,062 [iNFO] We need 10 MB of memory for storing counters for your networks

2017-01-26 07:44:42,062 [iNFO] I will allocate 4096 records for subnet 2137694 cidr mask: 20

2017-01-26 07:44:42,066 [iNFO] I will allocate 4096 records for subnet 11562416 cidr mask: 20

2017-01-26 07:44:42,069 [iNFO] I will allocate 8192 records for subnet 14708144 cidr mask: 19

2017-01-26 07:44:42,077 [iNFO] I will allocate 1024 records for subnet 9183673 cidr mask: 22

2017-01-26 07:44:42,077 [iNFO] I will allocate 512 records for subnet 2408641 cidr mask: 23

2017-01-26 07:44:42,077 [iNFO] We start total zerofication of counters

2017-01-26 07:44:42,078 [iNFO] We finished zerofication

2017-01-26 07:44:42,078 [iNFO] We loaded 5 IPv4 subnets to our in-memory list of networks

2017-01-26 07:44:42,078 [iNFO] Run banlist cleanup thread, we will awake every 60 seconds

2017-01-26 07:44:42,078 [iNFO] netflow plugin started

2017-01-26 07:44:42,078 [iNFO] netflow: We will listen on 1 ports

2017-01-26 07:44:42,078 [iNFO] netflow plugin will listen on 10.0.0.20:2055 udp port

2017-01-26 07:44:42,242 [iNFO] Dump: 2017-01-26 07:44:42.240984852 146.66.156.196:27030 > 94.158.37.129:9692 protocol: udp frag: 0 packets: 0 size: 0 bytes ttl: 0 sample ratio: 1

 

2017-01-26 07:44:42,242 [iNFO] Dump: 2017-01-26 07:44:42.240984852 183.87.48.193:2599 > 193.192.37.3:51413 protocol: tcp flags: - frag: 0 packets: 0 size: 0 bytes ttl: 0 sample ratio: 1

 

2017-01-26 07:44:42,242 [iNFO] Dump: 2017-01-26 07:44:42.240984852 185.38.12.37:80 > 94.158.32.204:4475 protocol: tcp flags: - frag: 0 packets: 0 size: 0 bytes ttl: 0 sample ratio: 1

 

2017-01-26 07:44:42,242 [iNFO] Dump: 2017-01-26 07:44:42.240984852 216.147.182.212:31608 > 94.158.35.27:17922 protocol: udp frag: 0 packets: 0 size: 0 bytes ttl: 0 sample ratio: 1

 

2017-01-26 07:44:42,242 [iNFO] Dump: 2017-01-26 07:44:42.240984852 91.221.248.21:63916 > 94.158.43.45:49412 protocol: udp frag: 0 packets: 0 size: 0 bytes ttl: 0 sample ratio: 1

Share this post


Link to post
Share on other sites

Поправили настройки нетфлоу на кошке, заработало.

Share this post


Link to post
Share on other sites

На бета-тест версии Advanced может записаться любой - никаких ограничений нету, разве что число мест в очереди - оно часто нулевое :) Я писал о бета тесте в рассылке почти полгода назад.

Где записывают в тестеры?

Share this post


Link to post
Share on other sites

Тут https://docs.google.com/forms/d/1oXMzkzVwj5j5lNrbe-kNdGxmohcaOxmwdfgj9BHaRbQ эта версия планируется как коммерческая. Бета тест сейчас идет уже ориентировочно 4й месяц и в апреле, скорее всего, закончим набор уже.

 

Чтобы сэкономить время сразу скажу - что нужна машина (гипервизор либо физическая) с Ubuntu 14.04 64 бита и привязанный к машине IP адрес, после этого поддержка с радостью выдаст лицензию на IP и вышлет инструкции по установке.

Share this post


Link to post
Share on other sites

Тут https://docs.google.com/forms/d/1oXMzkzVwj5j5lNrbe-kNdGxmohcaOxmwdfgj9BHaRbQ эта версия планируется как коммерческая. Бета тест сейчас идет уже ориентировочно 4й месяц и в апреле, скорее всего, закончим набор уже.

 

Чтобы сэкономить время сразу скажу - что нужна машина (гипервизор либо физическая) с Ubuntu 14.04 64 бита и привязанный к машине IP адрес, после этого поддержка с радостью выдаст лицензию на IP и вышлет инструкции по установке.

Павел подскажите такие нюансы.

1. Допустим в networks_list указана подсеть с маской /18, можно ли в конфиге описать группы узлов с маской /32, /31?

2. Я правильно понимаю логику, если подсеть не описана в networks_list, действия над ней ни какие не применяются?

3. Если подсеть находиться в networks_whitelist, FNM не будет производить блокировку узлов а на почту он будет присылать письмо?

 

P.S. После того как заполнил форму для участия в тесте FNM 2, мне прислали письмо, я поднял ВМ, ответил на на письмо, вписал в ответ IP адрес, но пока что на почте глухо.

Share this post


Link to post
Share on other sites

Добрый день!)

 

Насколько я помню, тикет отвечен был на следующий день. Но вроде бы не все вопросы там быали заданы.

 

Но на всякий случай дополню:

1) Можно! Нужно! Но только в Advanced версии, там полностью другая логика хост-групп

2) Именно так, она считается как "проходящий трафик"

3) Именно так, никаких действий.

Share this post


Link to post
Share on other sites

Всем привет!

 

Активно работаем над добавлением проекта в пакетную базу Debian! Уже сейчас можно собрать (https://github.com/pavel-odintsov/fastnetmon/issues/658#issuecomment-300933949) FNM с зависимостями только из репозиториев на Debian 9! :)

Share this post


Link to post
Share on other sites

Небольшая непонятка.

Есть fastnetmon запущенный в режиме mirror. Включен 10Г портом в cisco 4500, на порт миррорится трафик с трех 10Г портов аплинков. Суммарно вижу 3Г входящего и 500М исходящего трафика на графиках портов.

 

IPs ordered by: packets

Incoming traffic 142576 pps 334 mbps 0 flows

 

Outgoing traffic 131192 pps 1798 mbps 0 flows

 

Internal traffic 0 pps 0 mbps

 

Other traffic 930680 pps 4129 mbps

 

Screen updated in: 0 sec 648 microseconds

Traffic calculated in: 0 sec 3672 microseconds

Total amount of IPv6 packets related to our own network: 0

Not processed packets: 0 pps

Packets received: 6662887658

Packets dropped: 80008614

Packets dropped: 1.2 %

 

 

Смотрю на эти цифры - и не понимаю.

Что такое other traffic? Сейчас в /etc/networks_list описаны только ipv4 сети, ipv6 не описывал.

Но все равно цифры не совпадают. Что я сделал неправильно?

Share this post


Link to post
Share on other sites

Вот думаю что делаю не так? библиотека есть.

 

 

Thank you so much!

Update package manager cache
Install json library
Download archive
Uncompress it
Build it
Install it
Download nDPI
Configure nDPI
Build and install nDPI
Add ndpi to ld.so.conf
Download Luajit
Unpack Luajit
Build and install Luajit
Install LUA lpeg module
Download archive
Install lpeg library
Install LUA json module
Download archive
Install it
Download hiredis
Build hiredis
Add hiredis to ld.so.conf
Download mongo
Build mongo client


Download log4cpp sources
Unpack log4cpp sources
Build log4cpp
Add log4cpp to ld.so.conf
Install FastNetMon dependency list
Clone FastNetMon repo
-- The C compiler identification is Clang 3.8.0
-- The CXX compiler identification is Clang 3.8.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/CC
-- Check for working CXX compiler: /usr/bin/CC -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- C++ compilation flags: -O3 -DNDEBUG
-- Setting build type to Release as none was specified.
-- We will enable nDPI support
-- We will enable LuaJIT support
CMake Error at CMakeLists.txt:226 (message):
 Could not find luajit library


-- Configuring incomplete, errors occurred!
See also "/tmp/fastnetmon.build.dir.n1iHRrE3cA/fastnetmon/src/build/CMakeFiles/CMakeOutput.log".
make: no target to make.

make: stopped in /tmp/fastnetmon.build.dir.n1iHRrE3cA/fastnetmon/src/build
Can't build fastnetmon! at fastnetmon_install.pl line 1505, <STDIN> line 1.
root@netmon01:/usr/local/src # 
root@netmon01:/usr/local/src # 
root@netmon01:/usr/local/src # pkg info|grep lua
luajit-2.0.5                   Just-In-Time Compiler for Lua
root@netmon01:/usr/local/src # 

 

FreeBSD netmon0 11.0-RELEASE-p10 FreeBSD 11.0-RELEASE-p10 #0: Sun Jul  9 23:57:33 EEST 2017     root@netmon0:/usr/obj/usr/src/sys/NETMAP2  amd64

Share this post


Link to post
Share on other sites

Небольшая непонятка.

Есть fastnetmon запущенный в режиме mirror. Включен 10Г портом в cisco 4500, на порт миррорится трафик с трех 10Г портов аплинков. Суммарно вижу 3Г входящего и 500М исходящего трафика на графиках портов.

 

IPs ordered by: packets

Incoming traffic 142576 pps 334 mbps 0 flows

 

Outgoing traffic 131192 pps 1798 mbps 0 flows

 

Internal traffic 0 pps 0 mbps

 

Other traffic 930680 pps 4129 mbps

 

Screen updated in: 0 sec 648 microseconds

Traffic calculated in: 0 sec 3672 microseconds

Total amount of IPv6 packets related to our own network: 0

Not processed packets: 0 pps

Packets received: 6662887658

Packets dropped: 80008614

Packets dropped: 1.2 %

 

 

Смотрю на эти цифры - и не понимаю.

Что такое other traffic? Сейчас в /etc/networks_list описаны только ipv4 сети, ipv6 не описывал.

Но все равно цифры не совпадают. Что я сделал неправильно?

 

other трафик - тот, что не принадлежит сетям из networks_list. Туда нужно прописать все сети, FNM использует для определения направления long prefix match по этим сетям. internal trafic - это когда и src и dst - Ваши сети :)

 

Вот думаю что делаю не так? библиотека есть.

 

 

Thank you so much!

Update package manager cache
Install json library
Download archive
Uncompress it
Build it
Install it
Download nDPI
Configure nDPI
Build and install nDPI
Add ndpi to ld.so.conf
Download Luajit
Unpack Luajit
Build and install Luajit
Install LUA lpeg module
Download archive
Install lpeg library
Install LUA json module
Download archive
Install it
Download hiredis
Build hiredis
Add hiredis to ld.so.conf
Download mongo
Build mongo client


Download log4cpp sources
Unpack log4cpp sources
Build log4cpp
Add log4cpp to ld.so.conf
Install FastNetMon dependency list
Clone FastNetMon repo
-- The C compiler identification is Clang 3.8.0
-- The CXX compiler identification is Clang 3.8.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/CC
-- Check for working CXX compiler: /usr/bin/CC -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- C++ compilation flags: -O3 -DNDEBUG
-- Setting build type to Release as none was specified.
-- We will enable nDPI support
-- We will enable LuaJIT support
CMake Error at CMakeLists.txt:226 (message):
 Could not find luajit library


-- Configuring incomplete, errors occurred!
See also "/tmp/fastnetmon.build.dir.n1iHRrE3cA/fastnetmon/src/build/CMakeFiles/CMakeOutput.log".
make: no target to make.

make: stopped in /tmp/fastnetmon.build.dir.n1iHRrE3cA/fastnetmon/src/build
Can't build fastnetmon! at fastnetmon_install.pl line 1505, <STDIN> line 1.
root@netmon01:/usr/local/src # 
root@netmon01:/usr/local/src # 
root@netmon01:/usr/local/src # pkg info|grep lua
luajit-2.0.5                   Just-In-Time Compiler for Lua
root@netmon01:/usr/local/src # 

 

FreeBSD netmon0 11.0-RELEASE-p10 FreeBSD 11.0-RELEASE-p10 #0: Sun Jul  9 23:57:33 EEST 2017     root@netmon0:/usr/obj/usr/src/sys/NETMAP2  amd64

 

FreeBSD надо ставить из портов - это проще и круче :) Стандартный инсталлер со Фрей не работает для 1/1/3 версии. Тем более, там та же самая версия: https://www.freshports.org/net-mgmt/fastnetmon/

Share this post


Link to post
Share on other sites

Пробую Linux.

У Вас как-то задвоение секции: interfaces

 

# use PCI-e addresses here instead of OS device names. You can find them in "lspci" output                                                                                                                                                         
interfaces = eth1,eth2                                                                                                                                                                                                                             

# Port mirroring sampling ratio                                                                                                                                                                                                                    
netmap_sampling_ratio = 1                                                                                                                                                                                                                          

# This option should be enabled if you are using Juniper with mirroring of the first X bytes of packet: maximum-packet-length 110;                                                                                                                 
netmap_read_packet_length_from_ip_header = off                                                                                                                                                                                                     

# Pcap mode, very slow and thus not suitable for production                                                                                                                                                                                        
pcap = off                                                                                                                                                                                                                                         
# Netflow capture method with v5, v9 and IPFIX support                                                                                                                                                                                             
netflow = on                                                                                                                                                                                                                                       
# sFLOW capture suitable for switches                                                                                                                                                                                                              
sflow = on                                                                                                                                                                                                                                         

# PF_RING configuration                                                                                                                                                                                                                            
# If you have a license for PF_RING ZC, enable this mode and it might achieve wire speed for 10GE                                                                                                                                                  
enable_pf_ring_zc_mode = off                                                                                                                                                                                                                       

# Configuration for netmap, mirror, pcap modes                                                                                                                                                                                                     
# For pcap and PF_RING we could specify "any"                                                                                                                                                                                                      
# For netmap and PF_RING we could specify multiple interfaces = eth0,eth1,eth2                                                                                                                                                                     
interfaces = eth0,eth1,eth2 

Share this post


Link to post
Share on other sites

В оригинальном репо только один блок interfaces https://raw.githubusercontent.com/pavel-odintsov/fastnetmon/master/src/fastnetmon.conf :) Не знаю откуда второй взялся - пиратский наверное :)

Edited by pavel.odintsov

Share this post


Link to post
Share on other sites

Мне кажется там что-то с парсером, в любом случае сделаю еще тест на чистой установке.

Пока собственно возник еще вопрос, кручу активно graphana с influxdb и вот не понимаю, в influxdb

select * from networks limit 100

 

1499797051000000000 fastnetmon 9_2_7_0_22   outgoing  pps      18703
1499797051000000000 fastnetmon 18_2_15_0_24  outgoing  bps      7.760928e+06
1499797051000000000 fastnetmon 18_2_15_0_24  outgoing  bps      0
1499797051000000000 fastnetmon 18_2_15_0_24  outgoing  bps      1.34079088e+08
1499797051000000000 fastnetmon 15_3_18_0_23  outgoing  bps      0
1499797051000000000 fastnetmon 15_3_19_0_23  incoming  bps      0
1499797051000000000 fastnetmon 15_3_19_0_23  incoming  pps      0
1499797051000000000 fastnetmon 18_2_15_0_24  incoming  pps      1861
1499797051000000000 fastnetmon 18_2_15_0_24  incoming  bps      2.851736e+06

 

можно ли как-то сделать для cird разделитель "." а не "_" ?

 

И не совсем понимаю, везде информация по внешнему виду БД не много противоричивая, такое чувство что в какой-то момент структура БД в influxdb поменялась для fastnetmon. Особенно это видно по шаблонам которые лежат в graphana dashboard, не один кроме community из коробки не работает.

> show measurements
name: measurements
name
----
hosts
networks
total

> 

 

Скажите, такие measurements правильно? в БД graphite

Edited by Megas

Share this post


Link to post
Share on other sites

По графане не помогу, с графитом она немного своеобразная, я не умею:(

Share this post


Link to post
Share on other sites

да не, смотрю в графит тоже, там тоже все IP через подчеркивание а не точку, вот это и напрягает, не пойму как перевязать возможность ввода адреса через точку в grafana чтобы он делал выборку через подчеркивание.

А можно ли в самом fastnetmon внедрить опцию которая будет менять разделитель?

Share this post


Link to post
Share on other sites

Проблема в том, что разделитель точка недопустим в Графите. Так как он разедляет разделы (папки), поэтому и "_".

Share this post


Link to post
Share on other sites

Спасибо, думаю тогда что-то придумаю по другому, уже почти закончил интеграцию всего этого добра, хотя знаний с influx явно не хватает.

 

Павел, подскажите пожалуйста, можно ли в письмо об атаке включить информацию согласно какому правилу было срабатывание?

Share this post


Link to post
Share on other sites

В фич риквестах есть отображение этой информации, в Advanced версии даже печатаем в логах, но в письмах-уведомлениях не отображается пока нигде :(

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now