Ochrana před SPAMem a viry v emailech

Z Milan Kerslager
Přejít na: navigace, hledání

Nevyžádaná pošta (tzv. SPAM) je současným aktuálním problémem. Nejčastěji se šíří ze špatně nakonfigurovaných poštovních uzlů (MTA), které jsou ochotny od kohokoliv přijmout poštu a rozeslat ji na tisíce adres (tzv. open-relay). Spammer v takovém případě předá chybně nakonfigurovanému MTA jeden mail a uvede v obálce stovky až tisíce příjemců.

Částečnou ochranou před šířením SPAMů může být využití on-line databáze, která obsahuje seznam IP adres takových počítačů (blacklisty). Seznamy musí někdo udržovat (na provozu nebo spozorování těchto databází se podílejí různé velké firmy podnikající na Internetu - např. freemaily). Jejich účinnost není 100%, nicméně je funkční. Většina těchto služeb je ochotna více či méně automatizovaným způsobem přijímat spamy, které dostáváte a z nich pak získávat seznamy podezdřelých počítačů. Postižený poštovní uzel je nejprve otestován a když se prokáže, že je open-relay, je umístěn do blacklistu. Správce MTA je informován, musí opravit svoji konfiguraci a požádat o vymazání z databáze (což obvykle trvá 3 až 10 dní).

V případě sendmailu je využití blacklistů jednoduché. Stačí do makrosouboru přidat následující řádky, které zajistí kontrolu ze tří asi nejpoužívanějších databází (pozor na uvozovky, apostrofy a obrácené apostrofy):

FEATURE(`enhdnsbl',`list.dsbl.org',  `"Spam blocked using DSBL - see <http://DSBL.org/listing.php?ip="$&{client_addr}">"')dnl
FEATURE(`enhdnsbl',`relays.ordb.org',`"Spam blocked using ORDB - see <http://ORDB.org/lookup/?host="$&{client_addr}">"')dnl
FEATURE(`enhdnsbl',`bl.spamcop.net', `"Spam blocked using SpamCop - see http://SpamCop.net/bl.shtml?"$&{client_addr}">"')dnl
define(`confBIND_OPTS', `WorkAroundBrokenAAAA')dnl

Druhým významným opatřením může být blokování mailů, které obsahují tzv. nebezpečné přílohy. Jsou to v podstatě všechny soubory, které na základě přípony pokládá OS Windows za spustitelné. V naprosto drtivé převaze jsou to viry (nebo trojské koně), které se šíří maily. Obyčejní uživatelé pak musí spustitelné soubory před odesláním buď přejmenovat nebo lépe zazipovat.

V případě sendmailu nejjednodušší řešení využívá rozhraní MILTER (viz http://www.milter.org), které umožňuje psát externí programy, jež přes definované API mohou analyzovat, odmítat i modifikovat emaly, které skrz sendmail procházejí. Nainstalujte si balíček cvgfilter (pozor - není součástí distribuce, použijte např. moji sbírku balíčků z adresy http://ftp.pslib.cz/pub/users/Milan.Kerslager/RHEL-verze/stable/). Tento program vytvoří po svém spuštění soket /var/run/cvgfilter.sock, přes který bude s programem sendmail komunikovat.

Do makrosouboru sendmailu přidejte následující řádek, kterým mu sdělíte, kde se nachází soket filtru cvgfilter (nezapomeňte přegenerovat konfigurační soubor příkazem make, viz výše):

define(`_FFR_MILTER', `1')dnl
INPUT_MAIL_FILTER(`cvgfilter', `S=unix:/var/run/cvgfilter.sock, F=T')dnl
define(`confSEPARATE_PROC', `True')dnl
define(`confMAX_DAEMON_CHILDREN', `12')dnl

Program cvgfilter je potřeba spustit a zajistit jeho automatické spouštění po startu systému:

$ /etc/init.d/cvgfilter start
$ chkconfig cvgfilter on

Třetím vhodným opatřením je klasifikace mailů programem SpamAssassin (viz http://spamassassin.org). Tento program přiděluje na základě souboru testů každému emailu trestné body. Na základě počtu těchto trestných bodů je pak rozhodnuto, zda je daný mail SPAM nebo ne. Samotný mail může být odmítnut nebo (lépe) jen označkován, aby si ho cílový uživatel mohl automaticky vytřídit a jednou za čas zkontrolovat, jestli se mezi ně nepřipletl HAM (opak spamu, tj. vyžádaná obchodní nabídka).

Samotný Spamassassin je nejvhodnější spustit jako démona a pomocí speciálního pomocného programu ho přes MILTER API spojit se sendmailem. Nainstalujte proto z výše zmíněného adresáře balíčky spamassassin a spamass-milter a přidejte následující řádek do makrosouboru sendmailu (třeba ihned za výše zmíněný cvgfilter):

INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass.sock, F=T, T=C:15m;S:4m;R:4m;E:10m')dnl

Konfiguraci Spamassassinu můžete upravit v souboru /etc/mail/spamassassin/local.cf, jak ukazuje následující příklad (dvojtečky okolo slova SPAM, které se přidávají do subjektu spamů byly vybrány proto, že na rozdíl od hvězdíček nebo hranatých závorek nejsou speciálními znaky):

required_hits 5
rewrite_subject 1
subject_tag ::SPAM::
report_safe 0
defang_mime 0
whitelist_from sem_nepiste@idnes.cz nekdo@jinde.cz

Whitelist_from je seznam mailových adres, ze kterých nebude nikdy pošta považována za spam (opakem je pak blacklist_from, více viz man Mail::SpamAssassin::Conf). Nakonec démony spusťte a zajistěte jejich automatický start:

$ /etc/init.d/spamassassin start
$ /etc/init.d/spamass-milter start
$ chkconfig spamassassin on
$ chkconfig spamass-milter on

Čtvrtým vhodným opatřením je použití antivirového programu, který bude veškerou procházející poštu scanovat. Nejjednodušší bude použít velmi kvalitní a volně šiřitelný program ClamAV. Přidejte do konfigurace Sendmailu stejně jako v předchozím případě rádek:

INPUT_MAIL_FILTER(`clamav-milter', `S=local:/var/run/tmpfs/clamav-milter.sock, F=T, T=C:15m;S:4m;R:4m;E:10m')dnl

Zajistěte, aby po startu počítače byl spuštěn démon antiviru i démon pro milter rozhraní:

$ /etc/init.d/clamd start
$ /etc/init.d/clamav-milter start
$ chkconfig clamd on
$ chkconfig clamav-milter on