All Projects → mbolli → Nfsen Ng

mbolli / Nfsen Ng

Licence: apache-2.0
Responsive NetFlow visualizer built on top of nfdump tools.

Projects that are alternatives of or similar to Nfsen Ng

Workbase
Grakn Workbase (Knowledge IDE)
Stars: ✭ 106 (-5.36%)
Mutual labels:  network, network-analysis
Scapy
Scapy: the Python-based interactive packet manipulation program & library. Supports Python 2 & Python 3.
Stars: ✭ 6,932 (+6089.29%)
Mutual labels:  network, network-analysis
Hellraiser
Vulnerability scanner using Nmap for scanning and correlating found CPEs with CVEs.
Stars: ✭ 413 (+268.75%)
Mutual labels:  network, network-analysis
Frontendwingman
Frontend Wingman, Learn frontend faster!
Stars: ✭ 315 (+181.25%)
Mutual labels:  network, network-analysis
Dna
Discourse Network Analyzer (DNA)
Stars: ✭ 73 (-34.82%)
Mutual labels:  network, network-analysis
Cocoadebug
iOS Debugging Tool 🚀
Stars: ✭ 3,769 (+3265.18%)
Mutual labels:  network, network-analysis
Nfstream
NFStream: a Flexible Network Data Analysis Framework.
Stars: ✭ 622 (+455.36%)
Mutual labels:  network-analysis, netflow
Ivre
Network recon framework, published by @cea-sec & @ANSSI-FR. Build your own, self-hosted and fully-controlled alternatives to Shodan / ZoomEye / Censys and GreyNoise, run your Passive DNS service, collect and analyse network intelligence from your sensors, and much more!
Stars: ✭ 2,331 (+1981.25%)
Mutual labels:  network, network-analysis
Graphrole
Automatic feature extraction and node role assignment for transfer learning on graphs (ReFeX & RolX)
Stars: ✭ 38 (-66.07%)
Mutual labels:  network, network-analysis
Bmon
bandwidth monitor and rate estimator
Stars: ✭ 787 (+602.68%)
Mutual labels:  network, network-analysis
graylog-plugin-netflow
[DEPRECATED] Graylog NetFlow plugin
Stars: ✭ 35 (-68.75%)
Mutual labels:  netflow, network-analysis
Dynamite Nsm
DynamiteNSM is a free Network Security Monitor developed by Dynamite Analytics to enable network visibility and advanced cyber threat detection
Stars: ✭ 92 (-17.86%)
Mutual labels:  network-analysis, netflow
Deepgraph
Analyze Data with Pandas-based Networks. Documentation:
Stars: ✭ 232 (+107.14%)
Mutual labels:  network, network-analysis
Ntopng
Web-based Traffic and Security Network Traffic Monitoring
Stars: ✭ 4,313 (+3750.89%)
Mutual labels:  network, netflow
Netgraph
Drawing utilities for publication quality plots of networks
Stars: ✭ 227 (+102.68%)
Mutual labels:  network, network-analysis
Batfish
Batfish is a network configuration analysis tool that can find bugs and guarantee the correctness of (planned or current) network configurations. It enables network engineers to rapidly and safely evolve their network, without fear of outages or security breaches.
Stars: ✭ 592 (+428.57%)
Mutual labels:  network, network-analysis
Joincap
Merge multiple pcap files together, gracefully.
Stars: ✭ 159 (+41.96%)
Mutual labels:  network, network-analysis
Programming Languages Influence
Code to retrieve data for the programming languages influence visualizations from Freebase
Stars: ✭ 171 (+52.68%)
Mutual labels:  network, network-analysis
Vflow
Enterprise Network Flow Collector (IPFIX, sFlow, Netflow) from Verizon Media
Stars: ✭ 776 (+592.86%)
Mutual labels:  network, netflow
Daggy
Daggy - Data Aggregation Utility. Open source, free, cross-platform, server-less, useful utility for remote or local data aggregation and streaming
Stars: ✭ 91 (-18.75%)
Mutual labels:  network, network-analysis

nfsen-ng

GitHub license GitHub issues Donate a beer

nfsen-ng is an in-place replacement for the ageing nfsen.

Used components

TOC

Installation

Ubuntu 18.04 LTS:

# run following commands as root
# enable universe repository
add-apt-repository universe && sudo apt update
# install packages
apt install apache2 php7.2 php7.2-dev libapache2-mod-php7.2 pkg-config nfdump rrdtool librrd-dev
# enable apache modules
a2enmod rewrite deflate headers expires
# install rrd library for php
pecl install rrd 
# create rrd library mod entry for php
echo "extension=rrd.so" > /etc/php/7.2/mods-available/rrd.ini
# enable php mod
phpenmod rrd
# configure virtual host to read .htaccess files
vim /etc/apache2/apache2.conf # set AllowOverride All for /var/www
# restart httpd
service apache2 restart
# install nfsen-ng
cd /var/www/html # or wherever
git clone https://github.com/mbolli/nfsen-ng
chown -R www-data:www-data .
chmod +x nfsen-ng/backend/cli.php
# next step: configuration

Ubuntu 20.04 LTS:

# run following commands as root
# install packages
apt install apache2 git nfdump pkg-config php7.4 php7.4-dev libapache2-mod-php7.4 rrdtool librrd-dev
# enable apache modules
a2enmod rewrite deflate headers expires
# install rrd library for php
pecl install rrd 
# create rrd library mod entry for php
echo "extension=rrd.so" > /etc/php/7.4/mods-available/rrd.ini
# enable php mod
phpenmod rrd
# configure virtual host to read .htaccess files
vi /etc/apache2/apache2.conf # set AllowOverride All for /var/www
# restart apache web server
systemctl restart apache2
# install nfsen-ng
cd /var/www/html # or wherever
git clone https://github.com/mbolli/nfsen-ng
chown -R www-data:www-data .
chmod +x nfsen-ng/backend/cli.php
# next step: configuration

CentOS 7:

# run following commands as root
# update packages
yum update
# enable EPEL repo
yum -y install epel-release
# install yum utils
yum install yum-utils
# install remi release
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# enable the repository for PHP 7.2
yum-config-manager --enable remi-php72
# install packages
yum install git httpd mod_php nfdump php72 php72-php-devel php-devel php-pear php-pecl-rrd rrdtool rrdtool-devel
# configure virtual host to read .htaccess files
vim /etc/httpd/conf/httpd.conf # set AllowOverride All for /var/www/html
# start httpd service
systemctl start httpd
# enable httpd service
systemctl enable httpd
# install nfsen-ng
cd /var/www/html # or wherever
git clone https://github.com/mbolli/nfsen-ng
chown -R apache:apache .
chmod +x nfsen-ng/backend/cli.php
# next step: configuration

CentOS 8:

# run following commands as root
# update packages
dnf update
# enable EPEL repo and update epel-release package
dnf -y install epel-release && dnf -y update epel-release
# install dnf-utils
dnf -y install dnf-utils
# enable PowerTools repo
dnf config-manager --set-enabled PowerTools
# install packages
dnf -y install git httpd make mod_php nfdump php php-devel php-json php-pear rrdtool rrdtool-devel
# install rrd library for php
pecl install rrd
# create rrd library mod entry for php
echo "extension=rrd.so" > /etc/php.d/rrd.ini
# configure virtual host to read .htaccess files
vim /etc/httpd/conf/httpd.conf # set AllowOverride All for /var/www/html
# start httpd service
systemctl start httpd
# enable httpd service
systemctl enable httpd
# install nfsen-ng
cd /var/www/html # or wherever
git clone https://github.com/mbolli/nfsen-ng
chown -R apache:apache .
chmod +x nfsen-ng/backend/cli.php
# next step: configuration

Configuration

Note: nfsen-ng expects the profiles-data folder structure to be PROFILES_DATA_PATH/PROFILE/SOURCE/YYYY/MM/DD/nfcapd.YYYYMMDDHHII, e.g. /var/nfdump/profiles_data/live/source1/2018/12/01/nfcapd.201812010225.

The default settings file is backend/settings/settings.php.dist. Copy it to backend/settings/settings.php and start modifying it. Example values are in italic:

  • general
    • ports: (array(80, 23, 22, ...)) The ports to examine. Note: If you use RRD as datasource and want to import existing data, you might keep the number of ports to a minimum, or the import time will be measured in moon cycles...
    • sources: (array('source1', ...)) The sources to scan.
    • db: (RRD) The name of the datasource class (case-sensitive).
  • frontend
    • reload_interval: Interval in seconds between graph reloads.
  • nfdump
    • binary: (/usr/bin/nfdump) The location of your nfdump executable
    • profiles-data: (/var/nfdump/profiles_data) The location of your nfcapd files
    • profile: (live) The profile folder to use
    • max-processes: (1) The maximum number of concurrently running nfdump processes. Note: Statistics and aggregations can use lots of system resources, even to aggregate one week of data might take more than 15 minutes. Put this value to > 1 if you want nfsen-ng to be usable while running another query.
  • db If the used data source needs additional configuration, you can specify it here, e.g. host and port.
  • log
    • priority: (LOG_INFO) see other possible values at [http://php.net/manual/en/function.syslog.php]

CLI

The command line interface is used to initially scan existing nfcapd.* files, or to administer the daemon.

Usage:

./cli.php [ options ] import

or for the daemon

./cli.php start|stop|status

  • Options:

    • -v Show verbose output
    • -p Import ports data as well Note: Using RRD this will take quite a bit longer, depending on the number of your defined ports.
    • -ps Import ports per source as well Note: Using RRD this will take quite a bit longer, depending on the number of your defined ports.
    • -f Force overwriting database and start fresh
  • Commands:

    • import Import existing nfdump data to nfsen-ng. Note: If you have existing nfcapd files, better do this overnight.
    • start Start the daemon for continuous reading of new data
    • stop Stop the daemon
    • status Get the daemon's status
  • Examples:

    • ./cli.php -f import Imports fresh data for sources

    • ./cli.php -f -p -ps import Imports all data

    • ./cli.php start Starts the daemon

API

The API is used by the frontend to retrieve data.

/api/config

  • URL /api/config

  • Method: GET

  • URL Params none

  • Success Response:

    • Code: 200 Content:
      {
        "sources": [ "gate", "swi6" ],
        "ports": [ 80, 22, 23 ],
        "stored_output_formats": [], 
        "stored_filters": [],
        "daemon_running": true
      }
      
  • Error Response:

    • Code: 400 BAD REQUEST Content:
      {"code": 400, "error": "400 - Bad Request. Probably wrong or not enough arguments."}
      

    OR

    • Code: 404 NOT FOUND Content:
      {"code": 404, "error": "400 - Not found. "}
      
  • Sample Call:

    curl localhost/nfsen-ng/api/config
    

/api/graph

  • URL /api/graph?datestart=1490484000&dateend=1490652000&type=flows&sources[0]=gate&protocols[0]=tcp&protocols[1]=icmp&display=sources

  • Method:

    GET

  • URL Params

    • datestart=[integer] Unix timestamp
    • dateend=[integer] Unix timestamp
    • type=[string] Type of data to show: flows/packets/bytes
    • sources=[array]
    • protocols=[array]
    • ports=[array]
    • display=[string] can be sources, protocols or ports

    There can't be multiple sources and multiple protocols both. Either one source and multiple protocols, or one protocol and multiple sources.

  • Success Response:

    • Code: 200 Content:
      {"data": {
        "1490562300":[2.1666666667,94.396666667],
        "1490562600":[1.0466666667,72.976666667],...
      },"start":1490562300,"end":1490590800,"step":300,"legend":["swi6_flows_tcp","gate_flows_tcp"]}
      
  • Error Response:

    • Code: 400 BAD REQUEST
      Content: json {"code": 400, "error": "400 - Bad Request. Probably wrong or not enough arguments."}

    OR

    • Code: 404 NOT FOUND
      Content: json {"code": 404, "error": "400 - Not found. "}
  • Sample Call:

    curl -g "http://localhost/nfsen-ng/api/graph?datestart=1490484000&dateend=1490652000&type=flows&sources[0]=gate&protocols[0]=tcp&protocols[1]=icmp&display=sources"
    

/api/flows

  • URL /api/flows?datestart=1482828600&dateend=1490604300&sources[0]=gate&sources[1]=swi6&filter=&limit=100&aggregate=srcip&sort=&output[format]=auto

  • Method:

    GET

  • URL Params

    • datestart=[integer] Unix timestamp
    • dateend=[integer] Unix timestamp
    • sources=[array]
    • filter=[string] pcap-syntaxed filter
    • limit=[int] max. returned rows
    • aggregate=[string] can be bidirectional or a valid nfdump aggregation string (e.g. srcip4/24, dstport), but not both at the same time
    • sort=[string] (will probably cease to exist, as ordering is done directly in aggregation) e.g. tstart
    • output=[array] can contain [format] = auto|line|long|extended and [IPv6]
  • Success Response:

    • Code: 200 Content:
      [["ts","td","sa","da","sp","dp","pr","ipkt","ibyt","opkt","obyt"],
      ["2017-03-27 10:40:46","0.000","85.105.45.96","0.0.0.0","0","0","","1","46","0","0"],
      ...
      
  • Error Response:

    • Code: 400 BAD REQUEST
      Content: json {"code": 400, "error": "400 - Bad Request. Probably wrong or not enough arguments."}

    OR

    • Code: 404 NOT FOUND
      Content: json {"code": 404, "error": "400 - Not found. "}
  • Sample Call:

    curl -g "http://localhost/nfsen-ng/api/flows?datestart=1482828600&dateend=1490604300&sources[0]=gate&sources[1]=swi6&filter=&limit=100&aggregate[]=srcip&sort=&output[format]=auto"
    

/api/stats

  • URL /api/stats?datestart=1482828600&dateend=1490604300&sources[0]=gate&sources[1]=swi6&for=dstip&filter=&top=10&limit=100&aggregate[]=srcip&sort=&output[format]=auto

  • Method:

    GET

  • URL Params

    • datestart=[integer] Unix timestamp
    • dateend=[integer] Unix timestamp
    • sources=[array]
    • filter=[string] pcap-syntaxed filter
    • top=[int] return top N rows
    • for=[string] field to get the statistics for. with optional ordering field as suffix, e.g. ip/flows
    • limit=[string] limit output to records above or below of limit e.g. 500K
    • output=[array] can contain [IPv6]
  • Success Response:

    • Code: 200 Content:
      [
          ["Packet limit: > 100 packets"],
          ["ts","te","td","pr","val","fl","flP","ipkt","ipktP","ibyt","ibytP","ipps","ipbs","ibpp"],
          ["2017-03-27 10:38:20","2017-03-27 10:47:58","577.973","any","193.5.80.180","673","2.7","676","2.5","56581","2.7","1","783","83"],
          ...
      ]
      
  • Error Response:

    • Code: 400 BAD REQUEST
      Content: json {"code": 400, "error": "400 - Bad Request. Probably wrong or not enough arguments."}

    OR

    • Code: 404 NOT FOUND
      Content: json {"code": 404, "error": "400 - Not found. "}
  • Sample Call:

    curl -g "http://localhost/nfsen-ng/api/stats?datestart=1482828600&dateend=1490604300&sources[0]=gate&sources[1]=swi6&for=dstip&filter=&top=10&limit=100&aggregate[]=srcip&sort=&output[format]=auto"
    

More endpoints to come:

  • /api/graph_stats
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].