Virus- en spamscanners

VII Linux beveiligen

1 Virusscanners

Op dit moment zijn er nog maar weinig virussen voor Linux. Dat is natuurlijk prettig, maar hoe populairder Linux wordt, hoe meer virussen ervoor gemaakt zullen worden. Het lijkt dus onverstandig om met antivirus software te wachten tot die markt aantrekt en het is zaak om nu al naar antivirussoftware te kijken. Er is al redelijk wat beschikbaar om virussen op het Linux platform te bestrijden. Daar zijn open source scanners bij, maar ook commerciële.

Bestaande software

De eerste virusscanner die ik tegenkwam, was de AMaViS Virus Scanner (amavisd-new). Het belangrijkste doel van dit programma is e-mail bijlagen op virussen doorzoeken. Een mooi initiatief, maar niet geschikt om te kijken of er een virus op je systeem staat, tenzij jouw systeem natuurlijk een mailserver is. Het programma is overigens wel onder de condities van de GPL beschikbaar.

Een ander programma dat is ontworpen voor Linux is Avira AntiVir. Hoewel dit programma goed werk doet als bescherming tegen virussen op Linux is er een probleem: het is geen Open Source software. Dat wil niet zeggen dat het duur is, het programma is namelijk gratis zolang je het maar niet commercieel gebruikt.

Weer wel open source is Clam Antivirus. Het programma is geschreven in C en maakt gebruik van de database die beschikbaar gesteld is op OpenAntivirus.org.

De laatste speler die ik hier noem is Vexira, dat een Server versie van zijn virusscanner aanbiedt. Ook hier kun je slechts een demo versie gratis van ophalen, voor het echte werk moet betaald worden.

OpenAntivirus

Het team van het OpenAntivirus project heeft zich ten doel gesteld voor een serieuze bestrijding van virussen uit de open source hoek te zorgen. Op dit moment doet het project dit door een database beschikbaar te stellen. Een goede virusscanner is immers gebaseerd op een goede on-line database waar alle bekende virussen door herkend kunnen worden. Naast deze database biedt OpenAntivirus een aantal projecten. Een paar voorbeelden: ScannerDaemon, VirusHammer en PatternFinder, die allen geschreven zijn in Java. Het leuke is dat je de programmatuur niet eens hoeft te installeren, van VirusHammer is namelijk een online versie beschikbaar (http://www.openantivirus.org/virushammer.php). Je hebt hier echter wel een geïnstalleerde versie van JavaWebStart en natuurlijk Java versie 2 voor nodig.

Andere projecten

Naast deze programmatuur zijn uit het OpenAntivirus project nog twee interessante projecten beschikbaar, namelijk squid-vscan en samba-vscan waarmee de Squid en Samba services op virussen onderzocht kunnen worden. Ook staan er nog een paar interessante projecten in de planning. Er is net een project opgestart om een set rescue-disks te produceren. De bedoeling is dat met name Windows gebruikers kunnen opstarten met een mini Linux systeem en vervolgens automatisch hun PC kunnen laten scannen. In de toekomst zullen dus ook virussen van Windows computers worden verdreven met behulp van OpenAntivirus software. Naast dit uitermate interessante project wordt ook nog gewerkt aan een remote management system. Als je dan eenmaal beschikt over een goede virusscanner, willen we er natuurlijk ook door middel van een handig programma als Webmin gebruik van kunnen maken.

Het AppArmor project

Apparmor, dat wordt meegeleverd met openSUSE en SUSE Linux Enterprise, is een programmaveiligheidsgereedschap dat is ontworpen om een veiligheidsraamwerk te leveren voor andere programma's dat eenvoudig in gebruik is. AppArmor beschermt proactief het besturingssysteem en alle programma's voor bedreigingen van buiten- en binnenuit, zelfs tegen nog niet ontdekte veiligheidslekken, door goed gedrag af te dwingen en door het gebruik van nog niet ontdekte fouten te blokkeren. De AppArmor veiligheidsprofielen, ook wel profiles genoemd, beschrijven volledig welke systeembronnen door welke programma's kunnen worden aangesproken en met welke privileges. Een aantal standaardprofielen worden met AppArmor meegeleverd. Deze gebruiken een combinatie van geavanceerde statistiek analyse en leren gereedschappen. Hierdoor kan AppArmor zelfs bij zeer complexe applicaties in enkele uren worden toegepast. M.a.w. AppArmor werkt als een in de kernel ingebouwde virusscanner die constant alles in het oog houdt.

De tegenhanger van AppArmor (Novell) is SELinux (Security-Enhanced Linux, hoofdzakelijk ontwikkeld door de US National Security Agency en gesponsord door Red Hat). Beiden gebruiken een gelijkaardige techniek. De ontwikkeling bij Novell van AppArmor is wat stilgevallen, terwijl ze bij openSUSE 11.3 nu SELinux meeleveren. Dit kan een aanduiding zijn, dat SELinux het standaard beveiligingssysteem voor Linux wordt.

2 Spam filteren

Met het groeiende gebruik van internet op het werk en thuis is het voor adverteerders steeds interessanter geworden om per e-mail hun producten aan te prijzen. Het aantal berichten dat je daarom, iedere dag weer, in je mailbox aantreft met aanbiedingen allerlei neemt zodanig toe dat deze stroom van advertenties wereldwijd als een probleem wordt gezien.
Zo is 90 procent (eerste semester 2010) van het e-mail verkeer bij Belgacom spam, dit betekent in reële cijfers dat Belgacom in het eerste semester van 2010 zo'n 11 miljard spam mails moest onderscheppen.

Afgeschoven kosten

Advertenties per email vallen vaak onder de noemer spam, of UCE/UBE (Unsollicited Commercial Email en Unsollicited Bulk Email). Wat ze in ieder geval met elkaar gemeen hebben, is dat de inhoud vaak commercieel van aard is en bovendien ongevraagd en geautomatiseerd in bulk zijn verstuurd naar honderden tot vele duizenden adressen tegelijk. In tegenstelling tot gedrukte advertenties waarvan de adverteerder de kosten van druk en verspreiding draagt (via folders of huis-aan-huis bladen), verschuift de e-mail adverteerder, de spammer, de kosten van de verzender naar de ontvanger. Een spammer stuurt een bericht naar vele adressen tegelijk en is daarbij zelf één keer een kleine hoeveelheid bandbreedte kwijt. Echter, al die duizenden ontvangers downloaden individueel diezelfde hoeveelheid data. Hierdoor zijn het voornamelijk de collectieve eindgebruikers die de lasten voor spam dragen. Denk aan de kosten van het dataverkeer en, niet in de laatste plaats, de kosten van het tijd- en productiviteitsverlies.

Je bent immers iedere keer weer een paar muisklikken kwijt voor het bekijken van de spam waarna je het geïrriteerd weggooit.

Harvesting

De manier waarop spammers aan een e-mail adres komen varieert. Meestal 'harvesten' ze adressen met behulp van spiders (programma's die op het internet allerlei informatie opsporen) van een website waarvan de webmaster zo vriendelijk is de adressen openbaar aan te bieden. Een spammer zoekt bijvoorbeeld naar apenstaartjes (@) in de tekst en herkent een aanklikbare mailto: tag in de webpagina. Soms wordt het e-mail adres opgepikt uit nieuwsgroepen of een forum waar iemand regelmatig post. Mogelijk heb je de spammers zelf aan informatie geholpen bij het registreren op een website. En wanneer je professioneel met internet bezig bent, heb je vast gemerkt dat grote online databases, zoals de 'WHOIS' van Network-Solutions (waar een groot aantal domain name registraties wordt bijgehouden), worden misbruikt door concurrenten die je bestoken met aanbiedingen een domein bij hen te hosten.

Al de geharveste adressen worden op CD-roms met honderdduizend tot enige miljoenen e-mail adressen in het spammer-circuit verhandeld en nota bene ook via spam geadverteerd! Spammers die geen grote e-mail adressenlijst hebben, proberen blindelings lijsten met veel voorkomende voor- en achternamen, in de hoop dat dat e-mail adres toevallig bestaat. De 'trial and error' methode als het ware.

Zelfbescherming

Je kunt veel doen om jezelf preventief te beschermen tegen spam. Veel van de anti-spam maatregelen liggen voor de hand nu je weet hoe spammers aan adressen komen. Een paar tips:

Ondanks het nemen van de nodige voorzorgsmaatregelen blijven maar weinig mensen gevrijwaard van spam. Wanneer je gek wordt van de stroom van spam, kun je mail gaan filteren met anti-spam software en gelukkig is er voor Linux een goed pakket beschikbaar.

Spam Filters

Een spamfilter kan helpen bij het aanpakken van spam. De functie van zo'n filter is op een geautomatiseerde wijze de gehele e-mail te testen. Aan de hand van de testen kan worden bepaald of het een normaal bericht is of juist spam en kan de spam e-mail gemerkt worden. Hierdoor kunnen e-mail programma's met ingebouwde filterfunctie de gemerkte e-mails verwijderen of naar een aparte berichtenmap sturen zodat ze minder afleiden bij het werk. De gebruikte spam-filter methoden zijn in de loop van de afgelopen jaren veranderd. Vroeger was het voldoende om de e-mail op basis van een lange woordenlijst te testen, maar met een verhaspeling of synoniem was zo'n filter te omzeilen. Men moest de filter-methoden dus verbeteren. Op dit moment is er diverse anti-spam software die, soms direct gekoppeld aan de mailserver, op alle binnenkomende en uitgaande e-mails een hele batterij tests uitvoert. Een van de meest bekende spam filters is het pakket SpamAssassin, wat geschreven is in Perl.

Tests

SpamAssassin gebruikt een gevarieerde set van anti-spam tests. De basis van het pakket leunt voor een groot deel op patroonherkenning van de tekst van de e-mail. Daarbij worden zowel de headers als het bericht zelf van de e-mail onder de loep genomen en iedere regel onderzocht op 'spamminess' (mate waarin de mail spam is). Zo wordt onder andere bekeken of de headers echt zijn of dat men Outlook simuleert. Ligt het moment van versturen niet al te ver in de toekomst of verleden om prominent bovenaan in het postvak in te komen? Wordt de mail niet naar teveel mensen tegelijk verstuurd? Het bericht zelf van spam e-mail bevat vaak tekst in HTML opmaak in felle kleuren en spammers schrijven regelmatig in een ontkenning onderaan de e-mail dat hun berichtje juist géén spam is. SpamAssassin herkent dat allemaal! Uiteraard ontbreken de tests van korte zinnetjes niet die wijzen op pillen of bankfraude. Wanneer je de moeite neemt in de instellingenbestanden van SpamAssassin te duiken, zul je er versteld van staan waar allemaal aan is gedacht.

Plussen en minnen

Is in een e-mail een bepaald spampatroon herkend, dan levert dat strafpunten op. Het omgekeerde geldt ook: bij indicatie van een normale e-mail worden er strafpunten afgetrokken. Alle plussen en minnen bij elkaar optellend, komt men aan een eindscore voor de spamminess van de e-mail. Boven een bepaalde grens wordt de e-mail als spam beschouwd. Al naar gelang de instellingen zal SpamAssassin het onderwerp aanpassen door er '[spam]' voor te zetten, of bijvoorbeeld alleen de 'X-Spam-Status: Yes' header mee te sturen waarop mail programma's kunnen reageren.

Patroonherkenningsmethoden zijn over het algemeen prima bruikbaar, maar beperkt in flexibiliteit. Iedere keer bedenkt een spammer nieuwe trucs om de filters te passeren en dan is menselijke tussenkomst nodig voor een aanpassing.

Een andere methode tegen spam is het bepalen van een controlesom (checksum) of 'signature' van de e-mail en deze te vergelijken met een centrale database met signatures van spam. De eerste persoon die een spam e-mail krijgt kan dit doorsturen naar een database, waardoor iedereen die op een later tijdstip dezelfde e-mail krijgt automatisch wordt gewaarschuwd. Dit is het principe van Vipul's Razor, een optionele test in SpamAssasin. Het zwakke punt van deze methode is dat spammers steeds vaker stukjes random tekst in hun spam opnemen waardoor de Vipul's Razor test in SpamAssasin zijn kracht verliest.

Plan for spam

Het meest geavanceerde wapen in de strijd tegen spam op dit moment is de Bayesiaanse filtering. Dit is een statistische methode die sinds de zomer van 2002 in de anti-spam wereld bekend werd door het artikel “A Plan for Spam” van Paul Graham (http://www.paulgraham.com/spam.html). De methode maakt gebruik van de regelmaat waarin bepaalde woorden voorkomen in spam en andere woorden juist in normale e-mail. Het Bayesiaanse filter zal uit een grote verzameling spam en een andere grote verzameling normale e-mails, de zogenaamde 'spam-corpus' (grote verzameling spam berichten) en 'ham-corpus' (ham = gewone e-mail) de verschijningsfrequentie bepalen van alle woorden die in de afzonderlijke verzamelingen voorkomen. Hiermee wordt het Bayes filter 'getraind' op de specifieke typen spam en ham die binnen komen.

Na de training wordt een e-mail geanalyseerd en voor ieder woord bepaald in welke mate deze bijdraagt aan de 'spamminess'. De regel van Bayes zegt dat wanneer in een e-mail meer spam woorden voorkomen dan in een normale e-mail, de kans sterk toeneemt dat het daadwerkelijk een spam e-mail betreft. Uit het Bayesiaanse filter komt dus een spam-score, die door SpamAssassin gebruikt wordt bovenop de eerder genoemde patroonherkenning.

False

Geen enkel filter is honderd procent effectief. Altijd zijn er gewone e-mails die per ongeluk als spam geclassificeerd worden (false positives) en er zal ook altijd spam zijn die niet herkend wordt (false negatives). Met name voor Bayesiaanse filtering geldt dat deze methode alleen goed werkt wanneer de trainingsset groot genoeg is geweest (zowel voor het aantal spams als het aantal hams). SpamAssassin heeft een auto-learn modus waarbij alle e-mails met een spam-score kleiner dan -2 (ham) en groter dan 15 (spam) aan een database worden toegevoegd. Zo leert SpamAssasin op basis van jouw mail de meest extreme situaties beter herkennen en wordt het Bayesiaanse filter steeds effectiever.

Realtime Blackhole Lists

Realtime Blackhole Lists (RBL's) zijn lijsten van IP-adressen van onder andere spammers en worden als anti-spam tool veel gebruikt. Een mail-server blokkeert met behulp van RBL's vaak al de connectie, waardoor alle e-mail van die server of afzender wordt afgewezen. SpamAssasin heeft ook een optie die op basis van RBL's een bijdrage aan de spamminess toekent.

Een waarschuwing is echter op zijn plaats: je maakt gebruik van een database van derden en het wegvallen van één van de RBL-servers, of een onverwachte verandering in het beleid van de RBL-beheerder kan gevolgen hebben voor de manier waarop mail wordt afgehandeld.

Dit overkwam een groot aantal mensen die in augustus 2003 gebruik maakten van de osirusoft.com RBL die plots stopte.

Opdrachten

Clam AntiVirus is een anti-virus toolkit voor Linux, ontworpen voor e-mail scanning op mail gateways. Het werkt met een flexibele en uitbreidbare multi-threaded deamon (service, dienst), een opdracht scanner en een geavanceerd systeem om via het internet automatisch op te waarderen. Het pakket omvat daarnaast een gedeelde bibliotheek, waardoor andere programma's gebruik kunnen maken van de diensten van Clam AntiVirus.

  1. Installeer het pakket clamav en bijhorende Virus Database (zorg dat je steeds de recentste versie gebruikt, m.a.w. zorg dat de softwarebron Bijwerken ingeschakeld is en automatisch vernieuwd wordt).
    Controleer en noteer de versie:

  2. Met de opdracht `clamscan ~` wordt de persoonlijke map op virussen doorzocht.

    1. Welke melding krijg je daarbij?

    2. M.a.w. het programma om virussen op te sporen is geïnstalleerd, maar de database met de gegevens hoe de verschillende virussen herkend kunnen worden is oud.

      1. Dit kun je verhelpen met de opdracht `sudo freshclam` uit te voeren.
        Welke .cvd bestanden werden van het internet gehaald?

    3. Doorzoek nogmaals de persoonlijke map op virussen.

  3. En nu een echte test:

    1. Kopieer het testvirus ~/Documenten/Beveiliging/clam.zip naar de Persoonlijke map.

    2. Controleer opnieuw de Persoonlijke map op virussen.
      Welke opmerking staat er bij het bestand clam.zip?
      Let ook op het feit dat ClamAV gecomprimeerde bestanden op virussen doorzoekt.

    3. Verplaats het testvirus ~/clam.zip naar de map ~/Downloads/.

    4. Doorzoek opnieuw de Persoonlijke map op virussen.
      Hoeveel virussen heeft ClamAv gevonden?

    5. We gebruiken de opdracht clamav niet helemaal juist:

      1. Start de Konqueror webbrowser.

      2. Typ in de Locatiebalk man:clamscan en bevestig met Return.

      3. Zoek in de handleiding van clamscan hoe je recursief (alle onderliggende mappen eveneens doorzoeken) naar virussen kunt zoeken.

      4. Welke opdracht gebruik je om de Persoonlijke map en alle onderliggende mappen op virussen te doorzoeken?

        1. Hoeveel virussen vond je nu?

  4. Uw persoonlijke map op virussen controleren kan ook op een gebruiksvriendelijke grafische manier:

    1. Installeer via het internet het pakket clamtk en bijhorende perl-bibliotheken en taal-pakket.

    2. Start het programma K menu > Programma's > Systeem > Beveiliging > Virus Scanner.

    3. Scan de Thuismap. Hoeveel virussen vond je?

    4. Met de menu-opdracht Scannen > Thuismap (recursief) vind je virussen.

    5. In het venster met de Scanresultaten plaats je de gevonden virussen in quarantaine.

  5. Indien het scannen van de Persoonlijke map pas gebeurt nadat je een met een virus besmet bestand hebt gebruikt, is het reeds te laat en is het virus actief. Om dit te voorkomen heb je een On access scanner nodig die bestanden controleert bij het openen, sluiten en uitvoeren. Clamav kan als On access scanner worden ingezet met behulp van de kernel module Dazuko. Deze module is echter enkel en alleen te gebruiken als je de kernel van uw systeem hercompileert. Daarbij wordt de veiligheid van uw kernel dermate ondermijnt dat de kans op een geslaagde aanval op uw systeem een stuk groter wordt met virusbescherming dan zonder. En aangezien je dan met een aangepaste kernel werkt, kun je niet meer rekenen op kernel-updates van openSUSE en moet je dus zelf zorgen voor de kernel-updates. Daar zien we dus vanaf. We rekenen dus verder op AppArmor.

  6. Om de veiligheid te verhogen ga je ClamAV instellen om automatisch op te waarderen.

    1. De eenvoudigste manier om dit te verwezenlijken is via de taakplanner Cron (zie pagina 13).

    2. Aangezien we nogal paranoïde zijn, moet er elk uur een opwaardering uitgevoerd worden.

    3. Beschrijf de stappen om dit te bekomen:

  7. Voorlopige Conclusie:

    ClamAV en gelijkaardige virusscanners kunnen alleen ingezet worden om een systeem (of map) op virussen te ............................. Automatisch blokkeren van besmette bestanden bij het ..........................., ........................................... of .......................................... werken niet zonder verregaande ingrepen. M.a.w. Virusscanners zijn op een Linux-systeem voor thuisgebruikers beperkt inzetbaar.

Tot zover de virusscanner ClamAV. ClamAV heeft echter wel alles in huis om virussen op servers te bestrijden. De documentatie en de commentaar in de configuratiebestanden laten systeembeheerders toe zelf alles uit ClamAV te halen en dat is veel. Wie tevreden is met een doorsnee beveiliging kan gebruik maken van de door de distributies meegeleverde pakketten (zoals AppArmor) en daar heb je geen omkijken naar.

3 KMail en antivirusprogramma ClamAV

ClamAV gebruik je als thuisgebruiker best wel om uw emails te controleren op virussen. Niet zozeer om het eigen Linux-systeem te beschermen, maar om collega's Windows gebruikers niet met virussen op te zadelen bij het doorsturen van emails.

  1. Start KMail.

    1. Stel KMail in zodat je de lokale mail van gebruiker sntcursist kunt ontvangen en versturen (p. 7).

    2. Klik met de rechtermuisknop op Lokale mappen en maak een Nieuwe map... met de naam Besmet.

  2. Start de Antivirus-assistent in het menu Hulpmiddelen.

    1. Maak gebruik van het hulpprogramma Clam Anti-Virus om de virussen op te sporen.

    2. Kenmerk de berichten met ClamAV.

    3. Verplaats de besmette berichten naar de map Besmet.

    4. Taken zoals het onderzoeken van mails op virussen gebeurt via Filters:

      1. Je kunt de Filters bekijken met het menu Instellingen > Filters instellen....

      2. Eerste Filter: Naam:

        Functie:

      3. Tweede Filter: Naam:

        Functie:

  3. Je hoeft nu alleen nog maar een test uit te voeren.

    1. Pak het bestand clam.exe uit ~/Documenten/Beveiliging/clam.zip

    2. Maak een nieuwe e-mail naar sntcursist@localhost, als onderwerp 'Virus' en als bericht 'Open de bijlage en al uw wensen worden vervuld'.

    3. Met de werkbalkknop Bijvoegen voeg je het bestand clam.exe als bijlage aan de e-mail toe.

    4. Na het Verzenden van dit bericht, ga je Controleren op nieuwe berichten.

    5. De e-mail met het testvirus moet in de map Besmet zitten.

  4. Een tweede test bestaat uit het controleren van een gecomprimeerde bijlage.

    1. Maak een nieuwe e-mail naar sntcursist@localhost, als onderwerp 'Virus in gecomprimeerde bijlage' en als bericht 'Open de bijlage en wordt rijk.'

    2. Met de werkbalkknop Bijvoegen voeg je het bestand ~/Documenten/Beveiliging/clam.zip als bijlage aan de e-mail toe.

    3. Na het Verzenden en het Controleren op nieuwe berichten staat onze e-mail met het testvirus in de gecomprimeerde bijlage in de Lokale map

  5. Sluit alle vensters.

4 Spam filteren met KMail en Spamassassin

  1. Start KMail.

    1. Klik met de rechtermuisknop op Lokale mappen en maak een Nieuwe map met de naam Spam.

  2. Start de Antispam-assistent in het menu Hulpmiddelen.

    1. Hoeveel hulpprogramma's herkent KMail om spam te lijf te gaan?

    2. De spamfilters moeten de spam als volgt behandelen:

      1. Gebruik het hulpprogramma SpamAssassin om berichten te classificeren.

      2. De gevonden spamberichten moeten naar de map Spam verplaatst worden.

  3. Hoeveel filters heeft KMail aangemaakt om Spam af te zonderen?

  4. Nu moeten we nog testen of spamassassin werkt, dat kan als volgt:

    1. Ga op het internet op zoek naar de GTUBE spam test.

    2. Kopieer een mailbericht die als test kan dienen.

    3. Maak in KMail een nieuwe e-mail naar sntcursist@localhost met als onderwerp 'Spambericht' en als bericht het pas gekopieerde bericht van de spam test.

    4. Klik op de werkbalkknop Verzenden om de spamtest e-mail te verzenden.

    5. Klik op de werkbalkknop Controleren op nieuwe berichten om de spamtest e-mail te ontvangen.

    6. In de Lokale map Spam moet nu één bericht staan: onze spamtest e-mail.

      1. Lees de ontvangen spamtest e-mail. Spamassassin heeft zijn werk gedaan en heeft zelfs een stuk aan de e-mail toegevoegd. Hoeveel punten kreeg onze testspam e-mail?

      2. Vanaf hoeveel punten wordt een e-mail bericht als spam beschouwd?

      3. Indien Spamassassin meerder malen slechte punten heeft gegeven. Som dan de redenen en het aantal slechte punten op:

      4. Indien Spamassassin meerdere malen goede punten heeft gegeven. Som dan de redenen en het aantal punten op:

  5. Indien een spambericht door de mazen van het net glipte, kun je met de werkbalkknop .......................... Spamassassin bijscholen om nog te ontvangen gelijkaardige berichten ook als spam te aanschouwen. Door het klikken op deze knop wordt de geselecteerde email naar de map Spam verplaatst.

    1. Welke filter zorgt dat deze knop correct werkt?

    2. Welk commando wordt bij deze actie uitgevoerd?

  6. Indien een gewenst bericht toch in de Spam map terecht kwam, kun je met de werkbalkknop ............... Spamassassin bijscholen om in het vervolg gelijkaardige berichten niet als spam te beschouwen. Door op deze knop de klikken zullen geselecteerde spamberichten naar de map postvak in verplaats worden.

    1. Welke filter zorgt dat deze knop correct werkt?

    2. Welke opdracht wordt bij deze actie uitgevoerd?

  7. Sluit alle vensters.