Bezpiecze±stwo system≤w Linux'owych |
Linux Security - Perl w administracji
|
|
[1] [2] |
W pisaniu program≤w do administracji bardzo przydatny jest Perl.
Perl jest jΩzykiem programowania nie wymagaj▒cym zbytnio wiedzy o
zarz▒dzaniu pamiΩci▒, budowie socket≤w i.t.p. W │atwy spos≤b mo┐na
zbudowaµ zaawansowane programy administracyjne.
Chcieliby╢my, aby nasz program pokazywa│ np. nieudane pr≤by logowania.
Do tego celu wykorzystamy plik log≤w (/var/log/secure).
Musimy wyszukaµ wszystkie linijki zawieraj▒ce
s│owo "Failure".
Przyk│adowy skrypt mo┐e wygl▒daµ w ten spos≤b: |
#!/usr/bin/perl open(plik,'/var/log/messages') or die "Nie moge otworzyc pliku!!\n"; while ( |
Wynik tego programu bΩdzie jednak nieczytelny:
|
May 23 12:34:12 localhost ftpd[22143]: 1 FTP LOGIN FAILURE from www.linux.org, somone May 24 2:54:23 localhost ftpd[22182]: 1 FTP LOGIN FAILURE from www.linux.org, somone |
Lepsz▒ przejrzysto╢µ mo┐na uzyskaµ po dodaniu opisu: kto, kiedy, sk▒d.
Tak wygl▒da ostatecznie kod skryptu: |
#!/usr/bin/perl open(tekst,'/var/log/messages') or die "Nie moge otworzyc pliku!!\n"; print "\n"; print "Bledne autoryzacje:\n"; print "\n"; printf "%-20s%-30s%-20s\n","HOST","DATA","LOGIN"; while ( |
Teraz w │atwy spos≤b mo┐emy odczytaµ nieudane pr≤by logowania:
|
HOST DATA LOGIN www.linux.org May 23 12:34:12 somone, 157.154.23.1 May 23 23:03:43 tronix, www.linux.org May 24 2:54:23 somone, |
W powy┐szym skrypcie zosta│a u┐yta funkcja split kt≤ra dzieli linie na
osobne ci▒gi znak≤w. Jako argument tej funkcji jest podane wyra┐enia \s+
, kt≤re oznacza jedn▒ lub wiΩcej spacji. Czyli ka┐da linia zostanie
podzielona na osobne │a±cuchy ze wzglΩdu na odstΩpy pomiΩdzy nimi a
nastΩpnie zapisana do tablicy.
Linia $user=~s/,//; oznacza zast▒pienia wszystkich znak≤w "," z │a±cucha przez znak pusty. Oczywi╢cie jako drugi argument funkcji s mo┐na podaµ dowolny ci▒g. Linia printf "%-20s%-30s%-20s\n",$adres,$czas,$user; oznacza wypisanie trzech zmiennych w odstΩpach: 20,30,20 spacji (3 kolumny) |