Web beveiliging

Introductie
In de wondere wereld van het web waarin alles kan en mag zijn we natuurlijk blij dat we alles kunnen maken en alleen onze fantasie de beperkende factor is. Echter lopen we dan al snel tegen het feit aan dat er altijd mensen met meer kunde danwel fantasie rondlopen. Deze mensen kunnen ons helpen onze kennis en wijsheden met betrekking tot onze websites uit te breiden. Helaas zijn er ook mensen die hun superieure (of gewoon de dingen waar wij website eigenaren niet bij stil staan) kennis misbruiken om andermans websites te misbruiken voor het “kwaad” (spam / dubieuse content / machtsvertoon / etc ). Deze mensen moeten we de toegang tot onze websites minimaliseren (er is altijd nog een “gat in het maas te vinden”). De drempel moeten we proberen zo hoog mogelijk te leggen. Om dit te kunnen doen moeten we ons eerst in de gedachte van de kwade bedoelingen storten.
Hackers en Crackers
Hackers zijn eigenlijk mensen die software en in ons geval websites afzoeken naar beveiligings lekken en deze kenbaar maken aan de eigenaar / beheerder van de website. Daarintegen zijn crackers de personen die ditzelfde doen maar dan met doel om slecht mee te doen. Zeg maar de gevonden beveiligings lekken te gebruiken voor hun eigen doeleinden om zo zelf buiten schot te blijven. Deze doeleinden liggen vaak niet in het bedoelde gebruik van de maker.
Als je dat zo leest zijn hackers eigenlijks goed en crackers juist slecht. Dit klopt ook maar zijn door de jaren heen de termen zo nou gaan samen lopen dat ook hackers nu als slecht beschouwd worden. Vandaar dat in dit document hackers zowel als crackers onder de noemer slecht vallen tenzijn expliciet aangegeven.
Mijn eerste website.
Wie een website online wil hebben zal moeten beginnen van het vinden van een geschikte hosting partij. Hosting is er te vinden in allerlei soorten en maten, niet te vergeten prijs klasses. We gaan hier alleen kijken naar een paar basis wensen die de beveiliging ten goede zullen komen. Dit betekend niet dat een hosting provider zonder deze punten goed is, wellicht hebben ze een alternatief voor de beveiliging die u probeert te evenaren.
WatWat is het / Waarom
FTPftp staat voor “bestand verstuur protocol” (file transfer protocol). Dit is een goede manier om uw bestanden te kopieren naar uw website. Bij gewoon gebruik (zoals de meeste mensen) is dit echter niet beveiligd. Als u verbinding maakt wordt uw gebruikers naam en wachtwoord als platte tekst zichtbaar. Iedereen die op de lijn luistert heeft nu uw aanmeldnaam en wachtwoord en kan hetzelfde als u.
SSHSsh staat voor “beveiligde inlog” (Secure Shell) dit is al voor de wat gevorderde gebruikers. U kunt via bepaalde tools een ssh verbinding maken met de hosting en zo beveiligd inloggen waarna u via ftp de bestanden toch beveiligd kunt overzenden.
SFTPDit is eigenlijk een combinatie van SSH en FTP met SFTP maakt u gelijk al een beveiligde verbinding en kunt u met een gerust hart uw website online zetten. De overdracht is wel trager dan met gewoon FTP maar dit is zeker de moeite waard.
Beveiligde directoriesDit ziet u vaak niet in de eerste overzichten staan maar is wel degelijk een belangrijk punt. De mogelijkheid van beveiligde directories houd namelijk in dat u mappen waarin u informatie plaatst die niet voor iederen toegangelijk zou moeten zijn beveiligen met een gebruikers naam / wachtwoord. Deze beveiliging wordt geregeld op het bestands systeem niveau van de server waarop uw website gehost word. Dit is zo’n beetje een beveiliginge op het hoogste niveau. (veelal op unix/linux systemen beter bekend als .htaccess)
SSLAls u rondneust op het internet gebruikt u een niet beveiligde manier van surfen, oftwel HTTP (hyper text transfer protocol). Dit is ook prima omdat 80% van de informatie die u ziet op het internet voor iedereen vrij toegankelijk is en er dus geen reden voor betere veiligheid vereist is. Echter voor bijvoorbeeld beheer functies / bank transacties / gevoelige informatie overdracht is dit een ander verhaal. Hiervoor kunt u gebruik maken van HTTP over SSL (secure socket layer) beter bekend als HTTPS, wat u bij banktransacties via IDEAL vooraan in de adresbalk zult zien.

  • ftp / sfpt programma tip : FileZilla (gratis te vinden)
  • ssh / telnet programma tip : Putty (gratis te vinden)
Website beheer

Tegenwoordig kunnen we bijna niet meer een website vinden waar doormiddel van een online module het beheer wordt uitgevoerd. Dus is het belangrijk dat we dit beveiligen.
Tip 1 (minimaal aantal mappen) :
Zorg dat uw beheer module zo weinig mogelijk hoofd mappen heeft. De voorkeur verleent ten alle tijden een enkele hoofd map voor uw beheer. Veel genoemde namen zijn :
  • Admin
  • Manager
  • Beheer
Op zich zijn deze namen niet een beveiligings risico op het moment van dit schrijven maar ze geven wel prijs wat het doel is en zal het niet onverstandig zijn (wanneer u zelf deze namen kunt bedenken) hier wat anders voor in de plaats te gebruiken. Dit om de robots (automatische scripts) die website naar website bezoeken om zwakke plekken te ontdekken bekende beveiligings lekken maar al te graag op uw website ontdekken.
Tip 2 (beveilig uw hoofd beheer map):
  • Uw hosting provider heeft "beveiligde directories".
Maakt u gebruik van een hosting beheer module (bv Plesk, Cpanel, Helm, etc). Zoek dan na het aan melden de module om uw mappen te beveiligen. De naam van dit onderdeel kan afhankelijk van taal instellingen en of hosting beheer module verschillen maar de uitleg zal altijd wijzen op het feit dat u uw mappen kunt voorzien van een login-naam en wachtwoord.
  • Uw voorziet in uw eigen beveiliging.
Kun u niet via uw hosting pakket een map voorzien van een login-naam en wachtwoord probeer dan via een script taal (PHP, PERL, Python, JavaScript, etc) die door uw hosting provider ondersteund wordt zelf dit af te dwingen. (Zie hoofdstuk pagina beveiliging)
  • Vraag uw hosting provider.
Vergeet nooit dat uw hosting provider er is om u te helpen. Email ze eens met de vraag wat u wilt bereiden qua beveiliging en wat ze voor u kunnen betekenen hiermee.
Tip 3 (kruip in de huid van uw belager):
Blijf altijd nadenken over de beveiliging van uw website en hoe u deze beheert. Als u een beveiligings lek kunt bedenken zullen anderen dat ook doen. Voorziet u in de bestrijding van dit lek zal de drempel voor het hacken van uw website weer een beetje hoger liggen.
Invoer van gegevens
Om een dynamische website betekenis te geven is het van belang dat u bezoekers aan het woord laat. Dit kan bijvoorbeeld doormiddel van een :
  • (we)Blog met reacties.
  • Gastenboek.
  • Inlog gedeelte voor extra informatie.
  • Opiniepeiling
  • Inschrijven nieuwsbrief
Er zijn nog een veeltal meer onderdelen te bedenken waarvoor u de invoer van gegevens door bezoekers laat doen.
Tip 1 (weet wat u doet met informatie):
Controlleer of de gegevens overeenkomen met wat u verwacht. Dit voorkomt al de eerste frustratie als u de informatie wilde gebruiken om bijvoorbeeld een nieuwsbrief uit te sturen of als nieuwe bezoekers door de pagina’s SPAM heen moeten worstelen om uw interesante webpagina te kunnen bekijken.
Controlleer waar mogelijk op een of meerdere van de volgende punten :
  • Lengte van invoer (Een telefoon nummer bevat minimaal 10 cijfers)
  • Speciale karakters (bevat het email adres minimaal een "@" en een "." )
  • Betekenis (Een ISBN heeft bijvoorbeeld een controle getal)
  • Structuur (een postcode heeft vier karakters + twee cijfers XXXX99)
Tip 2 (controleer de identieteit):

Voordat je weet wie er op je website rondloopt kun je toch al een onderscheid maken tussen twee groepen bezoekers.
gewenst zijn zoek machines die je website breeder bekent kunnen maken en iedereen die je website wil bewonderen en hier al dan niet interactie mee pleegt. Dit zijn dus de mensen die je wenst en waar mogelijk dat deze terug komen op je website.
Ongewenst zijn o.a. de mensen die de taal van je website niet begrijpen, en kunnen dus onmogelijk nuttige informatie achter laten. Mensen die kwaad in de zin hebben, hoewel deze het gevaarlijkste zijn voor je website en qua inhoud die meteen online komt (zoals gastenboek) het meeste kwaad kunnen, zijn deze er gelukkig bijna niet. En als laatste de grootste groep zijn de robots (scripts die beveiligings lekken zoeken).

Vraag dus waar mogelijk (niet te vaak maar wel vaak genoeg) naar een controle getal / woord. Voor bezoekers met een andere taal achtergrond is dit vaak niet begrijpbaar genoeg om goed in te kunnen vullen. Voor robots ligt dit vaak wat anders omdat deze dit soort technieken kunnen herkennen en invullen. Laat je het controle getal / woord in een plaatje zien krijgen ook deze het al moeilijker.