Wie analysiere ich das FTP-Logfile (proftpd) /var/log/xferlog?
Format des Logfiles
Die Analyse des Transferlogfiles von proftpd ist ohne Referenz leider etwas mühsam. Wir verwenden folgende Zeile als Beispiel zur Analyse eines Eintrags in /var/log/xferlog:
Sat Oct 18 11:30:06 2008 10 99.99.99.99 267650 /var/www/web999/html/bild.jpg b _ o r web999 ftp 0 * c
Bereich | Erklärung | Werte |
---|---|---|
Sat Oct 18 11:30:06 2008 | Zeitstempel des Transfervorgangs | - |
10 | Transferzeit in Sekunden | - |
99.99.99.99 | IP-Adresse des FTP-Clients (Remote Host) | - |
267650 | Zahl der übertragenen Bytes | - |
/var/www/web999/html/index.php | Betroffene Datei | |
b | Transfertyp | a (ASCII/Text) b (binär) |
_ | Special Action Flag | _ (keine Aktion) C (komprimiert) U (dekomprimiert) |
o | Richtung das Transfers aus Serversicht | i (eingehend) o (ausgehend) d (gelöscht [keine Richtung]) |
r | Zugriffsmodus | a (anonym) r (Benutzername) |
web999 | Benutzername | - |
ftp | Name des Serverdienstes | - |
0 | Authentifizierungs-Methode | 0 (keine besondere) 1 (RFC931 Authentifizierung) |
* | User-ID (oder *) | - |
c | Status | c (vollständig ausgeführt) i (unvollständig ausgeführt) |
Analyse des Logfiles
Um das Logfile bzw. den Datentransfer via FTP zu analysieren, empfehlen sich folgende Befehle:
Alle Aktionen, die abgebrochen wurden, haben an letzter Stelle des Eintrags ein "i" für "incomplete". Wir verwenden ein einfaches egrep, um entsprechende Zeilen anzuzeigen:
egrep "i$" /var/log/xferlog
Alle abgebrochenen Uploads können haben als Richtungsangabe "i" für "incoming" und wie erwähnt ein "i" am Ende der Zeile für "incomplete":
awk ’($12 ~ /^i$/ && $NF ~ /^i$/){print $9}’ /var/log/xferlog
Alle erfolgreichen Uploads können wir ebenso abfragen. Sie haben als Richtungsangabe ebenfalls ein "i" für "incoming", jedoch ein "c" am Ende der Zeile für "complete":
awk ’($12 ~ /^i$/ && $NF ~ /^c$/){print $9}’ /var/log/xferlog
Alle Löschaktionen haben als Richtungsangabe ein "d" für "delete". Mit folgendem Befehl werden diese gefiltert:
awk ’($12 ~ /^d$/){print $9}’ /var/log/xferlog
Alle Löschaktionen eines Benutzers mit Zeitangabe werden wie folgt angezeigt:
awk ’($12 ~ /^d$/){print $3 $2 $5 $4 $9}’ /var/log/xferlog | grep web999