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 |
TransferlogDas 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
Extended LogsUeber 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"
ExtendedLog /var/log/proftpd.access_log WRITE,READ write ExtendedLog /var/log/proftpd.auth_log AUTH auth # Paranoia logging level.... ExtendedLog /var/log/proftpd.paranoid_log ALL default
|