<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> <meta name="keywords" content="ClamAV, Samba, samba-vscan, AntyVir, Linux, UNIX"> <meta name="description" content="::: ClamAV / Samba / samba-vscan :::"> <meta name="author" content="doozer"> <title>::: ClamAV / Samba / samba-vscan :::</title> <style type="text/css"> P { font-size : 12px; font-style : normal; color : #000000; font-family : verdana, arial, helvetica, sans-serif; text-decoration : none; text-align : justify; } A { font-size : 12px; font-style : normal; font-weight : bold; color : #4457c9; font-family : verdana, arial, helvetica, sans-serif; text-decoration : none; } A:Visited { font-size : 12px; font-style : normal; font-weight : bold; color : #4457c9; font-family : verdana, arial, helvetica, sans-serif; text-decoration : none; } A:Active { font-size : 12px; font-style : normal; font-weight : bold; color : #4457c9; font-family : verdana, arial, helvetica, sans-serif; text-decoration : none; } A:Hover { color : #000000; font-size : 12px; font-style : normal; font-weight : bold; font-family : verdana, arial, helvetica, sans-serif; text-decoration : none; } BODY { font-size : 12px; font-style : normal; color : #000000; font-family : verdana, arial, helvetica, sans-serif; background-color : #ffffff; text-decoration : none; text-align : left; margin: 0; } PRE { color: #000080; font-size: 12px; border: 1px solid #000000; padding: 3pt; background-color: #dddddd; font-family : verdana, arial, helvetica, sans-serif; } TABLE { border-collapse: collapse; border-color: #000000; border: 0; background-color: #ffffff; } TD { font-size : 12px; font-style : normal; font-weight : normal; color : #000000; font-family : verdana, arial, helvetica, sans-serif; text-decoration : none; border-color: #000000; } TD.rtw { font-size : 12px; font-style : normal; font-weight : normal; color : #ffffff; font-family : verdana, arial, helvetica, sans-serif; text-decoration : none; border-color: #000000; } TD.rall { border-left-width: 1pt; border-left-style: solid; border-top-width: 1pt; border-top-style: solid; border-right-width: 1pt; border-right-style: solid; border-bottom-width: 1pt; border-bottom-style: solid; border-color: #000000; } TD.rl { border-left-width: 1pt; border-left-style: solid; border-top-width: 0pt; border-top-style: none; border-right-width: 0pt; border-right-style: none; border-bottom-width: 0pt; border-bottom-style: none; border-color: #000000; } TD.rt { border-left-width: 0pt; border-left-style: none; border-top-width: 1pt; border-top-style: solid; border-right-width: 0pt; border-right-style: none; border-bottom-width: 0pt; border-bottom-style: none; border-color: #000000; } TD.rt_dddddd { border-left-width: 0pt; border-left-style: none; border-top-width: 1pt; border-top-style: solid; border-right-width: 0pt; border-right-style: none; border-bottom-width: 0pt; border-bottom-style: none; border-color: #dddddd;; } TD.rlr { border-left-width: 1pt; border-left-style: solid; border-right-width: 1pt; border-right-style: solid; border-color: #000000; } TD.rlr_b { border-left-width: 4pt; border-left-style: solid; border-right-width: 4pt; border-right-style: solid; border-color: #000000; } TD.rlb { border-left-width: 1pt; border-left-style: solid; border-top-width: 0pt; border-top-style: none; border-right-width: 0pt; border-right-style: none; border-bottom-width: 1pt; border-bottom-style: solid; } TD.rltr { border-left-width: 1pt; border-left-style: solid; border-top-width: 1pt; border-top-style: solid; border-right-width: 1pt; border-right-style: solid; border-bottom-width: 0pt; border-bottom-style: none; } TD.rltr_b { border-left-width: 4pt; border-left-style: solid; border-top-width: 1pt; border-top-style: solid; border-right-width: 4pt; border-right-style: solid; border-bottom-width: 0pt; border-bottom-style: none; } TD.rrb { border-left-width: 0pt; border-left-style: none; border-top-width: 0pt; border-top-style: none; border-right-width: 1pt; border-right-style: solid; border-bottom-width: 1pt; border-bottom-style: solid; } TD.rr { border-left-width: 0pt; border-left-style: none; border-top-width: 0pt; border-top-style: none; border-right-width: 1pt; border-right-style: solid; border-bottom-width: 0pt; border-bottom-style: none; } TD.rltb { border-left-width: 1pt; border-left-style: solid; border-top-width: 1pt; border-top-style: solid; border-right-width: 0pt; border-right-style: none; border-bottom-width: 1pt; border-bottom-style: solid; } TD.rlt { border-left-width: 1pt; border-left-style: solid; border-top-width: 1pt; border-top-style: solid; border-right-width: 0pt; border-right-style: none; border-bottom-width: 0pt; border-bottom-style: none; } TD.rtr { border-left-width: 0pt; border-left-style: none; border-top-width: 1pt; border-top-style: solid; border-right-width: 1pt; border-right-style: solid; border-bottom-width: 0pt; border-bottom-style: none; } TD.rlrb { border-left-width: 1pt; border-left-style: solid; border-top-width: 0pt; border-top-style: none; border-right-width: 1pt; border-right-style: solid; border-bottom-width: 1pt; border-bottom-style: solid; } TD.rlrb_b { border-left-width: 4pt; border-left-style: solid; border-top-width: 0pt; border-top-style: none; border-right-width: 4pt; border-right-style: solid; border-bottom-width: 1pt; border-bottom-style: solid; } TD.rallwl { border-top-width: 1pt; border-top-style: solid; border-bottom-width: 1pt; border-bottom-style: solid; border-right-width: 1pt; border-right-style: solid; border-left-width: 0pt; border-left-style: none; } TD.rbottom { border-bottom-width: 1pt; border-bottom-style: solid; border-left-width: 1pt; border-left-style: solid; border-right-width: 1pt; border-right-style: solid; } TD.rlrbdotted { border-left-width: 1pt; border-left-style: dotted; border-top-width: 0pt; border-top-style: none; border-right-width: 1pt; border-right-style: dotted; border-bottom-width: 1pt; border-bottom-style: dotted; } TD.rbdotted { border-left-width: 0pt; border-left-style: none; border-top-width: 0pt; border-top-style: none; border-right-width: 0pt; border-right-style: none; border-bottom-width: 1pt; border-bottom-style: dotted; } TD.rn { border-left-width: 0pt; border-left-style: none; border-top-width: 0pt; border-top-style: none; border-right-width: 0pt; border-right-style: none; border-bottom-width: 0pt; border-bottom-style: none; border-color: #dddddd; } IMG { padding: 0; border: 0; border-color: #000000; } .rfoot { border-left-width: 1pt; border-left-style: solid; border-top-width: 1pt; border-top-style: solid; border-right-width: 1pt; border-right-style: solid; border-bottom-width: 1pt; border-bottom-style: solid; border-color: #000000; } .rfoot:link { color: #000000; text-decoration: none; border-left-width: 1pt; border-left-style: solid; border-top-width: 1pt; border-top-style: solid; border-right-width: 1pt; border-right-style: solid; border-bottom-width: 1pt; border-bottom-style: solid; border-color: #000000; } .rfoot:hover { border: 1px solid #0A246A; background-color: #B6BDD2; color: #000000; border-left-width: 1pt; border-left-style: solid; border-top-width: 1pt; border-top-style: solid; border-right-width: 1pt; border-right-style: solid; border-bottom-width: 1pt; border-bottom-style: solid; border-color: #000000; } .rfoot:visited { color: #000000; text-decoration: none; border-left-width: 1pt; border-left-style: solid; border-top-width: 1pt; border-top-style: solid; border-right-width: 1pt; border-right-style: solid; border-bottom-width: 1pt; border-bottom-style: solid; border-color: #000000; } </style> </head> <body bgcolor="#ffffff"> <center> <a name="#begin"> </a> <table width="100%" align="center" cellpadding="0" cellspacing="0" border="0"> <tr> <td bgcolor="#dddddd" width="100%" align="left" height="20" class="rn"></td> </tr> </table> <!-- LOGOTABLE --> <table width="100%" align="center" cellpadding="10" cellspacing="0" border="0"> <tr> <td bgcolor="#dddddd" width="8%" align="left" height="100" class="rt_dddddd"></td> <td bgcolor="#ffffff" width="24%" align="left" height="100" class="rlt"><img src="clam.png" alt="ClamAV Logo"></td> <td bgcolor="#ffffff" width="60%" align="left" height="100" class="rtr"> <b><font size="-1">ARTYKUŁ Z SERII</font></b><br> <b><font size="+1">Ochrona antywirusowa z wykorzystaniem ClamAV</font></b><br><br> <font size="+1">Jak zmusić Sambę do pracy z ClamAV</font> </td> <td bgcolor="#dddddd" width="8%" align="left" height="100" class="rt_dddddd"></td> </tr> </table> <!-- end LOGOTABLE --> <!-- TOPTABLE --> <table width="100%" align="center" cellpadding="10" cellspacing="0" border="0"> <tr> <td bgcolor="#dddddd" colspan="1" valign="top" align="left" width="8%" height="200"> </td> <td colspan="1" valign="top" align="left" width="84%" height="200" class="rlrb"> <br><br><b>Spis treści</b> <br><b>1.</b> <a href="samba_clamav.html#a1">Wprowadzenie</a> <br><b>2.</b> <a href="samba_clamav.html#a2">Jak to działa?</a> <br><b>3.</b> <a href="samba_clamav.html#a3">Zapotrzebowanie na oprogramowanie</a> <br><b>4.</b> <a href="samba_clamav.html#a4">Konfiguracja serwera Samba</a> <br><b>5.</b> <a href="samba_clamav.html#a5">Kompilacja ClamAV</a> <br><b>6.</b> <a href="samba_clamav.html#a6">Uruchamianie</a> <br><b>7.</b> <a href="samba_clamav.html#a7">Obserwacje i analiza logów</a> <br><br><br> Najnowsza wersja tego dokumentu jest zawsze dostępna pod <a href="http://clamav.skc.com.pl/howtos/samba_clamav.html">tym adresem</a>.<br><br> Artykuł ten jest drugim z serii poświęconej ochronie antywirusowej w systemach *nixowych z wykorzystaniem programu antywirusowego ClamAV. Ponieważ każdy z nich traktuje o innych aspektach tej ochrony i artykuły nie stanowią jednej spójnej całości, część opisów w każdym z nich będzie się powtarzać. Nie chcę bowiem żeby czytelnicy musieli się przekopywać przez wszystkie z artykułów aby znaleźć dodatkowe informacje. Najistotniejsze zagadnienia tj. krótkie opisy ClamAV i jego środowiska, aktualizację baz danych wirusów, itp. omawiam w każdym z moich tekstów. Strukturę dokumentów również postaram się zachować w miarę ujednoliconą.<br> Chrońmy więc biedne windowsy naszych użytkowników przed złowrogimi, imperialistycznymi wirusami. Niech moc będzie z Wami :-) <a name="a1"> </a> <br><br><br><b>1. Wprowadzenie</b> <br><br>Jak już w tytule mogliście przeczytać, opiszę sposób w jaki można połączyć <a href="http://www.samba.org/">Sambę</a> z tworzonym na licencji GPL, programem antywirusowym <a href="http://www.clamav.net/">ClamAV</a>. Projekt zapoczątkowany został przez Tomasza Kojma a obecnie rozwijany jest przez <a href="http://www.clamav.net/team.html">międzynarodowy zespół programistów</a>.<br> W chwili powstawania tego HOWTO, ostatnią stabilną wersją ClamAV był 0.67.1 tak więc wszelkie pliki konfiguracyjne i rozwiązania będą omawiane w oparciu o tę wersję. Zachęcam Was również do prób ze <a href="http://www.clamav.net/snapshot/">snapshotami</a>. Można tam znaleźć naprawdę wiele nowych i przydatnych funkcji.<br> Połączenie Samby z ClamAV w porównaniu z <a href="http://clamav.skc.com.pl/howtos/sendmail_clamav.html">połączeniem Sendmaila z ClamAV</a> jest dziecinnie proste. Konfiguracja ogranicza się w zasadzie do kilku podstawowych kroków. Znajomość serwera Samba przyda się jednak bardzo i osoby dobrze poruszające się w pliku konfiguracyjnym tego pakietu będą miały ułatwione zadanie. <a name="a2"> </a> <br><br><br><b>2. Jak to działa?</b> <br><br>Pomostem pomiędzy Sambą a ClamAV będzie <a href="http://www.openantivirus.org/projects.php">samba-vscan</a>. Autorem programu jest <b>Rainer Link</b> a prace nad projektem zapoczątkowane zostały w połowie maja 2001.<br><br> <i>samba-vscan</i> jest rodzajem filtra, który operuje na wirtualnym systemie plików Samby - <i>VFS</i> (ang. <i>Virtual File System</i>). VFS to nic innego jak zbiór udogodnień dodanych do już istniejącego systemu plików. Wprowadza między innymi dodatkowe wywołania; operacje na katalogach (<i>opendir, readdir, mkdir, itd</i>) i plikach (<i>open, read, close, write, itd</i>).<br> Wywołania te pozwalają programowi <i>samba-vscan</i> na podczepienie się pod nie i wykonanie pewnego kodu a dokładniej sprawdzenia pliku pod kątem występowania w nim wirusów. Więcej na temat VFS dowiecie się <a href="http://www.geocities.com/orville_torpid/papers/vfs_tutorial.html">tutaj</a> lub w dokumentacji Samby. <br><br>Co to oznacza w praktyce? Otóż każde żądanie otwarcia katalogu/pliku stworzenie nowego lub jakakolwiek operacja na katalogach lub plikach, może być filtrowana a następnie może zostać podjęta decyzja co zrobić z danym obiektem. <br><br><i>samba-vscan</i> łączy się z demonem ClamAV - <b>clamd</b> poprzez <i>local socket</i>. W tym celu w pliku konfiguracyjnym <i>clamav.conf</i> musimy określić ścieżkę do socketu, np: <pre> LocalSocket /var/run/clamav/clamd.sock # Określenie pliku dla lokalnego socketu </pre> Po połączeniu z <i>clamd</i>, <i>samba-vscan</i> sprawdza plik pod kątem występowania w nim wirusów. <a name="a3"> </a> <br><br><br><b>3. Zapotrzebowanie na oprogramowanie</b> <br><br> - ClamAV v0.67.1 - <a href="http://prdownloads.sourceforge.net/clamav/">http://prdownloads.sourceforge.net/clamav/</a> <br> - Samba 3.0.1 - <a href="ftp://giswitch.sggw.waw.pl/pub/unix/samba/">ftp://giswitch.sggw.waw.pl/pub/unix/samba/</a> <br> - samba-vscan 0.3.5-alpha2 - <a href="http://www.openantivirus.org/snapshots/">http://www.openantivirus.org/snapshots/</a> <br><b>ClamAV posiada wbudowaną obsługę formatów RAR (2.0), Zip, Gzip, Bzip2.</b> <br><br> <b>Skrypty startowe</b> <br> - Skrypty startowe, które uruchamiają Sambę i clamd: <br> <a href="http://clamav.skc.com.pl/howtos/files/rc.samba">rc.samba</a> <br> <a href="http://clamav.skc.com.pl/howtos/files/rc.clamd">rc.clamd</a> <br><br>Skrypty te zostały zrobione z myślą o dystrybucjach, które jako systemu startowego używają tego, który wywodzi się z systemów BSD. Ja używam dwóch dystrybucji, Slackware i shtOS i w tych dystrybucjach skrypty będą działać prawidłowo. Jeśli używacie systemu startowego System V, to musicie sami stworzyć sobie odpowiednie skrypty startowe. <br>Głównym skryptem startowym jest <i>rc.samba</i>. Po uruchomieniu go z opcją <i>start</i> zostanie również uruchomiony skrypt <i>rc.clamd</i>. <a name="a4"> </a> <br><br><br><b>4. Konfiguracja serwera Samba</b> <br><br>Ja używam obecnie wersji 3.0.1 ale samba-vscan działa również z wcześniejszymi wersjami Samby. <br>W dokumentacji samba-vscan, znajdziecie opisy dla wersji Samby wczesniejszych niz 2.2.4. Od wersji >= 2.2.4 az do aktualnej serii 3.0.x sposób instalacji jest taki sam. <br><br>Do dzieła: <br>Proponuję na początek dokładne zapoznanie się z zawartością pliku <i>INSTALL</i> pakietu samba-vscan. Może wyjaśni Wam ewentualne wątpliwośći i pytania a na pewno ułatwi zrozumienie działania całego rozwiązania.<br> Musicie pamiętać jeszcze o tym, że potrzebne nam są źródła Samby, nie wystarczy zwykła instalacja pakietów binarnych dla Waszej dystrybucji. Źródeł Samby wymaga samba-vscan.<br><br> Zaczynamy od kompilacji Samby. Ja stosuję kilka standardowych opcji dla configure, oto one: <pre> root@linux: cd samba_source/source Następnie wydajemy polecenie configure wraz z jego parametrami; CFLAGS="-march=i686 -mcpu=i686" \ ./configure \ --enable-cups \ --with-fhs \ --prefix=/usr \ --localstatedir=/var \ --bindir=/usr/bin \ --sbindir=/usr/sbin \ --with-lockdir=/var/cache/samba \ --sysconfdir=/etc \ --with-configdir=/etc/samba \ --with-privatedir=/etc/samba/private \ --with-codepagedir=/etc/codepages \ --with-smbmount \ --with-syslog \ --with-utmp \ --with-sambabook=/usr/share/swat/using_samba \ --with-ssl \ --with-sslinc=/usr/include/openssl \ --with-ssllib=/usr \ --with-msdfs \ --with-vfs \ --with-libsmbclient \ i386-slackware-linux Najważniejszą z opcji jest --with-vfs czyli kompilacja wirtualnego systemu plików, bez tego nici z naszej ochrony antywirusowej :) root@linux: make proto root@linux: make root@linux: make install </pre> Po tych czynnościach Samba jest już zainstalowana i gotowa do działania. Musicie jeszcze wykonać standarowe czynności tj, stworzenie pliku /etc/samba/smb.conf dodanie użytkowników i przydzielenie zasobów. Ale tego jak to zrobić dowiecie się z dokumentacji Samby :>. <br><br> Teraz zainstalujemy samba-vscan. Przed kompilacją musimy jescze określić nazwę dla socketu demona clamd z jakim będzie się łączył samba-vscan. W tym celu musimy wyedytować plik <i>samba-vscan_source/clamav/vscan-clamav.h</i> a w nim następującą linijkę: <pre> #define VSCAN_CLAMD_SOCKET_NAME "/var/run/clamd" i zmienić ją na #define VSCAN_CLAMD_SOCKET_NAME "/var/run/clamav/clamd.sock" </pre> a następnie: <pre> root@linux: cd samba-vscan_source/ root@linux: ./configure --prefix=/usr --with-samba-source=samba_source/source </pre> configure wypisze nam jakie moduły są dostępne w pakiecie. Wybieramy clamav i tylko dla niego skompilujemy odpowiedni moduł.<br> <pre> root@linux: make clamav </pre> <i>UWAGA: Nie należy uruchamiać polecenia make install</i> <br><br>Po zakończeniu poprawnej kompilacji, musimy skopiować bibliotekę <i>vscan-clamav.so</i> do katalogu <i>vfs</i> bibliotek Samby. <pre> cp samba-vscan_source/vscan-clamav.so /usr/lib/samba/vfs/vscan-clamav.so </pre> Teraz należy przekopiować plik <i>samba-vscan_source/openantivirus/vscan-oav.conf</i> do katalogu z plikiem konfiguracyjnym Samby, czyli do <i>/etc/samba</i> ale należy mu zmienić nazwę. Słowo <i>oav</i> w nazwie zamieniamy na nazwę naszego backendu, czyli na <i>clamav</i>. <pre> root@linux: cp samba-vscan_source/openantivirus/vscan-oav.conf /etc/samba/vscan-clamav.conf </pre> <br> W pliku INSTALL pakietu samba-vscan opisane są wszystkie opcje pliku konfiguracyjnego, ale ja postaram się również opisać kilka z nich. <pre> * max file size = [wartość w bajtach] To ustawienie pozwala na zdefiniowanie maksymalnego rozmiaru skanowanego pliku. Ustawienie rozmiaru na 0 oznacza, że wszystkie pliki będą skanowane. Domyślnie - 0; * verbose file logging = [True/False | yes/no | 1/0] Ustawienie tego parametru pozwoli na określenie jakie dane mają być zapisywane do logu systemowego. Jeśli wybierzemy opcję True (yes, 1) wówczas wszystkie informacje o dostępie do plików, nawet do nie zainfekowanych, będą logowane. Wybranie opcji False, pozwoli na zapisywanie tylko operacji dostępu do zainfekowanych plików. Domyślnie - False; * scan on open = [True/False | yes/no | 1/0] Ustala czy pliki mają być skanowane podczas ich otwierania. Domyślnie - yes; * scan on close = [True/False | yes/no | 1/0] Ustala czy pliki mają być skanowane podczas ich zamykania. Domyślnie - yes; * deny access on error = [True/False | yes/no | 1/0] Określa czy dostęp do pliku ma być zabroniony jeśli komunikacja z demonem antywirusowym zostanie utracona (nie będzie możliwe sprawdzenie pliku). Domyślnie - yes; * deny access on minor error = [True/False | yes/no | 1/0] Tak samo jak przy "deny access on error" ale dla mniejszych błędów. Domyślnie - yes. * send warning message = [True/False | yes/no | 1/0] Określa czy wysłać do użytkownika komunikat o znalezionym wirusie poprzez Windows Messenger Service (winpopup). Domyślnie - yes. UWAGA: W Windows 95/98 musi być uruchomiony klient "winpopup"; * infected file action = [quarantine | delete | nothing] Co samba-vscan ma zrobić z zainfekowanym plikiem: "quarantine" - plik zostanie przeniesiony do katalogu kwarantanny i zostanie mu zmieniona nazwa. Jeśli ta operacja się nie powiedzie, plik zostanie usunięty; "delete" - zainfekowany plik zostanie usunięty; "nothing" - zainfekowane pliki pozostaną nietknięte. Domyślnie - quarantine;. * quarantine directory = [scieżka do katalogu] Określa ścieżkę do katalogu kwarantanny. Domyślnie /tmp; * quarantine prefix = [przedrostek] Określa przedrostek dla plików kwarantanny. Domyślnie - vir-; * max lru files entries = [wartość] Gdy Windows próbuje otwierać jednocześnie plik w krótkich odstępach czasu, samba-vscan używa ostatnio użytego mechanizmu dostępu do pliku aby uniknąć wielokrotnego skanowania danego pliku. Ustawienie to pozwala określić maksymalną ilość wpisów w liście ostatnio użytych dostępów do plików. 0 - wyłącza zupełnie ten mechanizm. Domyślne - 100; * lru file entry lifetime = [wartość] Ustawia czas życia wpisów w liście lru (lista ostatnio użytych dostępów do plików). Czas podawany jest w sekundach. Domyślnie - 5; * exclude file types = [lista] Wyłącza ze skanowania typy plików znajdujące się na liście. Opiera się na typach MIME tak jak opcja "file -i". Zobacz dokumentację: man file Domyślnie - pusta lista. </pre> A <a href="http://clamav.skc.com.pl/howtos/files/vscan-clamav.conf">tutaj</a> możecie podejrzeć mój plik konfiguracyjny vscan-clamav.conf. <br><br>W pliku <i>/etc/samba/smb.conf</i> musimy jeszcze dodać odpowiednie wpisy dla poszczególnych udziałów, które chcemy chronić. Możemy chronić tylko wybrane udziały lub wszystkie zasoby Samby, to zależy tylko od miejsca w którym umieścimy odpowiednie wpisy w pliku smb.conf. Zasoby z naszymi "specjalnymi programami" możemy pozostawić poza oddziaływaniem programów antywirusowych :) <pre> [vscan] comment = virus-protected /samba directory path = /samba vfs object = vscan-clamav vscan-clamav: config-file = /etc/samba/vscan-clamav.conf writeable = yes browseable = yes guest ok = yes </pre> To by było na tyle odnośnie konfiguracji samba-vscan. <a name="a5"> </a> <br><br><br><b>5. Kompilacja ClamAV</b> <br><br>Przed rozpoczęciem kompilacji należy dodać nowego użytkownika - <i>clamav</i> <pre> root@linux: groupadd clamav root@linux: useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav </pre> Aby ClamAV skompilował się wraz z clamav-milter, należy uruchomić configure z opcją --enable-milter + jakieś nasze dodatkowe opcje, np: <pre> user@linux: cd clamav_source user@linux: make clean user@linux: ./configure --prefix=/usr --sysconfdir=/etc/clamav --datadir=/etc/clamav --with-dbdir=/etc/clamav user@linux: make user@linux: make check user@linux: su root@linux: make install </pre> Należy jeszcze dokonać edycji pliku /etc/clamav/clamav.conf, czyli pliku konfiguracyjnego ClamAV. <a href="http://clamav.skc.com.pl/howtos/files/clamav.conf">Tutaj</a> dostępny jest mój plik clamav.conf <br><br>Na koniec należy skopiować najnowsze bazy sygnatur wirusów do katalogu /etc/clamav <br>Możesz je ściągnąć ze strony <a href="http://database.clamav.net/">http://database.clamav.net/</a> lub z któregoś z <a href="http://www.clamav.net/mirrors.html">mirrorów</a>. <br><br><i>Polecam stosowanie baz sygnatur w formacie CVD. Poprzednie bazy były w formacie tekstowym, ale w przyszłości nie będą już obsługiwane przez ClamAV.</i> <br><br>Pliki baz danych to <b>main.cvd</b> i <b>daily.cvd</b>. Do main.cvd trafiają już sprawdzone sygnaturki, w których sporadycznie pojawiają się jakieś błędy lub niedociągnięcia. W pliku daily.cvd znajdują się ostatnio dodane sygnaturki najnowszych wirusów.<br> W dniu tworzenia tego dokumentu, ClamAV rozpoznawał ponad <b>20400</b> różnych wirusów, robaków i koni trojańskich. <br><br> Liczba rozpoznawanych wirusów rośnie bardzo szybko i tylko patrzeć jak doścignie komercyjną konkurencję :-) <br><br>Do pobrania najnowszych baz sygnatur można użyć programu <b>freshclam</b>, który potrafi działać jako demon. To rozwiązanie jest o tyle wygodne, że program sam sprawdza, określoną przez nas ilość razy dziennie, czy dostępne są nowe sygnaturki. Jeśli tak to je pobiera a następnie dokonuje przeładowania clamd aby ten rozpoznawał najnowsze wirusy. <br><br><b>Uprawnienia</b> <br>Jeszcze kilka słów na temat uprawnień. Demon <i>clamd</i> musi być uruchomiony jako root, ale do poprawnego działania wcale nie potrzebuje praw roota. Wystarczą mu ograniczone uprawnienia jakiegoś użytkownika (np. <i>clamav</i>). Poprzez opcję <i>User</i> w pliku clamav.conf, możemy określić na prawach jakiego użytkownika ma pracować clamd. Po uruchomieniu, clamd porzuci uprawnienia roota i przejdzie na niższy poziom z uprawnieniami określonego użytkownika. <br><br>Już niedługo dostępne będzie HOWTO, w którym postaram się opisać wszelkie zagadnienia związane z poprawną konfiguracją ClamAV oraz z używaniem innych narzędzi dostępnych w ramach projektu. <a name="a6"> </a> <br><br><br><b>6. Uruchamianie</b> <br><br>Przed uruchomieniem skryptów musimy zadbać jeszcze o stworzenie odpowiednich katalogów i nadanie im odpowiednich uprawnień; i tak: <pre> root@linux: chown -R clamav:clamav /etc/clamav root@linux: mkdir /var/run/clamav; chown -R clamav:clamav /var/run/clamav root@linux: mkdir /var/log/clamav; chown -R clamav:clamav /var/log/clamav </pre> Teraz wystarczy uruchomić skrypt <i>/etc/rc.d/rc.samba start</i> i wszystko powinno ruszyć. Jako pierwszy uruchomi się demon clamd a po 1 sekundzie Samba. Te sztuczne opóźnienie wprowadzone jest po to aby program zdążył utworzyć swój socket. <a name="a7"> </a> <br><br><br><b>7. Obserwacje i analiza logów</b> <br><br> Nie muszę chyba pisać jak ważne jest okresowe przeglądanie logów serwera. W przypadku ClamAV również należy zwrócić uwagę na kilka szczegółów. Wszystkiego możemy się dowiedzieć z plików <i>/var/log/clamav/clamd.log</i> i <i>/var/log/messages</i><br> Oto przykładowy fragment logu, z którego możemy wyczytać informacje na temat znalezionych wirusów. <pre> Informacje o zainicjowaniu samba-vscan oraz o dostępie użytkownika do zasobów Samby Mar 9 22:10:36 abuse smbd_vscan-clamav[23929]: samba-vscan (vscan-clamav 0.3.5alpha2) registered (Samba 3.0), (c) by Rainer Link, OpenAntiVirus.org Mar 9 22:10:36 abuse smbd_vscan-clamav[23929]: samba-vscan (vscan-clamav 0.3.5alpha2) connected (Samba 3.0), (c) by Rainer Link, OpenAntiVirus.org Mar 9 22:10:36 abuse smbd_vscan-clamav[23929]: INFO: connect to service vscan by user administrator </pre> I kilka dodatkowych informacji, np o nie skanowaniu pliku z powodu jego wielkości <pre> Mar 9 22:11:54 abuse smbd_vscan-clamav[23966]: INFO: File MozillaPL.org-MozillaPL-Windows-1.6.exe is larger than specified maximum file size! Not scanned! Mar 9 22:11:54 abuse smbd_vscan-clamav[23966]: INFO: File SavageDemoInstaller.exe is larger than specified maximum file size! Not scanned! </pre> A tutaj już informacje o znalezieniu przez clamd wirusa i o działaniach podjętych przez samba-vscan <pre> Mar 9 22:13:02 abuse clamd[23977]: /samba/cygwin/src/clamav-devel-20040201/test/test3.rar: ClamAV-Test-Signature FOUND Mar 9 22:13:02 abuse smbd_vscan-clamav[23966]: INFO: quarantining file '/samba/cygwin/src/clamav-devel-20040201/test/test3.rar' to '/tmp/vir-Atnd5n' was successful </pre> Gdy samba-vscan znajdzie wirusa w otwieranym przez nas pliku, wówczas wysyła komunikat do klinta (oczywiście jeśli taka opcja jest ustawiona w pliku konfiguracyjnym). Taki komunikat wyglada mniej więcej tak.<br><br> <center><img src="winmsg.png"></center> <br><br> Na koniec, życzę Wam owocnej kompilacji i wychwycenia jak największej ilości wirusów :-) <br>Wszelkie pytania i sugestie proszę wysyłać pocztą. <br><br> <hr size="1" style="color: #aaa4a0;"> Autor: <b>Przemysław Hołowczyc</b><br> e-mail: <b>doozer (at) skc (dot) com (dot) pl</b> <br><br> Wed Mar 10 00:16:38 CET 2004 <b>Pierwsza wersja howto</b><br> <font style="font-size: 12px; color: #aaaaaa"> # samba_clamav.html v1.0; Last modified: Sun, 11 Apr, 2004 22:14:13 by doozer # </font> </td> <td bgcolor="#dddddd" colspan="1" valign="top" align="left" width="8%" height="2000"> </td> </tr> </table> <!-- end CONTENTTABLE --> <table width="100%" align="center" cellpadding="0" cellspacing="0" border="0"> <tr> <td bgcolor="#dddddd" width="100%" align="center" height="60" class="rn"> </td> </tr> </table> </center> </body> </html>