Ako fungujú spamfiltre 3

25.12.2006 15:22 | betmen

Po predošlej časti máme nakonfigurovaný amavis ale on sám sa nepohne bez komponent (externé spamfiltre + antivírový soft).

Hlavným komponentom je antivírový soft, ktorý zachráni userkom riť prípadne zachráni aj celú sieť. V dnešnej "modernej" dobe vírusov ide hlavne o ochranu pred phishingom a trojanmi ktoré zaraďujú klientské pc do spamerských fariem etc. Tým vyvraciam prípadné pochybnosti, načo píšem o antivírovom softvéri v seriáli o spamoch. Nechceme sa predsa či už z nevedomosti alebo z nejakého iného nedopatrenia stať spamerkami.

Ja používam ako primárny virusfilter v amavise clamav a ako sekundár viem využíť jeho command-line verziu clamdscan (viac menej historická záležitosť lebo je pomalší a je dosť pravdepodobné že keď spadne clamd tak je možné že odstaví aj clamdscan). Clamav som si zvolil kvôli jeho kvalitám. Je stabilný, je udržiavaný, má aktualizovanú databázu, musím podotknúť že veľmi sviežo a pravidelne. No a ďalší dôvod je, že je to gpl softvér, takže je za SKK 0,-.

Trochu špecifikácie:
Clam antivírus beží ako démon (kedysi bol statický skener - už spomínaným pozostatkom je clamdscan). Tvoria ho dve hlavné komponenty. Clamd a freshclam.
Clamd je samotný antivírus vytvárajúci si socket, cez ktorý naň v našom prípade pristupuje amavis (kuk predošlú časť).
Freshclam je command na aktualizáciu databázy so signatúrami. Databáza je dopĺňaná promptne a pokiaľ nemáte prehistorickú verziu clamu, ktorý vďaka svojej ochrane zníži functionality level na nižší, tak sa nestane že by vznikol nejaký vážnejší problém. Je to kvôli tomu, že nové testy a signatúry nie sú použiteľné v starších verziách. Dozviete sa o tom z logu freshclamu. Ak spustíte freshclam s parametrom -d, tak sa zdémonizuje a aktualizuje sa bez ľudského pričinenia na základe konfigurácie (/etc/freshclam.conf).
Spoľahlivé to je, lebo doteraz sa mi za pár rokov nestalo že by nejako zamrzol alebo vyrobil nejaký iný problém.

Celá konfigurácia je zložená z /etc/clamd.conf a /etc/freshclam.conf.
Nasleduje zjednodušená konfigurácia akú používam:

clamd.conf:

LogFile /var/log/clamav/clamd.log
LogFileMaxSize 0
LogTime
LogSyslog
PidFile /var/run/clamav/clamd.pid
TemporaryDirectory /var/tmp
DatabaseDirectory /var/lib/clamav
LocalSocket /var/run/clamav/clamd.sock
FixStaleSocket
StreamMaxLength 20M
MaxThreads 20
User amavis

LogFile mám preto keby sa náhodou dačo pokazilo tak aby som vedel prečo/kedy/kde/čo (teda okrem toho že to zaloguje aj amavis ale človek nikdy nevie).
LogFileMaxSize slúži na limitovanie kedy sa má refrešnúť logovací súbor. Ja mám unlimited size a dá sa to vyriešiť cez logrotate (vzhľadom na nie príliš veľkú réžiu logovania clamu to vôbec neriešim a keby to náhodou narástlo tak to zmenším).
LogSysLog prdí všetko cez syslog. Podľa LogFacility ktorú mám default na mail to prdí do /var/log/mail/vsetko.
PidFile myslím nemusím komentovať.
TemporaryDirectory detto.
DatabaseDirectory je adresár kam ukladá clam svoje signatúry a LocalSocket je zásuvka na využívanie clamd v našom prípade pomocou amavisu.
FixStaleSocket keby nám zdochol clam a po reloade aby sme to nemazali ručne. napríklad keby dostal elektrošok server a nerozdýchal to tak by spustenie clamu zlihalo.
StreamMaxLength tuším súvisí s funkcionalitou ktorú nepoužívam (clam tcp server - napíšem neskôr) ale má byť veľký ako veľkosť mailu takže mám 20M (konfigurácia postfixu).
MaxThreads je počet vlákien s ktorými môže clamd pracovať. Nebádal som pri performance aké je vhodné číslo na XY hardvér ale ak sa to niekomu chce, tak šup do toho a napísať do komentárov k článku :)

User amavis - dávam preto že mi aj amavis beží pod užívateľom amavis. V princípe ale stačí zabezpečiť aby mal amavisd prístup k soketu clamu a userko by mal byť nepodstatný.

Clamd by mal vedieť bežať ako server pre remote klientov na podobnej báze ako amavis takže ak chcete používať len clam tak si v konfigurácii zapnite (TCPAddr a spol) a prestavte content_filter v postfixe (to som ale odbocil).

freshclam.conf:

DatabaseDirectory /var/lib/clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogVerbose
LogSyslog
PidFile /var/run/clamav/freshclam.pid
DatabaseOwner amavis
DatabaseMirror database.clamav.net

Konfigurácia freshclam je viac-menej analogická s clamd.conf
DatabaseOwner je u mňa opäť amavis aby clamd vedel svoju databázu čítať ale je to čisto ako som spomínal na vás.
Freshclam si overuje aktuálnosť databázy podľa txt záznamu svojho listu current.cvd.clamav.net, to je predvolená možnosť preto ju v konfigurácii nemám odkomentovanú.
Mirrorov je možné definovať viacero.
Ďalej je možné definovať ako často sa má kontrolovať aktuálnosť databázy. Prednastavene mám každé 2 hodiny.
Najintezívnejšia možná kontrola cez jeden mirror je raz za hodinu pokiaľ by ste chceli extrémne rýchlo updatovať tak šup si dať viac mirrorov a môžte čas znížiť ale či to pomôže je otázne. Podľa mňa hodnota 2 hodiny je ok.

Možnost NotifyClamd sa môže nechať zakomentovaná. Freshclam totiž vie povedať clamu že má novú databázu. Ale v prípade že by ste si to chceli zošpeciálniť, enjoy.

Konfigurácia obsahuje aj ďalšie možnosti ale ja som ich doteraz nepoužil, tak ich nebudem ani opisovať. Ale keby niekto potreboval niečo viac špeci, tak môže vyskúšať.

Clamav nie je jediný antivírový soft, ktorý je možné v amavise využiť. V minulom článku je skopírovaná konfigurácia, ktorá obsahuje prednastavené vlastnosti najrôznejších antivírusov. Takže ak máte mešec dukátov, šup si nejaký kúpiť.
Ja som zatiaľ nemal dôvod sa zaoberať niečím iným ako clamom.

Hádam som pri sviatočnom vyvaľovaní na nič podstatné nezabudol.
Budúci týždeň napíšem o spamassassine.

    • blacklisty 25.12.2006 | 22:16
      Avatar blackhole   Návštevník

      blacklisty spamovych domen su tiez mocna vec, pouzivam databazu sorbs. zfunkcnenie je absolutne jednoduche, staci pastnut nasledujuce 2 riadky do /etc/postfix/main.cf a postfix reload

      maps_rbl_domains = dnsbl.sorbs.net
      smtpd_client_restrictions = reject_maps_rbl

      --------------------
      alwarez

      • dost velky problem sorbsu 26.12.2006 | 12:00
        Avatar betmen   Používateľ

        dost velky problem sorbsu zial je v tom ze sa nim odstavi velka cast slovenska lebo provideri na sk kaslu na to ze maju svoje ip zablacklistovane a zo sorbsu nie je tak jednoduche sa vymazat. ja ho pouzivam len cez reject_warning cim docielim ze sorbs pouzivam takze mi to silno znizuje riziko zaradenia sa do sorbsu a vsetko co by inak sorbs zachytil mi zachyti zvysok filtrov.

        ____________________
        promptne je alias pre nahovno

        ______________ kam by som chodil...na dvor
    • clamsmtp 25.12.2006 | 23:37
      Avatar stanojr   Používateľ

      ja pouzivam clamstmp namiesto amavisu
      spamassassin spustam az v maildrope ktory uklada maily userkom do maildirov z toho dovodu aby si userkovia mohli nastavit spamassassin kazdy ako chce pre seba (pripadne ho uplne vypnut)

      • podobne sa to da cez amavis 26.12.2006 | 11:50
        Avatar betmen   Používateľ

        podobne sa to da cez amavis vyriesit ze sa nastavi len markovanie score (s tym ze amavis zavola aj assassin aj vsetko ostatne ale nediscarduje maily) a maildrop len podla score headeru si userko vie nastavit.
        nastastie je ale vyhoda "korporatnych" serverov v tom ze su tam unifikovane pravidla a userkovia nemaju taku volnu ruku :)

        ____________________
        promptne je alias pre nahovno

        ______________ kam by som chodil...na dvor