NfSen paigaldamine
Sissejuhatus
NfSen tarkvara kasutatakse sellistel eesmärkidel
- netflow kogumise juhtimine - nfsend deemon
- netflow analüüs - NfSen veebiliides
- netflow analüüsil põhinevate alteride väljastamine - nfsend deemon
NfSen paigaldamine operatsioonisüsteemile Debian
Tundub, et sarnaselt toimub tarkvara paigaldamine
- Debian v. 6
- Debian v. 7
- Ubuntu v. 12.04
- Ubuntu v. 14.04
netflow koguja ettevalmistamine
NfSen tarkvara juhib iseseisvalt nfcapd deemonit, st netflow koguja ettevalmistamise osas piisab nfdump tarkvara paigaldamisest
# apt-get install nfdump
kusjuures on oluline jälgida, et see sisaldaks mh selliseid utiliite (tundub, et sõltuvalt os versioonist vms võib olla mõni puudu, nt Debianis on puudu ja Ubuntus olemas)
- nfexpire
- nfprofile
NfSen analüsaatori ettevalmistamine
Paketihaldusest peavad olema paigaldatud
# apt-get install apache2 php5 librrds-perl libmailtools-perl libsocket6-perl
Lisada süsteemi kasutaja:grupp, kelle õigustes NfSen deemon käima hakkab, nt
# groupadd nfsen # useradd -g nfsen -m -d /opt/nfsen nfsen
Lisada kasutaja nfsen gruppi www-data, tulemusena nt
# id nfsen uid=1001(nfsen) gid=1001(nfsen) groups=1001(nfsen),33(www-data)
Enne installeerimist tuleb moodustada failisüsteemi vajalikud kataloogid, nt
- /var/www/nfsen - veebiliidese osa, vaikimisi Debiani dokumendijuurika alla eraldi kataloog
- /srv/nfsen - nfsen mootor
ja seadistada Apache veebiserver näitame NfSeni aadressil http://www.loomaaed.tartu.ee/nfsen/
<VirtualHost 192.168.1.4:80> ServerName www.loomaaed.tartu.ee ServerAdmin webmaster@loomaad.tartu.ee DocumentRoot /var/www ErrorLog /var/log/apache2/www.loomaaed.tartu.ee-error.log LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined CustomLog /var/log/apache2/www.loomaaed.tartu.ee-access.log combined <Directory /var/www/nfsen> Options None AllowOverRide None Order Allow,Deny Allow from All DirectoryIndex nfsen.php </Directory> </VirtualHost>
NfSen tarkvara saab kopeerida aadressil http://nfsen.sourceforge.net/ toodud lingilt, seejärel sobib ta pakkida lahti nt /usr/src kataloogis juurkasutajana
# cd /usr/src # cd nfsen-1.3.5/etc # tar zxf nfsen-1.3.5.tar.gz
Seejärel tuleb ettevalmistada sobiva sisuga NfSen seadistusfail /usr/src/nfsen-1.3.5/etc/nfsen.conf
# cp nfsen-dist.conf nfsen.conf
kus on oluline üle vaadata sellised parameetrid
- $BASEDIR = "/srv/nfsen"; - NfSen installatsioon asub selle kataloogi all, va veebiliidese osa
- $HTMLDIR = "/var/www/nfsen/"; - NfSen veebiliidese osa
- $PREFIX = '/usr/bin'; - sealt kataloogist leiab NfSen nfdump utiliidid (nfcapd jt)
- $USER = "nfsen"; - NfSen protsessid töötavad selle kasutajana, sh netflow kogumine nfcapd abil, mille NfSen käivitab)
- $WWWUSER = "www-data"; - NfSen tahab teada, millise kasutaja:grupiga veebiserveri kasutajaliidesest korraldused tulevad
- $WWWGROUP = "www-data";
Lisaks tuleb kirjeldada kus kuulatakse netflow allikaid
%sources = ( 'tulemyyr1' => { 'port' => '9995', 'col' => '#0000ff', 'type' => 'netflow' }, 'tulemyyr2' => { 'port' => '9996', 'col' => '#ff0000', 'type' => 'netflow' }, 'tulemyyr3' => { 'port' => '9997', 'col' => '#00ff00', 'type' => 'netflow' } );
NfSen tarkvara paigaldamiseks tuleb öelda juurkasutajana
# cd .. # ./install.pl etc/nfsen.conf
Tulemusena NfSen protsesse ei käivita, asjassepuutuvad failid (nfsen mootor ja veebiliides) paigutatakse seadistusfailis näidatud kataloogidesse.
NfSen käivitamine
Enne NfSen käivitamist tuleb veenduda, et Debiani paketihalduse nfdump deemon ei töötaks
# ps aux | grep nfdump root 10708 0.0 0.0 2916 572 ? S 10:36 0:00 /usr/bin/nfcapd -D -l /var/cache/nfdump
ning et ta edaspidi ei eksitaks, Debian puhul
# insserv -r nfdump
Ubuntu puhul
# update-rc.d -f nfdump remove Removing any system startup links for /etc/init.d/nfdump ... /etc/rc0.d/K20nfdump /etc/rc1.d/K20nfdump /etc/rc2.d/S20nfdump /etc/rc3.d/S20nfdump /etc/rc4.d/S20nfdump /etc/rc5.d/S20nfdump /etc/rc6.d/K20nfdump
NfSen käivitamiseks sobib öelda
# /srv/nfsen/bin/nfsen start Starting nfcapd: tulemyyr1[12931]. ... Starting nfsend.
Tulemusena on näha aadressil http://www.loomaaed.tartu.ee/nfsen/nfsen.php NfSen kasutajaliides. Töötavale NfSenile vastavad sellised protsessid
# ps aux | grep nfsen nfsen 4204 0.0 0.2 15592 1424 ? S 17:29 0:00 /usr/bin/nfcapd -w -D -I upstream1 -p 9995 -u nfsen -g www-data \ -B 200000 -S 1 -l /srv/nfsen/profiles-data/live/upstream1 -P /srv/nfsen/var/run/upstream1.pid nfsen 4207 0.0 0.1 15592 604 ? S 17:29 0:00 /usr/bin/nfcapd -w -D -I peer1 -p 9996 -u nfsen -g www-data \ -B 200000 -S 1 -l /srv/nfsen/profiles-data/live/peer1 -P /srv/nfsen/var/run/peer1.pid nfsen 4209 0.1 3.4 125680 17736 ? Ss 17:29 0:26 /usr/bin/perl -w /srv/nfsen/bin/nfsend nfsen 4210 0.0 2.4 120732 12388 ? Ss 17:29 0:12 /srv/nfsen/bin/nfsend-comm
Töö käigus moodustab NfSen nt selliseid faile
# find /srv/nfsen/ -mmin -1 /srv/nfsen/profiles-stat/live/flows-month.png /srv/nfsen/profiles-stat/live/flows-year.png .. /srv/nfsen/profiles-stat/live/peer1.rrd ... /srv/nfsen/profiles-data/live/peer1 /srv/nfsen/profiles-data/live/peer1/2009/12 /srv/nfsen/profiles-data/live/peer1/2009/12/28 /srv/nfsen/profiles-data/live/peer1/2009/12/28/nfcapd.200912280000 /srv/nfsen/profiles-data/live/peer1/nfcapd.current.4207
kus
- nfsend protsess moodustab .rrd faili mida kasutatakse graafiku esitamiseks avalehel
Sobib kasutada nt sellist kävitusskripti Debian Squeeze operatsioonisüsteemiga
# cat /etc/init.d/nfsen #!/bin/sh set -e ### BEGIN INIT INFO # Provides: nfsen # Required-Start: $local_fs $remote_fs $network $time # Required-Stop: $local_fs $remote_fs $network $time # Should-Start: $syslog # Should-Stop: $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: NfSen Server ### END INIT INFO #!/bin/bash case "$1" in start) echo "Starting NfSen server" /srv/nfsen/bin/nfsen start ;; stop) echo "Stopping NfSen server" /srv/nfsen/bin/nfsen stop ;; *) echo "Usage: /etc/init.d/nfsen {start|stop}" exit 1 esac exit 0
ja rc kataloogides linkide moodustamiseks öelda
# chmod 0755 /etc/init.d/nfsen
Debian puhul
# insserv nfsen
Ubuntu puhul
# update-rc.d nfsen defaults 91 Adding system startup for /etc/init.d/nfsen ... /etc/rc0.d/K91nfsen -> ../init.d/nfsen /etc/rc1.d/K91nfsen -> ../init.d/nfsen /etc/rc6.d/K91nfsen -> ../init.d/nfsen /etc/rc2.d/S91nfsen -> ../init.d/nfsen /etc/rc3.d/S91nfsen -> ../init.d/nfsen /etc/rc4.d/S91nfsen -> ../init.d/nfsen /etc/rc5.d/S91nfsen -> ../init.d/nfsen
NfSen seadistusfaili muutmine
NfSen seadistuse muudatus võib nt seisneda netflow allika juurdelisamises, selleks tuleb teha vastav muudatus nfsen.conf faili %sources väärtuses ning muudatuse kehtestamiseks öelda
# /srv/nfsen/bin/nfsen reconfig New sources to configure : moraal Continue? [y/n] y Add source(s): moraal: Add source 'moraal' Start nfcapd: moraal[29646] Restart nfsend:[12933]
Käsu andmise tulemusena sooritatakse vajalikud tegevused sh öeldakse stop ja start NfSen protsessidele. Olemasoleva allika omaduste muutmisel piisab NfSen protsessid seisata ja käivitada.
NfSen tarkvara uuendamine
Nt v. 1.3.2 -> 1.3.5 uuenduse tegemiseks tuleb uue versiooni nfsen.tar.gz lahti pakkida kuhugi kõrvalisse kataloogi ja öelda seal
# ./install.pl /srv/nfsen/etc/nfsen.conf
Tulemusena asendatakse /srv/nfsen/libexec jt failid kusjuures eelnevalt kogunenud netflow andmed säilivad.
NfSen paigaldamine operatsioonisüsteemile FreeBSD
Nfseni paigaldus FreeBSDle
Lisaks NfSen tarkvarale on vajalik paigaldada ka mingi PHP toega veebiserver, nt Apache. Seejärel võib peale portsude uuendamist installida nfseni järgnevalt
# cd /usr/ports/net-mgmt/nfsen # make install clean
Kõigepealt tuleb teha seadistusfail korrektseks /usr/local/etc/nfsen.conf ning seejärel startida nfsen -R konfifail võtmega nii ,et ta initsialiseeriks end ja seadistaks profiili ja RRD failid.
# nfsen -R /usr/local/etc/nfsen.conf
ja siis võime serveri käivitada
# nfsen start
Tulemüürist tuleks avada udp 9995 port
Veebist peame ligipääsetavaks tegema kausta /usr/local/www/nfsen kus asub php's kirjutatud veebiliides flowde graafiliseks vaatamiseks ja päringute loomiseks.
Info mida kogutakse salvestakse kausta /usr/local/var/nfsen/profiles/live/flow-allika-nimi
Vaikimisi on defineeritud vaid üks source ja näites kasutame samuti ainult seda. Tegelikult pole nende arv piiratud ning neid võib lisada vastavalt vajadustele veel.
Nfsen uuendamine
Enne upgrademist on ehk tarvilin backupida varasem profiil, mida saab teha järgnevate käskudega
# cd /usr/ports/net-mgmt/nfsen/work/nfsen-snapshot-20060810/helpers # ./mk_backup.sh /path/to/your/profilestatdir /path/to/backupdir
Projekti koduleht http://nfsen.sourceforge.net/
NfSen paigaldamine operatsioonisüsteemile OpenBSD
TODO
Tarkvara paigaldamine
Tarkvara paigaldamiseks tuleb öelda
# pkg_add nfsen nfsen-1.3.2p0:bzip2-1.0.5: ok nfsen-1.3.2p0:sqlite3-3.6.23p0: ok nfsen-1.3.2p0:python-2.5.4p5: ok nfsen-1.3.2p0:flow-tools-0.68.5p0: ok nfsen-1.3.2p0:nfdump-1.5.8p2: ok nfsen-1.3.2p0:p5-Time-TimeDate-1.20: ok nfsen-1.3.2p0:p5-Mail-Tools-2.04: ok nfsen-1.3.2p0:nfprofile-1.5.8p1: ok nfsen-1.3.2p0:p5-RRD-1.2.30: ok nfsen-1.3.2p0:nfsen-web-1.3.2: ok nfsen-1.3.2p0: ok --- +nfsen-1.3.2p0 ------------------- Note: the _nfcapd user has been added to group www. To proceed with an installation or upgrade, adjust /etc/nfsen.conf as required and run the configuration tool: # install-nfsen.pl /etc/nfsen.conf If your httpd runs in a chroot jail of /var/www you may adapt like this: # mkdir -p /var/www/var/db # mv /var/db/nfsen /var/www/var/db/nfsen # ln -s /var/www/var/db/nfsen /var/db/nfsen To start the daemon at boot, you may add this to /etc/rc.local: [ -x /usr/local/bin/nfsen ] && /usr/local/bin/nfsen start --- +python-2.5.4p5 ------------------- If you want to use this package as your default system python, as root create symbolic links like so (overwriting any previous default): ln -sf /usr/local/bin/python2.5 /usr/local/bin/python ln -sf /usr/local/bin/python2.5-config /usr/local/bin/python-config ln -sf /usr/local/bin/pydoc2.5 /usr/local/bin/pydoc
Seejuures tuleb sooritada skripti väljundis näidatud tegevused failisüsteemis, st öelda mkdir, mv ja ln.
Tarkvara seadistamine
NfSen kataloogistruktuuri ettevalmistamiseks tuleb esmalt seadistada /etc/nfsen.conf failis netflow allikad ja seejärel öelda
# install-nfsen.pl /etc/nfsen.conf Check for required Perl modules: All modules found. Setup NfSen: Version: 1.3.2: $Id: install.pl 24 2007-11-21 09:12:03Z phaag $ Perl to use: [/usr/bin/perl] Cleanup old files ... Setup diretories: Use UID/GID 649 67 Creating: /var/db/nfsen Creating: /var/db/nfsen/run Creating: /var/db/nfsen/tmp Creating: /var/db/nfsen/filters Creating: /var/db/nfsen/fmt Creating: /var/db/nfsen/profiles-stat Creating: /var/db/nfsen/profiles-stat/live Creating: /var/db/nfsen/profiles-data Creating: /var/db/nfsen/profiles-data/live Profile live: spool directories: Creating: vtm2 Creating: vtm1 Rename gif RRDfiles ... done. Create profile info for profile 'live' Rebuilding profile stats for './live' Reconfig: No changes found! Setup done. * You may want to subscribe to the nfsen-discuss mailing list: * http://lists.sourceforge.net/lists/listinfo/nfsen-discuss * Please send bug reports back to me: peter.haag@switch.ch
Tulemusena kogutakse netflow andmeid ja esitatakse tulemusi brauseris.
Pluginate paigaldamine
Paigaldatud pluginaid näeb valides
Plugins -> ...
Pluginad on kahte sorti
- frontend - kirjutatud PHP keeles ja paigutatud veebijuurika kataloogis alamkataloogi plugins
- backend - kirjutatud Perl keeles ja paigutatud NfSen installatsiooni kataloogis alamkataloogi plugins
Reeglina peab frontend pluginale vastama backend plugin, vastupidi aga mitte tingimata. Backend pluginate muutmisel tuleb öelda nfsenile reload
# /srv/nfsen/bin/nfsen reload
Backend plugin
Frontend plugin
Condition plugin
TODO
Action plugin
Action plugin käivitakse alerti actioni tegevusena. Tavaliselt juhul, kui kirja saatmine ei ole piisavalt sobib tegevus ja on tarvis käivitada mingi programm. Action plugin on alati backend tüüpi plugin. Nt selline plugin saadab alertisis läbi Zabbixi
# cat /srv/nfsen/plugins/alert_zabbix.pm package alert_zabbix; use strict; our $VERSION = 130; sub Init { return 1; } 1; sub alert_action { my $argref = shift; my $alert = $$argref{'alert'}; my $timeslot = $$argref{'timeslot'}; # # system("echo \"Alert action function called: alert: $alert, timeslot: $timeslot\">> /tmp/alert.log"); return 1; }
kus
- TODO
Lisaks plugina ettevalmistamisele tuleb kirjeldada plugina kasutamine ka nfsen.conf seadistusfailis (eeldusel, et see on parasjagu ainus plugin)
# cat /srv/nfsen/etc/nfsen.conf ... @plugins = ( [ 'live', 'alert_zabbix' ], );
ning kehtestada muudatus öeldes
# /srv/nfsen/bin/nfsen reload
Tulemusena on võimalik veebiliideses vastavas kohas valida Action pluginat.
NfSen SURFmap plugini paigaldamine
SURFmap kasutamiseks tuleb paigaldada sellised PHP teegid
# apt-get install php5-curl php5-sqlite
Arhiivis on esimesel tasemel on sellised failid-kataloogid
drwxr-xr-x 2 1002 1002 4096 Jun 12 09:12 backend -rw-r--r-- 1 1002 1002 11848 Jun 12 09:03 changelog.txt drwxr-xr-x 3 1002 1002 4096 Jun 12 09:12 frontend -rwxr-xr-x 1 1002 1002 8144 Jun 12 09:10 install.sh -rwxr-xr-x 1 1002 1002 1215 Jun 9 13:28 install-svn-trunk.sh -rw-r--r-- 1 1002 1002 5308 May 20 18:50 readme.txt
Ehk on suurem kontroll tulemuse üle kui paigaldada käsitsi, üldiselt on readme.txt sees kõik vajalik kirjas, maksab ainult üle korrata, et
- backend - sisalduv fail SURFmap.pm tuleb paigutada kataloogi /srv/nfsen/plugins
# cp backend/SURFmap.pm /srv/nfsen/plugins
- frontend - kogu kataloogi sisu kopeerida NfSen veebijuurika alla
# cp -a frontend/* /var/www/nfsen/plugins
- kopeerida GeoIP andmebaasid kataloogi /var/www/nfsen/plugins/SURFmap/lib/MaxMind
- kohendada frontendi seadistusfailis /var/www/nfsen/plugins/SURFmap/config.php parameetreid, sobivad väärtused saab aadressilt http://192.168.10.123/nfsen/plugins/SURFmap/setup/retrievelocation.php
$config['map_center'] = ... $config['nfsen_config'] = "/srv/nfsen/etc/nfsen.conf"; $config['internal_domains'] = ...
Lokaalse whois serveri kasutamine
2011. aasta keskel v. 1.3.5 sisaldab libexec/Lookup.pm teeki, kuhu on sisse kirjutatud whois.cyberabuse.org serveri nimi, kuid see server ei paku enam sobival viisil teenust ning tulemuseks on, et NfSen liideses ei saa enam ip aadressidel teha päringuid. Üheks alternatiiviks on seadistada käima lokaalne whois teenus, nt ühendades 43/tcp port ja sellise Perli skripti sisend ja väljund kokku inetd abil
# cat /srv/data/nfsen/libexec/whois.pl #!/usr/bin/perl my $filename = <>; foreach $rida($filename) { $vastus=`/usr/bin/whois $rida`; print $vastus; last; };
ning kasutades /etc/inetd.conf seadisusfailis rida
43 stream tcp nowait nobody /srv/data/nfsen/libexec/whois.pl whois.pl
whois päringute esitamise kontrollimiseks sobib öelda
$ whois -h 127.0.0.1 127.0.0.1 .. NetRange: 127.0.0.0 - 127.255.255.255 CIDR: 127.0.0.0/8 OriginAS: NetName: SPECIAL-IPV4-LOOPBACK-IANA-RESERVED NetHandle: NET-127-0-0-0-1 Parent: NetType: IANA Special Use
Kasutaja peab ise otsustama, kas talle selline lahendus sobib.
Debian v. 8 Jessie erisused
Tundub, et Debian v. 8 Jessie paketihalduses puudub nfdump tarkvara. Kasutamiseks sobib ta kopeerida aadressilt ning paigaldada öeldes
# apt-get install librrd-dev ... # mkdir /opt/nfdump # chown kasutaja:kasutaja /opt/nfdump # su - kasutaja $ tar zxf /tmp/xxx.tgz $ cd xxx $ ./configure --prefix=/opt/nfdump --enable-nfprofile $ make $ make install
ning seejärel nfsen.conf failis näidata nfdump programmide asukoht failisüsteemis
# nfdump tools path $PREFIX = '/opt/nfdump/bin'
Tundub, et nfsen käivitub ka ilma nfprofile utiliidita, aga võib mõne päeva pärast öelda ja nfsend protsess lõpetada töö (ei moodustu enam .rrd faile)
Jun 20 06:05:15 keskus nfsen[5786]: Can't exec "/opt/nfdump/bin/nfprofile": No such file or directory at /srv/nfsen/bin/nfsend line 310. Jun 20 06:05:15 keskus nfsen[5787]: Can't exec "/opt/nfdump/bin/nfprofile": No such file or directory at /srv/nfsen/bin/nfsend line 310.
Ubuntu v. 16.04 erisused
- Tundub, et kasutamiseks sobiv NfSen v. 1.3.8
- Ubuntu v. 16.04 kasutab PHP7 ja Apache v. 2.4, paigaldada tuleb
# apt-get install nfdump apache2 php librrds-perl libmailtools-perl libsocket6-perl libapache2-mod-php7.0 # systemctl mask nfdump
- ./install.pl etc/nfsen.conf juures saab teate
.. Profile live: spool directories: Creating: mkdir /srv/nfsen/profiles-data/live/fgwan1 fgwan1 Rename gif RRDfiles ... done. Create profile info for profile 'live' Rebuilding profile stats for './live' Can't use string ("live") as a HASH ref while "strict refs" in use at libexec/NfProfile.pm line 1238.
Selle vastu aitab kaks muudatust nagu kirjeldatud aadressil http://openbsd-archive.7691.n7.nabble.com/nfsen-package-issue-with-OpenBSD-5-8-td293670.html
# diff nfsen-1.3.8-orig/install.pl nfsen-1.3.8/install.pl 556c556 < NfProfile::DoRebuild(\%profileinfo, $profilename, $profilegroup, $profilepath, 1, 0); --- > NfProfile::DoRebuild("", \%profileinfo, $profilename, $profilegroup, $profilepath, 1, 0);
ja
# diff nfsen-1.3.8-orig/libexec/NfProfile.pm nfsen-1.3.8/libexec/NfProfile.pm 1346c1346 < print $socket ".info Rebuilding Profile '$profile': Completed: $completed\%\n"; --- > print $socket ".info Rebuilding Profile '$profile': Completed: $completed\%\n" if $socket;
- Fortigate seadme netflow kasutamiseks tuleb nfsen.conf juures täpsustada source seadistust parameetriga optarg = '-s 1', nt
%sources = ( 'fgwan1' => { 'port' => '9197', 'col' => '#0000ff', 'type' => 'netflow', 'optarg' => ' -s -1' }, );
- Oluline on, et source nimi ei sisaldaks - märki
- Kuna NfSen tarkvara www komponent sisaldab kataloogi /icons, siis Apache globaalse default /icons uriga konflikti vältimiseks on mõistlik juurutada www komponent nt urile /nfsen
Debian v. 10 Buster iseärasused
Paigaldada nfsen kasutamiseks vajalik tarkvara
# apt-get install nfdump apache2 php librrds-perl libmailtools-perl libsocket6-perl
Teha install.pl failis muudatus
# diff nfsen-1.3.8-orig/install.pl nfsen-1.3.8/install.pl 556c556 < NfProfile::DoRebuild(\%profileinfo, $profilename, $profilegroup, $profilepath, 1, 0); --- > NfProfile::DoRebuild("", \%profileinfo, $profilename, $profilegroup, $profilepath, 1, 0);
Tundub, et perl kasutamine on muutunud ja on vajalik näidata nfsen.conf faili absoluutne tee sealjuures paigutades esmalt nfsen.conf fail lõplikku asukohta, esmalt kommenteerides välja install.pl failist read
# check for extra errornous nfsen.conf file, which may overwrite existing files #if ( -f "$NfConf::CONFDIR/nfsen.conf" && -f "etc/nfsen.conf" && # ( (stat($ConfigFile))[1] != (stat("etc/nfsen.conf"))[1] )) { # die "Extra nfsen.conf file in etc directory found. Remove errornous file first" #}
ning öelda
# mkdir /srv/nfsen/etc # ./install.pl /srv/nfsen/etc/nfsen.conf
Kasulikud lisamaterjalid
- TODO