Die Webseiten der Fachschaft Informatik am ERG Saalfeld


Analyse der logon.log

Aufgabe: Es soll eine Übersicht über die Nutzung des Schulnetzes erstellt werden. Dazu soll das Login des Users, der Rechnername und das Datum und die Uhrzeit der Windows-Anmeldung in einer Tabelle ausgegeben werden.
 


Jede Anmeldung eines Nutzers unseres Schulnetzes an der Windows-Domäne wird in der Datei logon.log gespeichert, wobei jede Zeile dieser Datei zu einer Anmeldung gehört. Diese Zeilen sind alle so aufgebaut wie in den folgenden 2 Beispielen:

Sep  3 08:48:32 alix Samba-prelogon: %u hkirmse %U hkirmse %a Vista %g teachers %G teachers %m ap09 %t 1409726912

bzw.

Sep 15 14:37:04 alix Samba-prelogon: %u mmustermann %U mmustermann %a WinXP %g students %G students %m pc12 %t 1410784624


Man kann diese Zeile so beschreiben:

    1.   der Monat mit 3 Buchstaben \w{3} 14.   ein Leerzeichen \s 27.   '%G' für Gruppe von %U %G
    2.   ein oder zwei Leerzeichen \s{1,2} 15.   '%U' für Login-Anmeldung %U 28.   ein Leerzeichen \s
    3.   der Tag (ein- oder zweistellig) \d{1,2} 16.   ein Leerzeichen \s 29.   die Gruppe des Users \w+
    4.   ein Leerzeichen \s 17.   das Login des Users \w+ 30.   ein Leerzeichen \s
    5.   Die Uhrzeit \d\d:\d\d:\d\d 18.   ein Leerzeichen \s 31.   '%m' für Rechnername %m
    6.   ein Leerzeichen \s 19.   '%a' für Client-BS %a 32.   ein Leerzeichen \s
    7.   der Servernamen 'alix' alix 20.   ein Leerzeichen \s 33.   der Rechnername \w*
    8.   ein Leerzeichen \s 21.   das Betriebssystem \w+ 34.   ein Leerzeichen \s
    9.   der String 'Samba-prelogon:' \w+-\w+: 22.   ein Leerzeichen \s 35.   '%t' für 'Computerzeit' %t
    10.   ein Leerzeichen \s 23.   '%g' für Gruppe von %u %g 36.   ein Leerzeichen \s
    11.   '%u' für aktueller Benutzername %u 24.   ein Leerzeichen \s 37.   Computerzeit \d{10}
    12.   ein Leerzeichen \s 25.   die Gruppe des Users \w+        
    13.   das Login des Users \w+ 26.   ein Leerzeichen \s        


Damit ergibt sich als Regex zur Beschreibung einer solchen Zeile des Logfiles:

\w{3}\s{1,2}\d{1,2}\s\d\d:\d\d:\d\d\salix\s\w+-\w+:\s%u\s\w+\s%U\s\w+\s%a\s\w+\s%g\s\w+\s%G\s\w+\s%m\s\w*\s%t\s\d{10}

Konzept:

  • wir lesen das Logfile ein und stecken das in eine Liste
  • für jedes Element dieser Liste tuen wir Folgendes:
    • wir matchen dieses Element (die Zeile des Logfiles) mit der Regex
    • dabei holen wir den Tag, den Monat, die Uhrzeit, das Login und den Rechnernamen aus der Zeile des Logfiles
    • wir geben diese Daten aus

 

Programm

#!/usr/bin/perl
use strict;
use warnings;

my $datei = 'logon.log';       # Datei muss im gleichen Verzeichnis liegen

# wir lesen das Logfile ein
my @liste = ();
open FILE, '<', $datei or die "konnte $datei nicht zum Lesen oeffnen. $!\n";
while (my $zeile = <FILE>) {
  push @liste, $zeile;
}
close FILE;

# für jedes Element dieser Liste tun wir Folgendes:
foreach my $zeile (@liste) {
  # wir matchen dieses Element (die Zeile des Logfiles) mit der Regex
  if ($zeile =~ /^(\w{3})\s{1,2}(\d{1,2})\s(\d\d:\d\d:\d\d)\salix\s\w+-\w+:\s%u\s(\w+)\s%U\s\w+\s%a\s\w+\s%g\s\w+\s%G\s\w+\s%m\s(\w*)\s%t\s\d{10}\s*$/) {
    &ausgabe($2, $1, $3, $4, $5); # Tag, Monat, Uhrzeit, Login, Rechnername
  }
}

sub ausgabe {
  my ($tag, $monat, $zeit, $login, $pc) = @_;
  print "$tag.$monat $zeit \t $login \t $pc \n";
}

__END__

 

Der Ausgabe sah bei mir so aus:

 

Aufgaben zu Perl

  1. Bringen Sie das Programm zum Laufen. Nutzen Sie dazu das hier bereitgestellte Logfile.
  2. Zeichnen Sie zu diesem Programm ein Struktogramm
  3. Überarbeiten Sie das Programm so, dass die Ausgabe in Tabellenform erfolgt (korrekte Spalten)
  4. Überarbeiten Sie das Programm so, dass auch das Betriebssystem des Rechners ausgegeben wird.
  5. Überarbeiten Sie das Programm so, dass das Datum in der Form 03.11. ausgegeben wird
  6. Überarbeiten Sie das Programm so, dass die Uhrzeit in der Form "09.20 Uhr" ausgegeben wird (Sekunden entfallen).
  7. Testen Sie diese Regex: /^(...)\s+(..?) (..:..:..) alix Samba-prelogon: %u (.+) %U .+ %a .+ %g .* %G .+ %m (.*) %t/. Welche ist besser?
  8. Ergänzen Sie das Programm um eine Überschrift (unterstrichen, Leerzeile).
  9. Ergänzen Sie das Programm um einen passenden Tabellenkopf.

Aufgaben zum Datenschutz

  1. Begründen Sie, warum es aus Sicht der Schule bzw. des Admins sinnvoll oder gar zwingend notwendig ist, ein Anmeldelogfile zu haben.
  2. Begründen Sie, warum normalerweise die Speicherung der Anmeldedaten nicht zulässig (also verboten) ist.
  3. Erläutern Sie, wie am ERG dieses Problem gelöst ist und die Anmeldung doch geloggt wird.
  4. Erläutern Sie, welche Risiken aus Sicht der User (Schüler) hinsichtlich des Datenschutzes dabei auftreten.
  5. Erläutern Sie, durch welche Maßnahmen diese Risiken minimiert werden bzw. werden können.
  6. Schätzen Sie kritisch ein, wie die Umsetzung des Datenschutzes bzgl. unseres Schulnetzes umgesetzt ist. Bewerten Sie diese Probleme (Bagatelle, unbedeutend, ...)!
  7. Sie arbeiten hier mit einem (modifizierten) Logfile unseres Schulservers. Bewerten Sie die Bereitstellung dieses Logfiles durch den Informatiklehrer.

 

Weblinks

 

zurück


© ERG Saalfeld   -   Hans-Dietrich Kirmse   18.01.2015