[Tutorial]Trafficauswertung mit IAM und Huschi - Server Support Forum
Server Support Forum
Anzeige:
[Tutorial]Trafficauswertung mit IAM und Huschi

Zurück   Server Support Forum > >

Anzeige:

Antwort
 
Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 2,50 durchschnittlich.
  #1  
Alt 28.12.2005, 23:20
djrick djrick ist offline
Registered User
 
Registriert seit: 11.2003
Beiträge: 7.460
[Tutorial]Trafficauswertung mit IAM und Huschi

Hallo,

Dieses Tutorial soll euch zeigen, wie man mit Hilfe von IAM und einem Perlscript den Traffic an den Ports des Webservers überwacht und bei zu hohem Trafficaufkommen eine Mail an den Administrator schickt. So lassen sich beispielsweise DDoS Attaken schneller erkennen und abwehren.

Zuerst widmen wir uns der Installation von IAM:

IAM bekommt man auf dieser Webseite: http://www.intevation.de/iam

Hier laden wir uns die aktuelle Version (0.0.2) herunter und entpacken sie im /usr/src Verzeichniss:
Code:
cd /usr/src
wget ftp://ftp.intevation.de/iam/iam-0.0.2.tar.gz
tar xvfz iam-0.0.2.tar.gz
cd  iam-0.0.2
Da IAM mit iptables arbeitet kopieren wir die Datei "iptables.server" ins /etc/init.d Verzeichniss und überschreiben die bereits vorhandene. Sollten per iptables schon Regeln im System sein: Bitte die Dateien entsprechend anpassen:
Code:
cp iptables.server /etc/init.d/iptables
Nun bearbeiten wird die Datei /etc/init.d/iptables mit unserem favourisierten Texteditor und nehmen noch ein paar Einstellungen vor:
Diese Werte sollten so aussehen:
Code:
DUMPFILE=/var/log/iamdump
extif=eth0
extip=IP DEINES SERVERS
intif=lo
hq=127.0.0.1/29
intnet=127.0.0.1/16
Nun erstellen wir noch ein Verzeichnis für die restlichen IAM-Scripts die später benötigt werden:
Code:
mkdir /usr/local/iam
cp * /usr/local/iam/
Nun noch das iptables-Script ausführbar machen, damit die Regeln bei einem Neustart des Servers ebenfalls übernommen werden und das iptablesscript inintalisieren:
Code:
chmod +x /etc/init.d/iptables
/etc/init.d/iptables start
Jetzt erstellen wir für den Benutzer 'root' noch einen Crontab:
Code:
*/5 * * * * /etc/init.d/iptables dump >/dev/null
Nun laden wir uns das zusätzlich benötigte Script von Huschi herrunter:
Code:
cd /root
wget http://www.huschi.net/download/traffic_check.tgz
tar xvfz traffic_check.tgz
Nun müssen wir das Perl Script noch entsprechend anpassen:
Code:
$IAM       = '/usr/local/iam/iam';
$DUMPFILE  = '/var/log/iamdump';
$MAIL_FROM    = [email protected]';
$MAIL_TO      = [email protected]';
Nun kommt der Teil der etwas "tricky" ist:
Wir finden im dem traffic_check Script folgende Werte:
Code:
%CHAINS    = ('outgoing (without other listed services)'        => 0.1,
                          'www (http/https/caudium)'                    => 0.1,
                          'internet services'   => 0.1
Diese Werte geben an, wie groß der Wert sein darf an Traffic bei dem NICHT verwarnt wird.

Also:
Im Abschnitt 'www' , das ist der Traffic vom Apache Webserver (80), dürfte nach oben in 15 min nicht mehr als 0.1 MB Traffic entstehen, alles was größer ist lößt die Warnung an den Webmaster aus. Das ist natürlich Schwachsinn (0.1 MB), diese Werte kann man eigentlich nur durch Erfrahrung oder Ausprobieren anpassen.
Meine Chains sehen so aus:
Zitat:
outgoing (without other listed services)' => 10.0
'www (http/https/caudium)' => 30.0
'other traffic (unspecified)' => 50.0
'internet services' => 30.0
Für einen kleinen nicht ausgelasteten Webserver reicht das.
Nun brauchen wir noch einen Cronjob um das Traffic_Check Script 15 minütlich auszuführen:
Code:
*/15 * * * * /root/traffic_check.pl >/dev/null 2>&1

FERTIG
Fragen, Fehler, Anregungen bitte hierdrunter posten.


An dieser Stelle: Danke an Huschi für sein Script

Geändert von djrick (29.12.2005 um 04:49 Uhr)
Mit Zitat antworten
Anzeige:

  #2  
Alt 29.12.2005, 08:22
Joker Joker ist offline
Registered User
 
Registriert seit: 12.2004
Beiträge: 46
Hi djrick,

schön, dass Du es gestern Abend noch fix geschrieben hast.
Meine erste Frage hast Du auch gleich beantwortet . Im Original-HowTo heißt es nämlich auch, dass man die iptables.server nach /etc/init.d/iptables kopieren soll. Da dort aber schon eine liegt, wusste ich nicht richtig weiter. In die Originaldatei habe ich zugegebenermaßen nicht reingeschaut. Na mal sehen ob ich es hinbekomme die beiden Dateien zu vereinen. Reicht es in der Regel das Neue ans Original anzuhängen?
Als "extif" hast Du eth0. Ist das beim vServer so? Hatte mal ifconfig gemacht und da stand was von Venet0:0, und der hatte die IP des Servers.
Zitat:
Nun müssen wir das Perl Script noch entsprechend anpassen
Welches denn?
Ein Mail wird nur geschickt, wenn die Trafficgrenzen erreicht sind, richtig? Wie sieht es mit einer Tagesmail aus, in der der Traffic des Tages zusammengefasst ist?

Sorry für manch blöde Frage, aber kann von dem Ort wo ich momentan bin nicht auf den Server um zu schauen. Ansonsten nochmal Danke und ich werde mich gleich heute Abend mal wieder dran setzen.

Joker
Mit Zitat antworten
  #3  
Alt 29.12.2005, 13:13
djrick djrick ist offline
Registered User
 
Registriert seit: 11.2003
Beiträge: 7.460
Zitat:
Zitat von Joker
Reicht es in der Regel das Neue ans Original anzuhängen?
Nein du musst das alte iptablesscript mit dem neuen überschreiben.
Zitat:
Als "extif" hast Du eth0. Ist das beim vServer so? Hatte mal ifconfig gemacht und da stand was von Venet0:0, und der hatte die IP des Servers.
Welches denn?
Beim vServer hast du schon recht: venet0:0
Zitat:
Ein Mail wird nur geschickt, wenn die Trafficgrenzen erreicht sind, richtig? Wie sieht es mit einer Tagesmail aus, in der der Traffic des Tages zusammengefasst ist?
Also iam_report generiert eine Zusammenfassung des Traffics, da müsstest du dir selbst ein Script basteln welches das in eine Mail ausgibt und wegschickt
Mit Zitat antworten
  #4  
Alt 29.12.2005, 20:49
Joker Joker ist offline
Registered User
 
Registriert seit: 12.2004
Beiträge: 46
So ganz klar bin ich mir mit den iptables nicht. Wollte die Originaldatei ja eigentlich nicht "weghauen".

Naja, jedenfalls kommt folgendes bei "iptables start"
Code:
Warning: wierd character in interface `venet0:0' (No aliases, :, ! or *)
Danach habe ich mal den Dump erzeugt und reingeschaut, da steht auch nur "venet0" da.

Weiter habe ich dann auch noch nichts gemacht.
Mit Zitat antworten
  #5  
Alt 29.12.2005, 22:51
djrick djrick ist offline
Registered User
 
Registriert seit: 11.2003
Beiträge: 7.460
Dann versuch mal:
venet0 als Interface, weil :0 ist ja nur das virtuelle Device...
Mit Zitat antworten
  #6  
Alt 30.12.2005, 18:54
Benutzerbild von Huschi
Huschi Huschi ist offline
Moderator
 
Registriert seit: 09.2003
Ort: Nürnberg
Beiträge: 15.408
Blog-Einträge: 5
@djrick:
Schöne Arbeit.

Anmerkung von mir:
Der Dreh und Angelpunkt ist natürlich das iptables-Script.
Ich hab es in 'iam' umbenannt und in der Config folgende Zeilen auskommentiert:
Code:
#hq=212.227.80.7/32
[...]
#       new_chain intevation
#       acc_ip intevation $hq
Und auch in der Funktion start_firewall() den Aufruf von allow_all gelöscht/auskommentiert. (Nur wenn andere iptables genutzt werden.)
Dadurch beißt sich dieses Script bei mir nicht mit evtl. vorhandenen iptables.

Zusätzlich fehlt im Howto ein insserv/chkconfig (für Suse/Fedora) um das Script beim Serverstart mit zu laden.

Ach ja: und die Funktionen der eigendlichen Bestimmung hat ricky uns auch unterschlagen:
Einen täglichen Auszug des angefallenen Traffic:
Crontab-Eintrag:
Code:
59      23      *       *       *       /usr/local/iam/traffikmail.sh
Und die modifizierte /usr/local/iam/traffikmail.sh :
Code:
#!/bin/bash

STARTDATUM=$(date "+%Y%m%d")
ENDDATUM=$(date "+%Y%m%d")

/usr/local/iam/iam -r -f $STARTDATUM -t $ENDDATUM /var/log/iamdump | mail -s "Traffikreport von meinem Server" root
huschi.
__________________
huschi.net - Linux-Server-Admin FAQ
Consult-N.de - kommerzieller Linux-Support

Geändert von Huschi (01.01.2006 um 22:48 Uhr)
Mit Zitat antworten
  #7  
Alt 30.12.2005, 20:20
djrick djrick ist offline
Registered User
 
Registriert seit: 11.2003
Beiträge: 7.460
Ach die modifizierte Version hast du mir auch unterschlagen
Mit Zitat antworten
  #8  
Alt 01.01.2006, 20:21
Benutzerbild von Huschi
Huschi Huschi ist offline
Moderator
 
Registriert seit: 09.2003
Ort: Nürnberg
Beiträge: 15.408
Blog-Einträge: 5
Mir ist noch was eingefallen:
Die Datei iamdump sollte man auch ins logrotate aufnehmen. Sonst hab man relativ schnell ein Problem.

huschi.
__________________
huschi.net - Linux-Server-Admin FAQ
Consult-N.de - kommerzieller Linux-Support
Mit Zitat antworten
  #9  
Alt 01.01.2006, 22:27
Joker Joker ist offline
Registered User
 
Registriert seit: 12.2004
Beiträge: 46
Ja Hallo mal wieder,

ich habe mich mal wieder rangesetzt und hänge jetzt wieder beim starten (/etc/init.d/iam start) und es erscheint nun folgende Meldung:
Code:
Starting iptables ip accounting: iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables.
Leider kann ich damit absolut nichts anfangen. Ich verstehe zwar was da steht, aber nicht den Sinn.

Habe es übrigens so wie Huschi gemacht und das Ganze "iam" genannt, sowie "allow_all" auskommentiert. Wenn ich es "iptables" nenne erscheint die selbe Meldung.

Joker
Mit Zitat antworten
  #10  
Alt 01.01.2006, 22:42
Benutzerbild von Huschi
Huschi Huschi ist offline
Moderator
 
Registriert seit: 09.2003
Ort: Nürnberg
Beiträge: 15.408
Blog-Einträge: 5
Hat er denn überhaupt was gemacht?
Tippel mal 'iptables -L'.

Zitat:
Habe es übrigens so wie Huschi gemacht
Ob das gut ist....
Hast Du auch hq auskommentiert?
Hab oben vergessen, daß dann zwei weitere Zeilen auskommentiert werden müsse:
Code:
#       new_chain intevation
#       acc_ip intevation $hq

Zitat:
sowie "allow_all" auskommentiert
Lass es besser drin, wenn Du sonst keine iptables nutzt.

huschi.
__________________
huschi.net - Linux-Server-Admin FAQ
Consult-N.de - kommerzieller Linux-Support

Geändert von Huschi (01.01.2006 um 22:45 Uhr)
Mit Zitat antworten
  #11  
Alt 02.01.2006, 09:23
Joker Joker ist offline
Registered User
 
Registriert seit: 12.2004
Beiträge: 46
hq hatte ich schon auskommentiert, da beim ersten Start von IAM schon ein Fehler kam, der darauf deutete.
"allow_all" ist auch wieder drin.
Nach start von IAM und Eingabe von "iptables -L" erscheint folgendes:

Code:
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
local      all  --  127.0.0.0/16         anywhere
local      all  --  ******.vserver.de    anywhere
local      all  --  anywhere             anywhere
www        tcp  --  anywhere             anywhere           tcp dpt:http
www        tcp  --  anywhere             anywhere           tcp dpt:https
www        tcp  --  anywhere             anywhere           tcp dpt:22202
ftp        tcp  --  anywhere             anywhere           tcp dpts:ftp-data:ftp
rsync      tcp  --  anywhere             anywhere           tcp dpt:rsync
cvs        tcp  --  anywhere             anywhere           tcp dpts:cvspserver:2404
mail       tcp  --  anywhere             anywhere           tcp dpt:smtp
mail       tcp  --  anywhere             anywhere           tcp spt:smtp
misc       tcp  --  anywhere             anywhere           tcp dpt:ssh
misc       tcp  --  anywhere             anywhere           tcp dpt:domain
misc       udp  --  anywhere             anywhere           udp dpt:domain
misc       tcp  --  anywhere             anywhere           tcp dpt:auth
outgoing   tcp  --  anywhere             anywhere           tcp spts:0:1024
outgoing   udp  --  anywhere             anywhere           udp spts:0:1024
ip_local_port_range  tcp  --  anywhere             anywhere           tcp dpts:32768:61000
ip_local_port_range  tcp  --  anywhere             anywhere           tcp spts:32768:61000
fragment   all  -f  anywhere             anywhere
unknown    all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
local      all  --  anywhere             127.0.0.0/16
local      all  --  anywhere             ******.vserver.de
local      all  --  anywhere             anywhere
www        tcp  --  anywhere             anywhere           tcp spt:http
www        tcp  --  anywhere             anywhere           tcp spt:https
www        tcp  --  anywhere             anywhere           tcp spt:22202
ftp        tcp  --  anywhere             anywhere           tcp spts:ftp-data:ftp
rsync      tcp  --  anywhere             anywhere           tcp spt:rsync
cvs        tcp  --  anywhere             anywhere           tcp spts:cvspserver:2404
mail       tcp  --  anywhere             anywhere           tcp spt:smtp
mail       tcp  --  anywhere             anywhere           tcp dpt:smtp
misc       tcp  --  anywhere             anywhere           tcp spt:ssh
misc       tcp  --  anywhere             anywhere           tcp spt:domain
misc       udp  --  anywhere             anywhere           udp spt:domain
misc       tcp  --  anywhere             anywhere           tcp spt:auth
outgoing   tcp  --  anywhere             anywhere           tcp dpts:0:1024
outgoing   udp  --  anywhere             anywhere           udp dpts:0:1024
ip_local_port_range  tcp  --  anywhere             anywhere           tcp spts:32768:61000
ip_local_port_range  tcp  --  anywhere             anywhere           tcp dpts:32768:61000
fragment   all  -f  anywhere             anywhere
unknown    all  --  anywhere             anywhere

Chain cvs (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain fragment (2 references)
target     prot opt source               destination

Chain ftp (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain ip_local_port_range (4 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain local (6 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain mail (4 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain misc (8 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain outgoing (4 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain related (0 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain rsync (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain unknown (2 references)
target     prot opt source               destination

Chain www (6 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
Mit Zitat antworten
  #12  
Alt 05.01.2006, 12:00
Benutzerbild von Huschi
Huschi Huschi ist offline
Moderator
 
Registriert seit: 09.2003
Ort: Nürnberg
Beiträge: 15.408
Blog-Einträge: 5
Zitat:
Zitat von Joker
Nach start von IAM und Eingabe von "iptables -L" erscheint folgendes:
Ist ja alles drin. Scheint doch ganz ok zu sein.
Gibt es denn jetzt weitere Probleme?

huschi.
__________________
huschi.net - Linux-Server-Admin FAQ
Consult-N.de - kommerzieller Linux-Support
Mit Zitat antworten
  #13  
Alt 10.06.2006, 19:10
ruban ruban ist offline
Registered User
 
Registriert seit: 04.2006
Beiträge: 9
MOD: FULL-QUOTE gelöscht!

S4Y - vServer:

Starting iptables ip accounting: Bad argument `intevation'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `intevation'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.2.11: Couldn't load target `misc':/lib/iptables/libipt_misc.so: cannot open shared object file: No such file or directory

Geändert von Huschi (10.06.2006 um 20:20 Uhr)
Mit Zitat antworten
  #14  
Alt 10.06.2006, 20:22
Benutzerbild von Huschi
Huschi Huschi ist offline
Moderator
 
Registriert seit: 09.2003
Ort: Nürnberg
Beiträge: 15.408
Blog-Einträge: 5
Zitat:
Zitat von ruban
Starting iptables ip accounting: Bad argument `intevation'
Siehe Beitrag Nummer 6.
Boardsuche oder Suchfunktion des Browsers nach 'intevation' hätte es auch getan.

huschi.
__________________
huschi.net - Linux-Server-Admin FAQ
Consult-N.de - kommerzieller Linux-Support
Mit Zitat antworten
  #15  
Alt 07.09.2006, 20:39
Constan Constan ist offline
Registered User
 
Registriert seit: 08.2006
Beiträge: 2
Hallo habe mal eine Frage wie kann ich einzelne ports hinzufühgen beispiel,
22015 für ein CS Server.

danke im Vorraus
Mit Zitat antworten
Antwort

Lesezeichen

Anzeige:

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Huschi in China bekannt Thorsten Kurioses 2 04.03.2007 01:18
IAM Log teilen djrick Sonstige Serverdienste 2 18.08.2005 23:14
Spam & RBL Thorsten Mail 22 25.05.2004 18:40
Welcher php-debugger? fmschrader Perl / PHP / Python / bash 20 27.04.2004 10:53
RH7.3 -> PHP updaten madmat Virtuelle Server 21 11.01.2004 18:19


[Tutorial]Trafficauswertung mit IAM und Huschi
[Tutorial]Trafficauswertung mit IAM und Huschi
[Tutorial]Trafficauswertung mit IAM und Huschi [Tutorial]Trafficauswertung mit IAM und Huschi
Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Search Engine Optimisation provided by DragonByte SEO (Pro) - vBulletin Mods & Addons Copyright © 2016 DragonByte Technologies Ltd.