Loggen, aber richtig....

Das Protokollieren von Zugriffen oder Befehlen ist sehr wichtig fuer den Betrieb eines FTP Servers. Nur so koennen Abrechnungen, Statistiken und Ueberwachungen durchgeführt werden.

 

ProFTPD stellt unterschiedliche Logformate und Logdateien zur Verfügung. Diese muessen jedoch explizit aktiviert werden, damit ProFTPD überhaupt logt:

 

Transfer Log
Frei definierte Logs
15/05 2003

Transferlog

Das Transferlog kann ohne weitere Parameter aktiviert werden:

TransferLog /var/log/proftpd.xferlog

 

In der angegeben Datei (hier eben: /var/log/proftpd.xferlog) werden folgende Werte geloggt:

 

  • aktuelle Zeit
  • Uebertragungszeit in Sekunden
  • Name des Remote Computers
  • Dateigroesse
  • Dateiname
  • Transfertyp ("a": Ascii; "b": Binary)
  • Aktion Flag ("C": Datei war komprimiert; "U": Datei war unkomprimiert; "T": Tarball)
  • Richtung ("o": Outgoing; "i": incoming, "d": Delete)
  • Zugriffsmode ("a": Anonym; "r": richtiger User)
  • Username (Achtung bei Anonym das uebergebene Passwort)
  • Service Name (normalerweise "FTP")
  • Authentifizierungsmethode ("0": keine; "1": RFC931 Authentication)
  • Rueckmelde ID ("*": wenn keine Rueckmelde ID kam)
  • Komplett ("c": komplett; "i": nicht komlett). Achtung: uploads sind immer "c", da ProFTPD nicht erkennen kann, wann das Ende kommt

 

 

15/05 2003

Extended Logs

Ueber die ExtendedLog Direktive kann ProFTPD sehr flexibel loggen. Diese Direktive setzt sich aus zwei Direktiven zusammen: Logformat und ExtendedLog.

 

Zunaechst werden ueber Logformat die Logfiles definiert:

LogFormat default "%h %l %u %t \"%r\" %s %b"

In diesem Beispiel haben wir ein Logformat mit den Namen "default" definiert, das einige Felder enthaelt. Die "%" Variablen werden dann spaeter von ProFTPD beim loggen ersetzt:

 

 

key  
value  
e.g. 
%A  
Anonymous username (password given) or UNKNOWN if non- anonymous  
 
%a  
Remote client IP address  
 
%b  
Bytes sent for request  
 
%c  
Class  
 
%D  
vollstaendiges Verzeichnis  
 
%d  
vollstaendiges Verzeichnis fuer den Client. Ggf. durch "defaultroot" veraendert  
 
%f  
Filename stored or retrieved, absolute path (not chrooted)  
 
%F  
Filename stored or retrieved, as the client sees it 
%{FOOBAR}e  
Contents of environment variable FOOBAR. Note that the server does not set any environment variables itself.  
 
%h  
Remote host name  
192.168.1.115 
%l  
Remote username (from ident), or UNKNOWN if ident lookup failed  
UNKNOWN 
%L  
local Server IP Address  
 
%m  
Command (method) name received from client, e.g., RETR  
RETR 
%p  
Local server port number 
%P  
Process ID of child Serving Request  
12909 
%r  
full request (command)  
RETR text.txt 
%s  
Resonse Code (status)  
 
%T  
Time taken to serve requests, in seconds  
 
%t  
Time  
[28/Feb/2003:01:22:56 +0100] 
%{format}t  
Formatted Time. (strftime(3) Format)  
 
%U  
Original Username to by client  
 
%u  
Local authenticated userid  
wwwadmin 
%v  
Local server name  
ProFTPD Default Installation 

 

 

Nun im zweiten Teil definieren wir dann die eigentliche Logdatei:

ExtendedLog /var/log/proftpd.paranoid_log ALL default

 

Als Parameter fuer den Befehl "ExtendedLog" geben wir drei Parameter an:

Filename (in diesem Fall /var/log/proftpd.paranoid_log)
Die Klasse (in diesem Fall All)
NONE: bei keinen Befehlen
AUTH: Anmelde Befehle (USER, PASS)
INFO: Info Befehle (PWD, SYST, etc)
DIRS: Verzeichnis Befehle (LIST, CWD, MKD, etc)
READ: Lese Befehle (RETR)
WRITE: Schreiben oder erstellen
MISC: Sonstige (SITE, etc)
ALL: Alle Befehle
der Name der oben definierten Log Klasse

 

 

Beispiele:

 

# Some logging formats

 

 

 

LogFormat default "%h %l %u %t \"%r\" %s %b"

 

 

 

LogFormat auth "%v [%P] %h %t \"%r\" %s"

 

 

 

LogFormat write "%h %l %u %t \"%r\" %s %b"

 

 

# Log file/dir access

ExtendedLog /var/log/proftpd.access_log WRITE,READ write

 

# Record all logins

ExtendedLog /var/log/proftpd.auth_log AUTH auth

 

# Paranoia logging level....

ExtendedLog /var/log/proftpd.paranoid_log ALL default