<!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>
   &nbsp;&nbsp;&nbsp;<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">
   &nbsp;
  </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>&nbsp;<a href="samba_clamav.html#a1">Wprowadzenie</a>
   <br><b>2.</b>&nbsp;<a href="samba_clamav.html#a2">Jak to dzia³a?</a>
   <br><b>3.</b>&nbsp;<a href="samba_clamav.html#a3">Zapotrzebowanie na oprogramowanie</a>
   <br><b>4.</b>&nbsp;<a href="samba_clamav.html#a4">Konfiguracja serwera Samba</a>
   <br><b>5.</b>&nbsp;<a href="samba_clamav.html#a5">Kompilacja ClamAV</a>
   <br><b>6.</b>&nbsp;<a href="samba_clamav.html#a6">Uruchamianie</a>
   <br><b>7.</b>&nbsp;<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.&nbsp;&nbsp;&nbsp;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.&nbsp;&nbsp;&nbsp;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.&nbsp;&nbsp;&nbsp;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>&nbsp;<b>Skrypty startowe</b>
<br> - Skrypty startowe, które uruchamiaj± Sambê i clamd:
<br>&nbsp;&nbsp;&nbsp;<a href="http://clamav.skc.com.pl/howtos/files/rc.samba">rc.samba</a>
<br>&nbsp;&nbsp;&nbsp;<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.&nbsp;&nbsp;&nbsp;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.&nbsp;&nbsp;&nbsp;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.&nbsp;&nbsp;&nbsp;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.&nbsp;&nbsp;&nbsp;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">
    &nbsp;
 </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">
   &nbsp;
  </td>
 </tr>
</table>

</center>
</body>
</html>