Root » Servers » Mail servers » Anti Spam maatregelen
Een eigen mailserver:
anti spam-maatregelen
Bescherming
Tegenwoordig is het niet meer mogelijk een mail server te runnen zonder anti-spam maatregelen. Op mijn server komen er ongeveer 300 pogingen tot inbraak binnen per uur. Ik gebruik geen email adres meer bij een access provider (telenet) gewoon omdat er teveel spam toekomt.

Algemene regels

Indien je een mailserver runt moet je er eerst voor zorgen dat de server geen open relay is. Dat wil zeggen dat enkel geauthenfificeerde gebruikers mail kunnen versturen. De access providers hebben het hier gemakkelijk: ze moeten enkel kijken of de afzender afkomstig is van hun netblock. De mail server van skynet zal alle mails doorsturen van mensen die op het skynet netwerk zitten (dial up, adsl, fixed ip en sdsl).

Bij je eigen mail server kan je ook zoiets doen: alle mails toelaten indien ze afkomstig zijn van je lokale subnet (bijvoorbeeld 192.168.1.*). Gebruikers die vanaf het internet zelf de server willen gebruiken moeten zich aanmelden. Vroeger werd POP before SMTP vaak gebruikt (éénmaal aangemeld via POP kan je mail versturen via SMTP), maar nu heeft ook het SMTP protocol een aanmeldingsmogelijkheid zodat deze omweg niet nodig is (CRAM MD-5)

Blokkeren van inkomende spam

Eerste verdediging: manifeste spam berichten weigeren

De eerste verdediging is ervoor te zorgen dat spam mails de server niet bereiken. Dat scheelt een hoop in bandbreedte, als je weet dat er tijdens een spam attack wel één mail per seconde toekomt! Als je server een connect krijgt is het eerste wat hij moet doen de IP van de afzender controleren:
  • Staat de IP in een lokale database? Ja --> verwerpen
  • Heeft de afzender een geldige PTR record? Neen --> verwerpen
  • Staat de IP in een spam database? Ja --> verwerpen
  • Mail naar een onbestaande gebruiker? Ja --> verwerpen
Bij "verwerpen" moet je lezen: bericht weigeren en reden aangeven, verbinding verbreken en IP adres in een lokale database opslaan (na een aantal accesspogingen: vanaf de eerste access bij ongeldige PTR of spam database, vanaf 5 accesspogingen bij onbestaande gebruiker). Door het IP adres in een lokale database op te slaan moet je niet iedere keer een DNS query uitvoeren bij iedere connect.

De IP kan in de database terechtgekomen zijn omdat er bijvoorbeeld teveel connect-verbindingen zijn toegekomen, omdat er teveel pogingen zijn ondernomen om berichten naar niet-bestaande users te sturen (directory attack) of omdat er geprobeerd werd de server als relay te gebruiken. Bij deze eerste verdediging heeft de zender de mogelijkheid niet zijn bericht af te leveren: wij verbreken de verbinding van zodra er iets misloopt. Er wordt wel een foutcode gegeven zodat compliante servers weten dat het bericht niet afgeleverd kan worden. Enkel spammers zullen het opnieuw proberen.

Om spammers op te sporen kan je gebruik maken van een honey pot. Dit is een mail account dat op websites vermeld wordt, maar door de normale gebruiker nooit aangeklikt kan worden (het wordt bijvoorbeeld in onzichtbare inkt (wit op wit) of buiten het zichtbare deel van het scherm geplaatst). Als er een mail naar dat account gestuurd wordt, dan wordt het IP adres van de afzender bij de spammers gerekend. Ik heb bijvoorbeeld een domein 10 jaar geleden gereserveerd en had daar vroeger ook een email adres (domain mailbox). Nu gebruik ik dit domein enkel nog als honey pot, en voorwaar: dit blijkt de beste manier om spammers tegen te houden. Hoewel het domein al meer dan 2 jaar niet meer gebruikt wordt voor mail, ontvang ik nog regelmatig mail. Niet van normale gebruikers, maar uitsluitend spam. Het voordeel van een honey pot is dat de bandbreedte beperkt wordt: de server kan direct zien dat het spam is, de verbinding vebreken en het IP adres tussen de spammers plaatsen.

Tweede verdediging: ontvangen bericht controleren

Spammers zijn continu op zoek naar onveilige mailservers (open relays). Het is dus mogelijk dat je spamberichten krijgt van een dergelijke server, waarvan de IP nog niet in een spam database is opgenomen. Een klein percentage van de spamberichten glipt dus tussen de mazen van het net (spam database). Maar gelukkig worden ze meestal door een andere filter tegen gehouden.

Als je mailserver een bericht aanvaard, dan moet die het bericht ook verwerken, of een antwoord sturen dat het bericht niet afgeleverd kan worden. Omdat de gebruikte afzenderadressen van spamberichten altijd fake zijn zullen we geen antwoord sturen (het foutbericht kan bij een geldige niets-vermoedende gebruiker terechtkomen). Een fout-antwoord sturen naar een niets-vermoedende gebruiker wordt backscatter of collateral spam genoemd en kan als gevolg hebben dat je server geblacklist wordt. Een aantal anti-virus programma's gebruikte vroeger deze techniek "Het bericht dat u naar xxx@yyy.zzz stuurde kon niet afgeleverd worden omdat het een virus bevatte. Gebruik SuperAntiVirus voor een betere beveiliging van je computer, zoals xxx@yyy.zzz reeds doet!". Het bericht komt niet enkel terecht bij een gebruiker die niets met de hele affaire te maken heeft, maar de anti-spam/anti-virus spreid zelf spamberichten uit. Het heeft jaren geduurd vooraleer anti-virus-makers hebben ingezien dat dit niet de beste tactiek was.

Dus geen foutbericht versturen. De keerzijde van de medaille is nu wel dat je het bericht MOET afleveren (wij zijn 100% compliant en volgen de regels à la lettre). De oplossing is hier de mailberichten in een spamfolder te plaatsen (en hier toont opnieuw het IMAP protocol zijn superioriteit ten opzichte van POP). Indien IMAP om de ene of andere reden niet mogelijk is, dan kan je alsnog een tweede account aanmaken: dan bekom je eigenlijk ook een tweede map. Wat meer werk, maar je hebt als voordeel dat de spamberichten niet tussen de gewone berichten zitten. Het markeren met de tekst [SPAM] lijkt mij niet afdoende.

Het gebruik van een spam mailbox samen met IMAP heeft ook als voordeel dat je de berichten na 10 dagen kan wissen. De berichten die nog in de mailbox zitten zijn spam, anders had de gebruiker ze in een andere mailbox geplaatst (de users moeten wel op de hoogte zijn van deze feature!) Zo loopt de server niet over van de spamberichten, belangrijk als je honderden gebruikers hebt.

Spam-eigenschappen van een bericht

Het bericht wordt op elementen gecontroleerd die zouden kunnen wijzen dat we te maken hebben met spam:
  • links naar bepaalde sites (er bestaat ook een database van sites die door spammers beheerd worden)
  • externe elementen in het bericht (zodat de afzender kan controleren dat je de mail gelezen hebt)
  • aanwezigheid van scripts of iframes in het bericht
  • foute construktie van het bericht (doen geloven dat de mail afkomstig is van outlook express, maar bepaalde parameters zijn verkeerd ingevuld)
  • gebruik van bepaalde sleutel-woorden
  • verdoezelingstechnieken (onzichtbare tekst + spam bericht dat wel zichtbaar is, koderen van gevaarlijke woorden of urls)

Bij ieder element worden er punten gegeven. Spam assasin controleert een mailbericht op zo'n 100-tal verschillende elementen, en geeft dan zijn verdict: 99% kans dat het bericht spam is. Je kan de drempel zelf instellen waarbij een bericht als spam aangezien wordt, en je kan zelfs de verschillende elementen een andere waarde geven: een bericht dat verdoezelingstechnieken gebruikt is minder betrouwbaar (meer kans dat het spam is) dan een bericht dat een extern element gebruikt.

Bayes filtering

Een test dat lange tijd zeer vaak gebruikt werd is de Bayes-filtering. Dit is een zuivere statistische benadering. Iedere woord krijgt een waarde, 1 voor een woord dat nagenoeg zeker enkel in spamberichten voorkomt en 0 voor een woord dat nooit in een spambericht voorkomt. Alle woorden hebben een waarde tussen 1 en 0. Er worden woordenlijsten uitgedeeld met een assortiment woorden (waarmee je kan beginnen), maar het is natuurlijk beter de woordenlijsten zelf te beheren.

Bij het beheren van de woordenlijsten heb je een zuivere bron nodig; daarvoor kan je de uitgaande berichten gebruiken. Indien je de gebruikers vertrouwt zullen deze uitgaande berichten geen spam bevatten, wel woorden die vaak in de dagelijkse communikatie van de gebruikers voorkomt (en die verschillend zijn van werkgebied tot werkgebied): prijsofferte, herstelling, fakturatie, of voetbalmatch, goal, penalty, enz. Ieder bedrijf bekomt dus een serie woorden die eigen zijn aan hun vakgebied. Je kan zo je database bijwerken met veilige woorden. De onveilige woorden haal je uit de spamberichten die na 10 dagen gewist worden: deze berichten zijn niet verplaatst door de gebruiker, een teken dat ze wel degelijk spamberichten zijn.

Met de originele database (dat je van de mailserver zelf krijgt) haal je een nauwkeurigheid van 95%. Met de eigen database dat je automatisch zelf opbouwt bekom je een nauwkeurigheid van meer dan 99%. Dit hangt natuurlijk van het vakgebied waarmee je bezig bent. Indien je voornamelijk viagra en andere dergelijke geneesmiddelen verkoopt zal je niet goed scoren met dit systeem.

Met alle andere maatregelen bekom je een slaagpercentage van meer dan 99.95% (en toch krijg ik een aantal spamberichten binnen per dag: zonder anti-spam maatregelen zouden dat er duizenden zijn!)

White list en blacklist

Een systeem dat ook kan helpen (maar een zekere medewerking van de gebruiker vraagt) zijn de white- en blacklists. Dit zijn lijsten die door de gebruiker zelf opgesteld worden en aangeven wie altijd een mailbericht kan versturen (je kan dit instellen per e-mail adres of voor een volledig domein).

Dit kan bijvoorbeeld nuttig zijn als een mailbericht van een belangrijke klant altijd in de spambox terechtkomt (bijvoorbeeld omdat de mail via een geautomatiseerd systeem verstuurd wordt, of omdat de server van de afzender niet correct geconfigureerd is). Door de gebruiker in de whitelist te zetten komt het bericht altijd door.

Een blacklist voor individuele spammers aanleggen is nutteloos (zij gebruiken immers random adressen), maar kan wel nuttig zijn als je dagelijks een paar (ongevraagde) mails ontvangt. Je schrijft je in op een of andere site (bijvoorbeeld omdat je technische informatie nodig hebt), en vanaf die dag krijg je ongevraagd mails in je postbus. Uitschrijven lukt niet. Door de afzender op de blacklist te zetten verdwijnen de mailberichten automatisch in de vuilbak.

Dergelijke lists zijn zeer krachtig: de lijst wordt toegepast in de plaats van de normale filtering.

Anti-spam, telenet style

Spaminstellingen van Telenet

Bij Telenet heb je een anti-spam filter (bij de nieuwe klanten is de filter standaard ingeschakeld). De werking van de filter is echter niet volgens de regels (RFC-normen)..

  • De filter wordt ingeschakeld zonder medeweten van de klant. Talrijke klanten klagen bij ons omdat bepaalde mails niet toekomen, terwijl het Telenet is die de mail gewist heeft.
  • Voor de mailverzender is er geen manier om te weten of het bericht wel toegekomen is. Het bericht wordt door de mailserver van telenet aanvaard en gedropt (dit is tegen de internet-regels). Indien je een bericht aanvaard, dan MOET je het bericht afleveren of een bericht van niet-aflevering terugsturen.
Hoewel je enkel de mogelijkheid hebt [AAN] of [UIT], moet ik zeggen dat de filter redelijk goed werkt. Om spam te weren bestaat er echter geen eenvoudige oplossing, dat zowel eenvoudig in het gebruik is als perfekt werkt. Spammers zijn altijd op zoek naar manieren om hun mails verstuurd te krijgen. Vaak zijn het internationale mafiabenden die spam uitsturen. Casino's, viagra, een antivirus of een erfenis in Nigeria, maakt allemaal niet veel uit. Je klikt op een mail voor viagra en er wordt je gevraagd een anti-virus te installeren.

Op de volgende pagina wordt een nog grotere gruwel besproken: de Exchange server van Microsoft.

Links to relevant pages - Liens vers d'autres pages au contenu similaire - Links naar gelijkaardige pagina's