Clamav w duecie z crontab
Opublikowano: 25.02.2008 | Kategoria: Linux | Tagi: antywirus, bezpieczeństwo, clamav, crontab, Linux, serwer, ubuntu | Brak komentarzy »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ść zmiennejLOGI
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 statusem0
. 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