Spamszűrő és vírusirtó telepítés Debian Woodyra HOGYAN
A HupWiki-ből...
Tartalomjegyzék |
Bevezető
Áttekintés
Felmerülhet benned a kérdés: miért kell egyáltalán vírusirtót telepíteni woodyra, ha Linuxra alig van működőképes vírus? Röviden Trey tollából: "Sajnos legtöbb helyen a Linux/Unix/UNIX rendszergazdáknak kell megoldani a windows klienesek védelmet, és a windowsos vírusok ügye egyre jobban a mi ügyünk lesz, nem a windows adminoké. Mivel a legtöbb helyen a védelem első bástyája általában valamilyen Linux/BSD/vagy egyéb Unix(szerű) rendszer..."
Mindenképpen szükség lehet tehát valamiféle vírusirtó megoldásra Linuxon, főleg sok felhasználó levelezését kiszolgáló rendszerek esetében. A választás a Debian Woody rendszerére esett, annak kiemelkedő stabilitása és kiforrottsága miatt. A felhasznált programok (Postfix, amavisd-new, ClamAV, SpamAssassin) kisebb-nagyobb erőfeszítések árán hozzáférhetőek ehhez a rendszerhez is, ráadásul szabadon (értsd: ingyen és legálisan). Lehetőség van a ClamAV helyett más, esetleg fizetős vírusirtó használhatára is, de ezzel jelen dokumentum nem foglalkozik. (Minek fizessünk valamiért, amit meg lehet oldani ingyen -- pláne, ha az ingyenes megoldás néha még jobb/gyorsabb is?)
Jelen dokumentum leírja, hogyan telepítsünk spamszűrőt és levélvírus-irtót Woodyra a helyi, nem virtuális felhasználók levelezésének védelmére; nem foglalkozik azonban az egyéb vírusvédelmi megoldásokkal (tűzfalak, webes tartalomszűrés, LDAP vagy SQL alapú virtuális felhasználók levelezésének védelme, stb.).
A felelősség teljes kizárása
Semmilyen felelősséget nem vállalok a dokumentum tartalmával kapcsolatban. Mindenki a saját felelősségére használja az elgondolásokat, példákat. Mivel ez egy új dokumentum, lehetnek benne hibák és pontatlanságok, amik akár a rendszer károsodásához is vezethetnek. Ezért mindenki figyelmesen járjon el, és habár ez különösen valószínűtlen, a szerző semmilyen felelősséget nem vállal érte.
Sem a szerző, sem a terjesztők, sem más közreműködő munkatárs nem felelős semmilyen módon a fizikai, pénzügyi, morális vagy bármely más típusú kárért, amit a szövegben ajánlott dolgok követése okozott.
Visszajelzés, a dokumentum új verziói
A dokumentum mindenkori legfrissebb verziója megtalálható itt, a HupWikiben. Visszajelzéseket a HUP fórumában várok.
Szerzői jog és licensz
Jelen dokumentum eredeti szerzője Csécsy László (Boobaa).
A dokumentum szabadon másolható, terjeszthető és módosítható, az FSF által közzétett GNU Szabad Dokumentációs Licenc v1.1, vagy annak későbbi változatában szereplő feltételek szerint. A licenc egy másolata megtalálható a www.gnu.org oldalon.
Köszönetnyilvánítás
A következő embereknek, illetve csoportoknak szeretnék köszönetet mondani:
- a Hungarian Unix Portal (www.hup.hu)
fórumozóinak gyors, és legtöbbször pontos válaszaikért;
- Micskó Gábor (Trey), a HUP.hu adminisztrátorának, amiért
megtűri a hülyeségeinket;
- Enki-nek a gondolatébresztő leírásért (enki.cthuugle.com);
- a SpamAssassin készítőinek a wikiért (wiki.apache.org/spamassassin).
Követelmények
Ismeretek
A gépre érkező leveleket a Postfix fogadja a 25-ös porton (akkor is, ha azokat fetchmail segítségével töltjük le valahonnan). Ezután az 10024-es porton átadja az amavisd-new részére, ami megvizsgálja őket, és a megfelelő szabályok alkalmazása után visszaadja a Postfixnek az 10025-ös porton. A levél kézbesítése innentől ugyanúgy történik, mint eddig.
Az érdekes dolgokat tehát az amavisd-new csinálja, ami egyfajta összekötő az MTA (Postfix) és a vírusirtó (ClamAV) között: a kapott levelet átadja a vírusirtónak, s a válasz alapján dönt a továbbiakról. Tévedések elkerülése végett jegyezzük meg, hogy a ClamAV (még) nem képes a vírus kiirtására a levélből; ilyenkor az egész levél törlésre kerül, s helyette a címzett csak egy értesítést kap.
Csomagok
A következő programokra lesz szükségünk:
- Postfix (www.postfix.org);
- amavisd-new (www.ijs.si/software/amavisd/);
- ClamAV (www.clamav.net);
- SpamAssassin (www.spamassassin.org).
Telepítés
A fenti programok mindegyike megtalálható csomagként is a www.backports.org oldalon. (Némelyikük megtalálható az eredeti Woody disztribúcióban is, de attól tartok, az ma már túl elavult. Helyette nyugodtan használhatjuk ezt a telepítési forrást.) Ahhoz, hogy onnan telepíteni tudjuk őket, adjuk hozzá a következő sorokat az /etc/apt/sources.list fájlhoz:
deb http://www.backports.org/debian stable amavisd-new clamav spamassassin deb http://www.backports.org/debian stable unrar arj unarj unzoo
A második sorra a tömörített csatolt fájlok ellenőrzéséhez van szükség. Telepítsük fel a megfelelő csomagokat függőségeikkel együtt:
apt-get update apt-get install amavisd-new clamav clamav-daemon spamassassin apt-get install unrar arj unzoo
A clamav-freshclam csomag telepítése során (megfelelően beállított debconf esetén) célszerűnek látszik az ifup.d lehetőség választása (ekkor ugyanis a vírusirtó adatbázisának frissítése egy démon segítségével történik, de csak működő hálózaton), azonban gondosan ügyeljünk a megfelelő hálózati csatoló kiválasztására (ADSL-nél általában ppp0, állandó kapcsolatnál eth0).
Igyekszem a leírást minél általánosabban megírni. Ha a géped állandóan a hálózaton van, nyugodtan választhatod a daemon módot is; ekkor az adatbázis-frissítő démon mindig futni fog. Az ifup.d megoldás azonban jobbnak tűnik otthoni ADSL vagy modemes internet-elérésnél is.
Vírusirtás beállítása
Először is állítsuk le a levelezést:
/etc/init.d/postfix stop /etc/init.d/amavis stop /etc/init.d/clamav-freshclam stop /etc/init.d/clamav-daemon stop
A Postfix beállítása
A Postfix alapbeállításával jelen dokumentum nem foglalkozik; egyelőre bőven elég, ha az megfelelően működik (tud levelet küldeni és fogadni). A fájlok módosításakor figyeljünk arra, hogy ahol a leírásban nem szerepel szóköz, oda nem is szabad tenni; valamint a \ karakter helyett írhatjuk az általa elválasztott két sornyi szöveget egy sorba is.
Az /etc/postfix/master.cf fájlban javítsuk ki a következő sort:
smtp inet n - - - - smtpd
erre:
smtp inet n - y - - smtpd -o content_filter=smtp-amavis:[127.0.0.1]:10024
A fájl végére pedig fűzzük hozzá a következő két sort:
smtp-amavis unix - - y - 2 smtp -o smtp_data_done_timeout=1200 -o disable_dns_lookup=yes 127.0.0.1:10025 inet n - n - 100 smtpd -o content_filter= -o myhostname=xdomain.hu -o local_recipient_maps:xdomain.hu,hostname
Természetesen az xdomain.hu helyére a megfelelő domain írandó, a hostname helyére pedig az /etc/hostname fájl tartalma, továbbá az utolsó opció tetszés szerint bővíthető.
Az amavisd-new beállítása
Az /etc/amavis/amavisd.conf fájl 61. sora környékén állítsuk be a domaint:
$mydomain = 'xdomain.hu'; # (no useful default)
A hálózatot ne terheljük a vírusos levelekkel, valamint az azokról való jelentésekkel (394. sor környéke):
$final_virus_destiny = D_DISCARD; # (defaults to D_BOUNCE) $final_banned_destiny = D_DISCARD; # (defaults to D_BOUNCE) $final_spam_destiny = D_DISCARD; # (defaults to D_REJECT)
Ezekkel a beállításokkal az összes vírusos levél mindenféle értesítés nélkül eldobásra kerül. Ha a címzettet értesíteni szeretnénk, hogy vírusos levelet küldtek neki (anélkül, hogy magát a levelet megkapná), ugyanezen fájl 440. sora környékén szedjük ki a kettőskeresztet a következő sor elől:
$warnvirusrecip = 1; # (defaults to false (undef))
A ClamAV beállítása
A megfelelő jogosultságok végett állítsuk át a ClamAV felhasználóját az /etc/clamav/clamav.conf fájlban:
User amavis
Az adatbázis-frissítő felhasználóját is át kell állítanunk az /etc/clamav/freshclam.conf fájlban:
DatabaseOwner amavis
A démonokat futtató felhasználó átállítása miatt a jogosultságokat is meg kell változtatnunk itt-ott:
chown -R amavis. /var/log/clamav chown -R amavis. /var/lib/clamav chown -R amavis. /var/run/clamav
Ha logrotate-et használunk a logok rotálásához, akkor a logok rotálása utáni jogokat is át kell adnunk az amavis falhasználónak a /etc/logrotate.d/clamav-daemon és /etc/logrotate.d/clamav-freshclam fileokban, a 6. sor környékén:
create 640 amavis amavis
A vírusirtás elindítása
Először a ClamAV démonját indítsuk el:
/etc/init.d/clamav-daemon start
A /var/log/clamav/clamd.log fájlban ellenőrizzük, hogy rendben elindult-e.
Másodszor a ClamAV adatbázis-frissítőjét indítsuk el:
/etc/init.d/clamav-freshclam start
A /var/log/clamav/freshclam.log fájlban ellenőrizzük, hogy rendben elindult-e.
Harmadiknak indítsuk el az amavisd-new-t is:
/etc/init.d/amavis start
A syslogban ellenőrizzük, hogy rendben elindult-e, és hogy minden kívánt tömörítvényt tud-e ellenőrizni.
Végül elindíthatjuk a Postfixet is:
/etc/init.d/postfix start
Szintén a syslogban ellenőrizzük, hogy rendben elindult-e.
A vírusirtás ellenőrzése
A legegyszerűbb módszer: biztosan van egy másik postafiók, ahová kaptunk már valaha vírusos levelet. Továbbítsuk a tesztelendő gépre ezt a levelet, és nézzük meg a /var/log/mail.log fájlt, hogy mi történt vele. Ha fentebb bekapcsoltuk a címzett értesítését is, akkor neki is kell kapnia egy értesítő levelet.
Egy másik, barátságosabb módszer: az eicar vírustesztjének használata. Ehhez a következő szöveget (pontosan úgy, ahogy van: szóközök és egyéb tördelés nélkül, nagybetűket is úgy, ahogy vannak) küldjük el egy egyébként tetszőleges tartalmú levélben a tesztelendő címre egy másik gépről:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Ezt a szöveget (melyben a harmadik karakter nagy O betű, és nem 0, azaz nulla) a ClamAV "Eicar-Test-Signature" nevű vírusként azonosítja. (Megnyugtatásképpen: a
fenti szöveg természetesen nem vírus, tehát éles környezetben is használható tesztelésre.)
Spamszűrés beállítása
Bár vannak módszerek a gépen felvett összes felhasználó leveleinek szűrésére, ez több ok miatt nem ajánlott (bővebben a spamassassin.org/sitewide.html oldalon):
- A SpamAssassin is hibázik néha, és előfordulhat, hogy olyan levelet szűr ki, amilyet nem kellene.
- Néhány országban törvények szabályozzák a levelezést (Angliában pl. 2 napnál tovább nem szabad visszatartani levelet elemzés miatt).
- Egyáltalán nem biztos, hogy minden felhasználónak szüksége van a spamszűrésre, feleslegesen meg ne terheljük a szerverünket.
Lehetséges olyan beállítás is, hogy rendszerszintű elemzés után minden felhasználó maga döntheti el, hogy a leveleivel mit szeretne kezdeni.
A SpamAssassin démon beállítása és indítása
Az /etc/default/spamassassin fájl 7. sorát kell módosítani:
ENABLED=1
Majd elindítani a démont a szokásos módon:
/etc/init.d/spamassassin start
A syslogban ellenőrizhetjük, hogy rendben elindult-e. Paranoid rendszergazdák olvassák el az /usr/share/doc/spamassassin/README.spamd fájlt, amennyiben a spamc/spamd megoldást akarják használni.
A SpamAssassin beállítása felhasználói szinten
Mivel a Postfix csak MTA, és nem MDA (arra a procmail-t használja), ezért elég a felhasználó könyvtárában létrehozni egy .procmailrc fájlt a következő tartalommal:
MAILDIR=$HOME/mail
DEFAULT=/var/spool/mail/user
LOGFILE=$HOME/.procmail_log
# 250 kB fölött nincs SA
:0fw: spamassassin.lock
* < 256000
| spamc
# Ha valami gond van (pl. lefagy a spamassassin vagy
# elkonfiguráltuk), akkor se ragadjon be a levél
:0e
{
EXITCODE=$?
}
# 15 ponttól már biztosan spam
:0:
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
spam-biztos
# 5-15 pont között talán spam
:0:
* ^X-Spam-Status: Yes
spam-talan
Természetesen user helyére a felhasználó neve írandó. A szabályokról:
- A procmail minden tevékenységét naplózzuk a felhasználó .procmail_log fájljába.
- 250 kB fölött nem indítjuk el a SpamAssassint: nagyon kevés olyan spam van, ami ilyen nagy lenne, tehát nem éri meg lassítani a kézbesítést. A SpamAssassint nem közvetlenül hívjuk meg, hanem a kliensén (spamc) keresztül, így ugyanis nem kell minden egyes levélnél újra betölteni az egész SpamAssassint, szabálylistát, hanem csak át kell adni ellenőrzésre a szervernek spamd).
- 15 pont fölött már biztosan spamről van szó, ezért elrakjuk a spam-biztos mappába.
- 5 és 15 pont között még csak valószínűsíthető, hogy spamről van szó, ezért a spam-talan mappába rakjuk.
A SpamAssassin beállítása rendszerszinten
Hozzuk létre az /etc/procmailrc fájlt a következő tartalommal:
DROPPRIVS=yes
:0fw
* < 256000
| spamc
# Ha valami gond van (pl. lefagy a spamassassin vagy
# elkonfiguráltuk), akkor se ragadjon be a levél
:0e
{
EXITCODE=$?
}
Ez minden 250 kB-nál kisebb beérkező levelet átad a spamc-nek, amely nem privilegizált módban (nem rootként) fog lefutni.
Ez a beállítás csak ellenőrzést végez, szűrést nem (a fentebb leírtak miatt). Amelyik felhasználó szeretné bekapcsolni magának a szűrés funkciót, a könyvárában hozzon létre egy .procmailrc fájlt a következő tartalommal:
MAILDIR=$HOME/mail DEFAULT=/var/spool/mail/user LOGFILE=$HOME/.procmail_log # 15 ponttól már biztosan spam :0: * ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\* spam-biztos # 5-15 pont között talán spam :0: * ^X-Spam-Status: Yes spam-talan
Természetesen user helyére a felhasználó neve írandó, egyebeket lásd az előző pontnál.
A spamszűrés ellenőrzése
Ez kicsit nehezebb, mint a vírusirtó ellenőrzése, mivel a SpamAssassin nemcsak a levél tartalmát, hanem a fejléceket is figyelembe veszi, így azokat is pontosan ugyanúgy kell reprodukálni. Magyarul szólva: nem működik a vírusirtásnál leírt továbbításos módszer.
Pozitív teszt
A következő szöveget (pontosan úgy, ahogy van: szóközök és egyéb tördelés nélkül, nagybetűket is úgy, ahogy vannak) küldjük el egy egyébként tetszőleges tartalmú levélben a tesztelendő címre egy másik gépről:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Erre a szövegre a SpamAssassin 1000 pontot ad, akárhol is szerepel a levélben, így ha ezt spamnek jelzi, akkor már biztosak lehetünk benne, hogy működik. :-)
Negatív teszt
Egy másik gépről nyissuk meg a tesztelendő gép 25-ös portját:
telnet celgep 25
Csatlakoztunk a gépünkön futó Postfixhez. Írjuk be a következőket:
HELO celgep MAIL FROM: akarki@akarhonnan.hu RCPT TO: user@celgep DATA
Ezután másoljuk be az /usr/share/doc/spamassassin/examples/sample-nonspam.txt fájl tartalmát pontosan úgy, ahogy van, gondosan ügyelve az üres sorokra: se több, se kevesebb ne legyen belőlük.
Erre a szövegre a SpamAssassin alapbeállításoknál 0.1 pontot ad, tehát nem minősíti spamnek.
Kérdések
A több helyen, például a www.yrex.com oldalon fellelhető SpamAssassin config készítő programmal be lehet-e állítani a rendszerüzenetek nyelvét?
- Nem. A fenti programmal csak a SpamAssassin által elfogadott nyelveket lehet beállítani (kínai nyelvterületen élőknek például kifejezetten javasolt a kínai nyelv engedélyezése).
Telepíthető-e exim v3 mellé a védelmi rendszer?
- Biztosan; jómagam nem foglalkoztam vele, de állítólag a következő cím segíthet ebben: ente.limmat.ch (bár ez a leírás nem említi a ClamAV-t, tehát valószínűleg csak spamszűrésre használható).
Hogyan szűrhetők ki bizonyos kiterjesztésű csatolt fájlokat tartalmazó levelek?
- Az /etc/amavis/amavisd.conf fájlban a 690. sor környékén a banned_filename_re szabály pontosan erre való. Ott van jónéhány, alapbeállításban kikapcsolt példa, érdemes ott körülnézni -- vegyük figyelembe azonban azt is, hogy küldő rendszergazdája is kap figyelmeztetést, hacsak ezt ki nem kapcsoljuk a 485. sor környékén a virus_admin változó átállításával:
$virus_admin = undef;
- Ha be akarjuk kapcsolni a címzett értesítését, akkor a 441. sor környékén szedjük ki a kettőskeresztet a következő sor elől:
$warnbannedrecip = 1; # (defaults to false (undef))
A kifelé menő leveleket szűri-e a fenti rendszer?
- Nem, az ismertetett beállítások csak a helyi címekre érkező levelekre vonatkoznak (viszont azokra is, amelyeket helyben adtak fel).
Zárszó
Ha mindenben a fentieknek megfelelően jártunk el, akkor egy kielégítően működő, szabad és ingyenes vírusirtó és spamszűrő megoldást telepítettünk a Debian Woodyra. Már csak egy dolog hiányzik: az amavisd-new és a SpamAssassin üzeneteinek lefordítása.
