
|
 |
Linuxskolen del 7 (LINUXmagasinet 1/2003)
Overvåk nettverket
Ifjor gikk vi gjennom en rekke av de utfordringene og fornøyelsene Linux har å by på. Vi runder av denne delen av Linuxskolen med litt om hvordan du overvåker nettet ditt.
Jeg tar ikke for meg store og profesjonelle løsninger, men satser på enklere verktøy som er fritt tilgjengelig, og som jeg tror du vil fortsette å bruke.
mange verktøy
Det finnes en mengde overvåkningssverktøy, grafiske logg-viewere, ethernet-sniffere, og web-baserte presentasjonsformer som skal få deg til å føle at du har “full kontroll” på alt som strømmer gjennom kablene dine. Slik er det dog ikke! Hvert av programmene har hver sterke og svake sider. Selv de programmene som måtte være “perfekte” har en svakhet: DEG!
Når du har sett nok på alle de flotte grafene, statistikkene, ikonene og tabellene, ja da melder trettheten seg, den som kommer av for mye informasjon, mye som ikke er særlig spennende.
For den jevne bruker er det er best å velge noen verktøy som er kjappe å sjekke, viser et minimum av informasjon og som ikke er for trøblete å sette opp.
Jeg har mye erfaring fra overvåking av installasjoner ute i terrenget. Bl.a. har jeg daglig driftsansvar for 4 vitenskapelige radarstasjoner på Andøya. Jag må bl.a. gå gjennom de daglige loggene som kommer automatisk via e-post. Man skal være utrolig strukturert og bevisst for å ha like god samvittighet hver dag etter å ha “lest” slike logger.
Derfor hevder jeg at jo enklere - jo bedre. Det bare krever litt tankearbeide og bedre planlegging på forhånd.
Du må gjøre følgende:
*Vurdere hva slags trafikk nettet dit MÅ slippe inn/ut:
ssh, telnet, ftp, smpt, pop, imap, tcp, udp..
*Vurdere hva slags programvare du MÅ ha:
servere og klienter, frittstående programmer, brannmur, host.allow/host.deny
*Vurdere hva slags hardware du MÅ benytte deg av:
servere som evt. samtidig benyttes som arbeidsstasjon, dedikerte routere, gateways, brannmurer, switcher/hubs, selvkonfigurerte linuxroutere etc....
Så bestemmer du hvilke programmer du skal ha for å holde øye med det som skjer. Et slikt program er Snort (http://www.snort.org/).
snort
Snort er et verktøy som kan gjøre mange oppgaver på samme tid. Vanskelighetsgraden for å sette opp Snort er ikke for høy, men en ulempe er at den krever databasetilgang, PHP og en masse saker du egentlig ikke har bruk for. Min egen server for Arctic Linux har ikke engang X Window installert, så jeg må være meget selektiv i hva jeg installerer. Fordelen er en utrolig stabilitet. Snort er ikke særlig vanskelig å bruke, men et utall av kommandoer kan forvirre den uinnvidde. Snort opererer i tre moduser: sniffer, packet logger, og network intrusion detection (crackere). I sniffer mode leser Snort pakkene direkte fra nettet og viser dem i en kontinuerlig strøm i konsollet. Som packet logger går samme informasjon direkte til disk i stedet. Network intrusion detection mode er den mest komplekse og konfigurerbare måten. Her lar man Snort analysere all netverkstrafikk og sjekker resultatene mot forhåndsdefinerte regler. Deretter utfører Snort bestemte aksjoner basert på hva slags trafikk den ser. Tilleggsprogrammet ACID (Analysis Console for Intrusion Databases fra http://acidlab.sourceforge.net) lar deg visualisere Snort-loggene i web-format. Jeg vil vel si at uten å installere ACID er Snort unyttig for den jevne bruker. Et meget bra sett verktøy for den vitebegjærlige,men minus for at den krever mye software, lagrer utrolige mengder data og er et verktøy man blir lei av å sjekke etter en tid. Dersom du vil prøve Snort finner du en utmerket installasjonsveiledning for RedHat 7.3 her: http://www.snort.org/docs/snort-rh7-mysql-ACID-1-5.pdf.
nagios
Nagios er et nettverks- og systemovervåkningsverktøy som sjekker maskinenes tilstedeværelse på nettet og de prosesser på disse du ønsker å følge med på.
For å benytte Nagios trenger du:
* En webserver, helst Apache
(http://www.apache.org)
* Thomas Boutells gd-bibliotek i versjon 1.6.3 eller nyere. Dette benyttes av enkelte CGIer for å kunne produsere grafiske statusbilder og trender. Man kan klare seg uten denne dersom man ikke har X installert.
Når alle avhengigheter er løst, Nagios installert og konfigurert gir den deg deretter beskjed via epost, GSM (Wap) eller direkte via web om maskinen ikke svarer på ping, eller om en av prosessene du overvåker faller ut. Dette er en kjempefunksjon siden man ikke blir så mye klokere av å vite om en spesifikk maskin er online eller ikke, men man vil gjerne ha beskjed dersom prosessoren går på 100%, om diskene går fri for ledig plass, om mailserveren har kuttet ut, om analyseprogrammet har tatt kvelden eller om maskinen ikke slipper noen til på web.
nagios kan i grove trekk utføre følgende:
* Overvåkning av nettverkstjenester som SMTP, POP3, HTTP, NNTP, PING, etc.
* Overvåkning av maskinresursser som prosessor last, diskbruk, etc.
* Enkelt plugin-design som gjør at brukere lett kan utvikle egne tester.
* Evnen til å definere et hierarki av inkluderte maskiner for deretter lettere å kunne bestemme om en maskin er avslått eller bare ikke kan nåes via nett for øyeblikket.
* Gir ut informasjon via epost, GSM eller brukerdefinerte metoder dersom tester feiler og når de er ok igjen.
* Automatisk rotasjon av loggfiler.
* Tilhørende webgrensesnitt for statussjekk status, utsendte varslinger, problemhistorikk, trender etc.
Det som er positivt med Nagios er at den ikke MÅ ha X Window for å gjøre jobben tilfredsstillende. Det betyr at man kan installere Nagios på en skjermløs maskin via ssh. Slik gjorde jeg det på min server:
1. Apache var installert og fungerte slik den skulle.
Imidlertid må det gjøres noen små forandringer i httpd.conf, mer om dette om litt.
2. Lastet ned Nagios 1.0 fra http://prdownloads.sourceforge.net/nagios/nagios-1.0.tar.gz?download.
- Pakket ut filen til /usr/src/nagios-1.0/
- mkdir /usr/local/nagios
- adduser nagios
- ./configure —with-nagios-user=<brukernavn> —with-nagios-group=<gruppenavn> —with-cgiurl=/nagios/sbin
- make all, make install
- make install-init (installerer init-script i /etc/rc.d/init.d)
- make install-config (installerer eksempler på alle konfig-filer i /usr/local/nagios/etc)
3.Nå er turen kommet til å kompilere og installere plugins. Disse tilfører Nagios all sin funksjonalitet når det gjelder sjekk av maskiner og prosesser. Du henter filen fra http://prdownloads.sourceforge.net/nagiosplug/nagios-plugins-1.3.0-beta2.tar.gz?download.
- Pakk ut til /usr/src/nagios-plugins-1.3.0-beta2/
- ./configure —with-nagios-user=<brukernavn> —with-nagios-group=<gruppenavn> —with-cgiurl=/nagios/libexec
- make all
- make install (legger alle plugins inn i /usr/local/nagios/libexec)
4. Sette opp webgrensesnittet ved å følge den glimrende guiden på denne adressen: http://nagios.sourceforge.net/docs/1_0/installweb.html
- legg spesielt merke til at pather osv. er korrekte iht det du oppgav i ./configure for både Nagios og plugins.
5. Du bør absolutt legge inn autentisering slik at ikke alle kan få se dine innerste nettverkshemmeligheter. Følg oppsettet her: http://nagios.sourceforge.net/docs/1_0/cgiauth.html
- legg deg selv inn som bruker i tillegg til de forhåndsdefinerte. Gjør det lettere å huske innlogging senere.
6. Oppsettet av Nagios tar noe tid. Dersom du har benyttet Netsaint tidligere, og har oppsettet fra den tiden så kan du IKKE automatisk benytte dette igjen. I Nagios er der gjort mange forandringer, ikke minst i defineringen av hosts, hostsgroups og contactgroups. Du kan imidlertid gjenbruke bruddstykker av oppsettet, men jeg skal ikke gå nærmere inn på dette nå.
For de som ikke har sett dette før, tror jeg at et fungerende eksempel er beste måten å demonstrere dette på. De konfigurasjonsfilene som skal forandres ligger i /usr/local/nagios/etc og er:
root@vega /home/kolbjorn# ls -l /usr/local/nagios/etc/
total 108
—rwxr—r— 1 kolbjorn users 17118 Jan 11 22:17 cgi.cfg*
-rwxr—r— 1 kolbjorn users 4478 Jan 11 21:22 checkcommands.cfg
-rwxr—r— 1 kolbjorn users 1114 Jan 11 21:23 contactgroups.cfg
-rwxr—r— 1 kolbjorn users 1122 Jan 11 21:28 contacts.cfg
-rwxr—r— 1 kolbjorn users 670 Jan 11 21:41 dependencies.cfg
-rwxr—r— 1 kolbjorn users 1942 Jan 11 21:45 escalations.cfg
-rwxr—r— 1 kolbjorn users 1150 Jan 11 21:24 hostgroups.cfg
-rwxr—r— 1 kolbjorn users 2521 Jan 11 21:24 hosts.cfg
-rwxr—r— 1 kolbjorn users 23 Jan 11 19:16 htpasswd.users
-rwxr—r— 1 kolbjorn users 4255 Jan 11 21:22 misccommands.cfg
-rwxr—r— 1 kolbjorn users 21335 Jan 11 21:22 nagios.cfg
-rwxr—r— 1 kolbjorn users 3072 Jan 11 21:22 resource.cfg
-rwxr—r— 1 kolbjorn users 8973 Jan 11 21:21 services.cfg
-rwxr—r— 1 kolbjorn users 1592 Jan 11 21:22 timeperiods.cfg
Vi benytter mine filer for å vise fremgangsmåten. Jeg har 4 maskiner i hjemmenettet mitt så det er ganske oversiktelig. Etter å ha fulgt installasjonen beskrevet over, har dere alle filene selv, men med en _sample ending. Rename filene til det dere ser over etterhvert som dere gjør forandringer i dem. På denne måten er dere sikre på at dere lett vil finne feil etterpå.
De filene vi kommer til å gjøre mest i er:
cgi.cfg, contactgroups.cfg, contacts.cfg, escalations.cfg, hostgroups.cfg, hosts.cfg, nagios.cfg og services.cfg.
#
# CGI.CFG - Sample CGI Configuration File for Nagios 1.0
#
# Last Modified: 10-29-2002
#
main_config_file=/usr/local/nagios/etc/nagios.cfg
physical_html_path=/usr/local/nagios/share
url_html_path=/nagios
show_context_help=0
use_authentication=0
authorized_for_system_information=nagiosadmin,kolbjorn
authorized_for_configuration_information=nagiosadmin,kolbjorn
authorized_for_system_commands=nagiosadmin,kolbjorn
authorized_for_all_services=nagiosadmin,guest,kolbjorn
authorized_for_all_hosts=nagiosadmin,guest,kolbjorn
authorized_for_all_service_commands=nagiosadmin,kolbjorn
authorized_for_all_host_commands=nagiosadmin,kolbjorn
default_statusmap_layout=5
default_statuswrl_layout=4
ping_syntax=/bin/ping -n -U -c 5 $HOSTADDRESS$
refresh_rate=90
# CONTACT GROUP DEFINITIONS
#
# SYNTAX:
# “server-admins” contact group definition
define contactgroup{
contactgroup_name server-admins
alias Server Administrators
members kolbjorn
}
# “linux-admins” contact group definition
define contactgroup{
contactgroup_name linux-admins
alias Linux Administrators
members kolbjorn
}
# “router-admins” contact group definition
define contactgroup{
contactgroup_name router-admins
alias Router Technicians
members kolbjorn
}
# CONTACT DEFINITIONS
#
# SYNTAX:
# “kolbjorn” contact definition
define contact{
contact_name kolbjorn
alias Nagios Admin
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-email,notify-by-epager
host_notification_commands host-notify-by-email,host-notify-by-epager
email <mail to="kolbjorn@arctic-linux.tnett.no" subject="" text="kolbjorn@arctic-linux.tnett.no" />
pager pagekolbjorn-admin@localhost.localdomain
}
# SERVICE ESCALATION DEFINITIONS
#
# SYNTAX:
# Serviceescalation definition
define serviceescalation{
host_name vega
service_description PING
first_notification 2
last_notification 6
contact_groups linux-admins
notification_interval 0
}
# Serviceescalation definition
define serviceescalation{
host_name canopus
service_description PING
first_notification 2
last_notification 6
contact_groups linux-admins
notification_interval 0
}
# Serviceescalation definition
define serviceescalation{
host_name antares
service_description PING
first_notification 2
last_notification 6
contact_groups linux-admins
notification_interval 0
}
# Serviceescalation definition
define serviceescalation{
host_name capella
service_description Current Users
first_notification 5
last_notification 0
contact_groups linux-admins
notification_interval 0
}
# HOST GROUP DEFINITIONS
#
# SYNTAX:
# “servers” host group definition
define hostgroup{
hostgroup_name servers
alias Arcitic Linux Servers
contact_groups server-admins
members vega
}
# “linux-boxes” host group definition
define hostgroup{
hostgroup_name linux-boxes
alias Linux Workstations
contact_groups linux-admins
members antares,capella
}
# “routers” host group definition
define hostgroup{
hostgroup_name routers
alias Routers
contact_groups router-admins
members canopus
}
# HOST DEFINITIONS
#
# SYNTAX:
# Generic host definition template
define host{
name generic-host
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
register 0
}
# “vega” host definition
define host{
use generic-host
host_name vega
alias Server
address 192.168.1.1
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
}
# “canopus” host definition
define host{
use generic-host
host_name canopus
alias Router/GW
address 192.168.1.2
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
}
# “antares” host definition
define host{
use generic-host
host_name antares
alias Kolbjorns Workstation
address 192.168.1.3
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
}
# “capella” host definition
define host{
use generic-host
host_name capella
alias Dannys Workstation
address 192.168.1.4
check_command check-host-alive max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
#
# NAGIOS.CFG - Sample Main Config File for Nagios 1.0
# Read the documentation for more information on this configuration
# file. I’ve provided some comments here, but things may not be so
# clear without further explanation.
#
# Last Modified: 07-04-2002
#
# VISER KUN DER JEG HAR ENDRET NOE
# NAGIOS USER
# This determines the effective user that Nagios should run as.
# You can either supply a username or a UID.
nagios_user=kolbjorn
# NAGIOS GROUP
# This determines the effective group that Nagios should run as.
# You can either supply a group name or a GID.
nagios_group=users
date_format=euro
admin_email=kolbjorn
# SERVICE DEFINITIONS
#
# SYNTAX:
# Denne filen inneholder en entry for hver service jeg ønsker på hver host. På grunn
# av lengden på filen har jeg KUN tatt med ett eksempel. De som vil kan få mailet
# hele filen ved henvendelse til meg.
#<mail to="kolbjorn@arctic-linux.tnett.no" subject="" text="kolbjorn@arctic-linux.tnett.no" />
# Generic service definition template
define service{
name generic-service
active_checks_enabled 1
passive_checks_enabled 1
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
register 0
}
# Service definition
define service{
use generic-service
; Name of service template to use
host_name vega
service_description SMTP
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 3
retry_check_interval 1
contact_groups server-admins
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_command check_smtp
}
7. Nå gjenstår bare å teste oppsettet før vi fyrer opp.
’/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg’
Følg med på evt. feilmeldinger og rett opp en etter en. Når alt passerer slik:
root@vega /usr/local/nagios/etc# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios 1.0
Copyright (c) 1999-2002 Ethan Galstad (nagios@nagios.org)
Last Modified: 11-24-2002
License: GPL
Reading configuration data...
Running pre-flight check on configuration data...
Checking services...
Checked 17 services.
Checking hosts...
Checked 4 hosts.
Checking host groups...
Checked 3 host groups.
Checking contacts...
Checked 1 contacts.
Checking contact groups...
Checked 3 contact groups.
Checking service escalations...
Checked 4 service escalations.
Checking host group escalations...
Checked 0 host group escalations.
Checking service dependencies...
Checked 0 service dependencies.
Checking host escalations...
Checked 0 host escalations.
Checking host dependencies...
Checked 0 host dependencies.
Checking commands...
Checked 22 commands.
Checking time periods...
Checked 4 time periods.
Checking for circular paths between hosts...
Checking for circular service execution dependencies...
Checking global event handlers...
Checking obsessive compulsive service processor command...
Checking misc settings...
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
Da er du i mål, og Nagios startes så med:
‘/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg’
Start en nettleser, legge inn adressen http://min_host/nagios/ og oppgi brukernavn og passord. Klikk rundt og se hostene dine melde seg etter noen minutter. Prøv så å stenge av en service eller hele maskiner for å verifisere at Nagios oppdager dette. Jeg lover deg at dette funker flott!
Jeg bruker også to terminalbaserte verktøy, - trafshow og iptraf.
Trafshow bruker jeg som en enkel monitor for raskt å kunne danne meg et bilde av nettverkstrafikken på valgt ethernetkort. Den produserer ingen loggfiler og kan således stå på, så kan jeg bare kaste et kjapt blikk på den en gang i blant. Du finner trafshow her: ftp://rpmfind.net/linux/ASPLinux/i386/7.1/LinuxTools/ASPLinux/RPMS/trafshow-1.3-13.i386.rpm og denne rpm’en fungerer både på nyere RedHat, Mandrake og Trustix.
Iptraf er et smart lite overvåkningsverktøy, noe mer avansert enn trafshow og med en meny hvor man kan sette opp en del parametere i samsvar med dine behov. Menyen lar deg slå PÅ logging av data til disk. Logging til disk er default AV. Iptraf er kjekt å benytte f.eks.til feilsøking i oppsett av brannmurer hvor man enkelt kan se hvorvidt pakker kommer igjennom på ønsket port osv. Den logger også total trafikk på tcp og udp over valgt nettverkskort slik at man holder øye med forbruket av “bits and bytes” i nettverk. Iptraf følger med Red Hat og de fleste distroer .
Til slutt Ethereal, som har grafisk grensesnitt og krever X Window. Jeg bruker den i de få tilfellene man ønsker å se nøyaktig hva som kommer inn til, eller forlater et spesifikt nettverkskort. Med ethereal kan du i klartekst se all den informasjonen du tror er vanskelig å finne ut uten å vite passord osv. Her kan du i ro og mak lese brukernavn og passord når noen benytter f.eks. pop3, telnet og rsh. Med ethereal og root-rettigheter har du full kontroll, og det skal ikke mange sekundene til før du innser at de nevnte tjenestene bør unngås for enhver pris.
I neste utgave skal jeg bl.a. ta for meg oppsett av en Linuxklynge (cluster) med OpenMosix for å fordele belastningen mellom et antall maskiner.

|
 |
|