Clamav w duecie z crontab

Opublikowano: 25.02.2008 | Kategoria: Linux | Tagi: , , , , , , | Brak komentarzy »

Clamav+Crontab - hard drive clock

Wirusy i trojany, to zmora sieci opartych o systemy Microsoftu. Praktycznie każdy komputer nawet z oprogramowaniem antywirusowym (nie ma idealnego likwidatora szkodliwego kodu) może stać się nosicielem i poprzez współdzielone zasoby roznieść choróbsko na pozostałe stacje robocze. Jednym ze sposobów zabezpieczenia się przed robactwem, może być regularne skanowane współdzielonych na serwerze plików/domenowym zasobów. Rozwiązaniem dla serwera linuksowego jest np. Clamav regularnie skanujący pliki udostępniane użytkownikom sieci i gromadzone na serwerze. Clamav ma swoje wady, ale to już zawsze coś…

Założenia:
1. Chcemy skanować antywirusem wskazany zasób/katalog tylko w celu wykrycia wirusów i koni trojańskich.
2. Chcemy przeprowadzać skanowanie regularnie o ustalonej porze.
3. Chcemy otrzymywać powiadomienie, w przypadku wykrycia wirusa.
4. Chcemy gromadzić logi skanowania antywirusem.

Potrzebujemy:
1. Zainstalowanego Clamav’a z regularnie przeprowadzanymi aktualizacjami (freshclam).
2. Działającego serwera pocztowego (tutaj Postfix).

Skrypt (wyjaśnienia nieco niżej):

#!/bin/bash

SPRAWDZ="/home"
KATALOG="/skrypty/antyvirus"
LOGI="$KATALOG/antyvirus-`date +"%Y_%m_%d_%H%M"`.log"
EMAIL="$KATALOG/email.tmp"

/usr/local/bin/clamscan -i -r --quiet -l $LOGI $SPRAWDZ

echo "subject: Skanowanie antywirusem" > $EMAIL
echo "from: root@mojadomena.com" >> $EMAIL
echo "to: uzytkownik@mojainnadomena.com" >> $EMAIL

if [ -a $LOGI ]; then
       WIRUS=`cat $LOGI | grep FOUND |wc -l`
       if [ $WIRUS -gt 0 ]; then
               cat $LOGI >> $EMAIL
       else
               exit 0
       fi
else
       exit 1
fi

if [ -a $EMAIL ]; then
       cat $EMAIL | /usr/sbin/sendmail -t
else
       exit 1
fi

exit 0

Opis skryptu:

  • SPRAWDZ (linia 3) definiuje katalog, który ma być skanowany.
  • KATALOG (linia 4) określa katalog roboczy dla skryptu – miejsce, gdzie trzymamy skrypt i/lub umieszczamy wszelkie pliki wynikowe. Katalog należy wcześniej utworzyć , np. mkdir -p /skrypty/antyvirus
  • LOGI (linia 5) definiuje plik logów. Wartość zmiennej LOGI będzie wyglądać mniej więcej tak /skrypty/antyvirus/antyvirus-2008_02_25_0011.log.
  • EMAIL zmienna pomocnicza, na potrzeby stworzenia wiadomości email.
  • Linia 8, to wywołanie skanowania antywirusem Clamav. Aplikacja skanująca z pakietu Clamav to clamscan. Zastosowane parametry:
    -i – zgłaszanie jedynie zainfekowanych (bądź “niewłaściwych”) plików;
    -r – rekursywne skanowanie – skanowanie wszystkich plików i podkatalogów sprawdzanego katalogu głównego – SPRAWDZ;
    --quiet – wyłączenie wyświetlania informacji na ekranie o aktualnie skanowanym pliku (przebiegu skanowania);
    -l $LOGI – plik, w którym clamscan ma zapisywać informacje z przebiegu skanowania i podsumowanie;
    $SPRAWDZ – skanowany katalog.
  • Linie 10-12 odpowiadają za utworzenie pliku, który posłuży do wysłania wiadomości email z raportem skanowania. Zawartość przykładowego pliku email.tmp:
    subject: Skanowanie antywirusem
    from: root@mojadomena.com
    to: uzytkownik@mojainnadomena.com
    
    ----------------------------------------------------------------------------------------
    
    /home/aga/Dane aplikacji/Mozilla/Profiles/default/lzfht97o.slt/Cache/C5C3AF10d01:
    Adware.NewDotNet.B-3 FOUND
    /home/aga/agawert/Local Folders/Trash: Worm.Stration.NP FOUND
    
    ----------- SCAN SUMMARY -----------
    Known viruses: 217840
    Engine version: 0.92.1
    Scanned directories: 2957
    Scanned files: 19622
    Infected files: 2
    Data scanned: 8372.96 MB
    Time: 5128.968 sec (85 m 28 s)
    
  • Linie 14-23 – sprawdzenie, czy w logach występuje ciąg FOUND sygnalizujący znalezienie zainfekowanego pliku przez skaner antywirusowy. W przypadku wykrycia słowa, email uzupełniany jest o logi clamscan. W przeciwnym razie działanie skryptu zostaje zakończone ze statusem 0. Można też pokombinować z rozpoznaniem ilości zainfekowanych plików w ciągu “Infected files: 2″
  • Linie 25-29 – wysłanie wiadomości email na podstawie pliku email.tmp

Skrypt zapisujemy np. w pliku skanuj_home.sh i nadajemy mu prawa do wykonywania:

chmod 740 skanuj_home.sh

Czas na utworzenie wpisu w crontab. Edytujemy jako root (w przypadku, gdy skanowanym katalogiem jest /home inny użytkownik może nie mieć odpowiednich praw dostępu do katalogów użytkowników) zaplanowane zadania poleceniem crontab -e. Wpisujemy np.:

20 2 * * *  /skrypty/antyvirus/skanuj_home.sh &> /dev/null

W ten sposób, codziennie o 2:20 wskazany katalog zostanie przeskanowany.

Przedstawiłem tutaj jedynie przykładowe wykorzystanie duetu Clamav + Crontab. Ograniczyłem się jedynie do podstawowych możliwości Clamav. Zachęcam jednak do dokładniejszego zainteresowania się jego dokumentacją.

Wykorzystano zdjęcie Hard Drive Clock autorstwa Trevora Manternacha (CC).

Podziel się:
  • Wykop
  • Facebook
  • Twitter
  • del.icio.us
  • Google Bookmarks


Skomentuj

Aby uatrakcyjnić czy też wzbogadzić swój komentarz o linki lub typografię, możesz wykorzystać następujące tagi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>