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).



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=""> <s> <strike> <strong>