Have You Tried IT ?

Information Technology from scratch

Sprawdzenie hostów z logów serwera w access_log

Dodano przez Kategoria: Linux

Na serwerze istnieją pewne niepubliczne zasoby, od których docierają tylko pracownicy firmy. Gdy zajdzie podejrzenie o nieautoryzowane próby dostępu lub włamania do tych zasobów, trzeba sprawdzić z jakich adresów IP i hostów następowały wywołania. Na tej podstawie, wstępnie można będzie ocenić, czy ktoś niepowołany próbował się tam dostać.

Plik access_log zawiera logi wszystkich żądań dostępu do serwera, gdzie zapisywane są takie informacje jak m.in. adres ip, data i czas, metoda wywołania, zasób (adres), informacje o przeglądarce.
W przypadku mojej dystrybucji (CentOs + Plesk) plik access_log dla domen podpiętych z panelu Plesk znajduje się w lokalizacji
/var/www/vhosts/domena-o-niczym.pl/statistics/logs.
Natomiast dla domyślnego adresu serwera (/var/www/vhosts/default/) znajduje się tutaj
/var/log/httpd/access_log

Aby wyświetlić unikalną listę wszystkich adresów IP:

grep 'tajny-zasob' access_log | awk '{ print $1 }' | sort -n | uniq -c | sort –rn
  • tajny-zasob – to kluczowe słowo, po którym będzie przeszukiwany log, może to być unikalny fragment adresu do zasobu albo ewentualnie fragment daty, z której chcę przeanalizować logi (np. ‚1/May/2012’)
  • awk ‚{ print $1 }’  – zwraca pierwszą wartość z przeszukanego wiersza, tutaj będzie to adres IP
  • sort -n – sortowanie numeryczne
  • uniq -c – zwraca unikalne wartości, parametr -c powoduje dodanie na początku ilości wystąpień danej wartości
  • sort –rn – sortowanie numeryczne, parametr -r powoduje zwracanie w odwrotnej kolejności (od największej do najmniejszej)

Wynik może mieć postać np. taką:

  13171 83.11.11.11
   2943 84.22.22.22
     89 85.33.33.33
     63 86.44.44.44
     44 87.55.55.55
     36 91.11.11.11

 

Natomiast łatwiej jest zidentyfikować podejrzane nazwy hostów niż same adresy IP. Dlatego żeby zwrócić nazwy hostów dla tych domen trzeba użyć tego:

grep 'tajny-zasob' access_log | awk '{ print "host " $1 }' |  sort | uniq | sh

Tutaj zwracana jest wartość host XX.XX.XX.XX, która jest jednocześnie komendą i na końcu jest wykonywana. Po jej wykonaniu zwracane są nazwy hostów dla każdej z domen.

Plik access_log jest automatycznie rotowany, tzn. że zawiera informacje wstecz ograniczone do wielkości pliku bądź okresu czasu. Na początku każdego miesiąca plik zmienia nazwę na access_log.1 (lub access_log.processed), a nowe logi zapisywane są do pliku access_log od początku.

 

Generalnie samo to sprawdzanie nazw hostów jest pierwszym i najbanalniejszym z możliwych kroków, w przypadku podejrzeń o włamanie, no ale od czegoś trzeba zacząć 😉

Dodaj komentarz

XHTML: Dozwolone znaczniki: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">