IBA Verklaart Secure boot

Om te zorgen dat niet iedereen bij alle gegevens op jouw computer kan, is het belangrijk dat alle beveiligingslekken zijn dichtgetimmerd. Dit begint natuurlijk bij het vergrendelen van je computer met een veilig wachtwoord. Zo kan iemand die jouw computer heeft, niet zomaar inloggen en direct bij jouw gegevens. Maar iemand die een beetje handig is met computers laat zich hier niet door tegenhouden.
Een hacker, laten we haar Eve noemen, kan de harde schrijf uit je computer halen, en deze vervolgens aansluiten op haar eigen computer. Zo kan ze haar eigen computer gebruiken om de gegevens van je harde schrijf te halen, en hoeft ze dus niet in te kunnen loggen op jouw computer.

Om dit tegen te gaan kunnen moderne besturingssystemen je harde schrijf versleutelen. Dit werkt als volgt: de harde schrijf wordt opgedeeld in twee delen; één deel bevat je besturingssysteem, en het andere deel is versleuteld en bevat jouw gegevens. Het eerste wordt gelezen wanneer de computer wordt opgestart, en nadat je hebt ingelogd op de computer met je wachtwoord, wordt je wachtwoord gebruikt om de rest van de harde schrijf te kunnen ontsleutelen. Zo kan Eve, ook als ze jouw (computer met) harde schrijf heeft gestolen, nog steeds niet bij jouw gegevens. Eve weet immers jouw wachtwoord niet.

Natuurlijk is alleen dit niet genoeg om een volhardende hacker tegen te houden. Eve kan je harde schrijf ongemerkt stelen, de onversleutelde inhoud van je harde schrijf veranderen, en je harde schrijf dan stiekem weer terug in je computer zetten.  Zo kan Eve een keylogger installeren op jouw computer, die alles wat jij intypt onbeveiligd opslaat. Nadat jij een keer hebt ingelogd op je geïnfecteerde computer kan Eve jouw harde schrijf opnieuw stelen, waardoor ze zowel je versleutelde gegevens als jouw wachtwoord heeft. Natuurlijk is het onopvallend stelen en terugplaatsen van een harde schijf erg moeilijk, maar het is wel belangrijk om hier tegen te kunnen beschermen. Gelukkig bestaat er een manier om je ook hier tegen te beschermen. Ik zal in grote lijnen uitleggen hoe deze techniek werkt.

Het onversleutelde deel van de harde schrijf wordt digitaal ondertekend door middel van asymmetrische cryptografie. De producent van het besturingssysteem heeft een publieke sleutel en een geheime sleutel. De publieke sleutel wordt op een niet-herschrijfbare chip in het moederbord gezet. De gegevens op deze chip worden in de fabriek er op gezet, en kunnen daarna nooit meer veranderd worden. De fabrikant van het besturingssysteem gebruikt de geheime sleutel voor het maken van een digitale handtekening voor het besturingssysteem. Deze digitale handtekening wordt samen met het besturingssysteem op het niet-versleutelde deel van de harde schijf gezet.

Wanneer de computer nu opstart, controleert de firmware van het moederbord of het niet-versleutelde deel van de harde schijf nog overeenkomt met de handtekening. Alleen als dit het geval is, gaat de computer door met het opstarten van het besturingssysteem. Hierna wordt weer jouw wachtwoord gebruikt om de rest van de harde schijf te versleutelen. Nu weet je zeker dat Eve niks heeft kunnen installeren op jouw computer. Tenzij Eve je moederbord vervangt, of de geheime encryptiesleutel wordt gelekt, of er fouten zijn gemaakt in de moederbordfirmware.

IBA Verklaart Multiseat

Als je wel eens in de werkkamer van A–Eskwadraat bent geweest, heb je misschien wel gezien dat er 12 (op moment van schrijven staan er tijdelijk 8) werkplekken zijn, maar dat ze aangesloten zijn op slechts 3 computers. Dit wordt een multiseat opstelling genoemd. Toen vroeger de eerste computers bij bedrijven en universiteiten in gebruik werden genomen, waren computers nog zo groot dat ze een hele kamer innamen, en was het dus nog niet mogelijk om een aparte computer per gebruiker te hebben. Tegenwoordig is dat natuurlijk geen probleem meer, maar er zijn nog steeds goede redenen om een multiseat opstelling te hebben.

Iedere computer heeft een hoeveelheid geheugen. Maar waarschijnlijk gebruik je meestal een stuk minder geheugen dan dat je computer tot zijn beschikking heeft. Dit geheugen is voor het geval dat je een keer zwaardere software of veel programma’s tegelijk wilt gebruiken. Wanneer je vier werkplekken op één computer hebt, hoef je vaak minder geheugen te hebben dan dat vier losse computers zouden hebben, omdat niet alle vier de gebruikers tegelijk zware software willen draaien. Ditzelfde argument gaat bijvoorbeeld ook op voor hoe krachtig de processor moet zijn, en hierdoor kan het goedkoper en energiezuiniger zijn om één krachtige computer voor 4 werkplekken te kopen dan om 4 gewone losse computers te kopen.

Een ander voordeel is dat er door zo een opstelling minder onderhoud nodig is per werkplek. Je hoeft maar één keer software te installeren of instellingen aan te passen in plaats van 4 keer, dus dit kan heel veel werk besparen. Bij grotere organisaties zoals de Universiteit Utrecht maakt dit minder verschil, want daar zijn de update- en installatieprocessen grotendeels geautomatiseerd.

Besturingssystemen zoals Linux hebben de mogelijkheid om meerdere werkplekken aan te sluiten standaard meegeleverd. Als je dit op een computer met Linux leest, zou je kunnen proberen om control en alt ingedrukt te houden, en de toetsen F1 tot en met F8 een voor een in te drukken. Over het algemeen kom je met ctrl+alt+F7 terug waar je normaal bent. Hiermee wissel je standaard tussen zogehete virtual terminals, maar het is mogelijk om hier een aparte grafische omgeving te starten. Overigens zal je niet op alle Linux computers zomaar naar de virtuele terminals kunnen wisselen. Op de computers in de werkkamer staat het natuurlijk uit, zodat je niet per ongeluk het scherm van je buurman voor je krijgt.

Als je een Linux computer tot je beschikking hebt en zelf eens wilt proberen om een tweede grafische omgeving te starten, kan je met ctrl+alt+F1 naar een virtuele terminal gaan, daar inloggen en het volgende commando uit te voeren:

startx -- :1

Als het goed is kom je nu vanzelf bij je nieuwe inlogscherm terecht. Je kunt heen en weer gaan met control, alt en de F-toetsen. Om de tweede grafische omgeving weer te stoppen, kun je het nieuwste Xorg proces (degene met de hoogste process id) stoppen met de taskmanager, maar pas op dat je geen niet-opgeslagen werk open hebt staan in de nieuwe omgeving.

Om de nieuwe grafische omgeving echte werkplek te maken, heb je natuurlijk een extra scherm, toetsenbord en muis nodig. Helaas is het niet zo simpel dat je de extra apparatuur alleen hoeft aan te sluiten, maar gelukkig zijn er meerdere goede handleidingen op internet, zoals bijvoorbeeld deze (https://wiki.archlinux.org/index.php/xorg_multiseat), maar je Linux-distributie naar keuze heeft wellicht een eigen handleiding.

Zeker als je niet zo ervaren met Linux bent, is het een goed idee een backup te maken van je belangrijke bestanden voordat je dit probeert, omdat als je grafische interface interface niet meer werkt, je niet zo makkelijk het internet kan raadplegen om te vinden hoe je alles weer herstelt.

IBA Verklaart ssh

Al sinds de beginjaren van het internet werden er applicaties gemaakt om in te kunnen loggen op andere computers vanaf je eigen computer. Neem bijvoorbeeld programma’s zoals telnet en rsh (als deze programma’s je niks zeggen, wees gerust, we zullen ze niet behandelen). Echter, de bestaande programma’s hadden niet genoeg beveiliging en waren vatbaar voor bijvoorbeeld wachtwoordsniffers. Daarom besloot Tatu Ylönen in 1995 om een beter programma te maken voor het inloggen op andere computers en hij doopte het programma ‘ssh’ (secure shell). Al vanaf het begin bleek ssh populair en tegenwoordig is het niet meer weg te denken in de wereld van Linux en Macs en wordt het gebruikt om veilig bestanden over te sturen, applicaties op een andere computer te draaien en nog veel meer. Windowsgebruikers moeten zich nog wenden tot andere applicaties om hetzelfde doel te bereiken (denk bijvoorbeeld aan PuTTY) maar Microsoft heeft in 2015 aangekondigd dat het ssh in toekomstige generaties van Windows gaat integreren.

Hoe werkt ssh dan precies, vraag je je misschien af. Laten we eens gaan kijken wat er allemaal gebeurt als je een ssh-connectie probeert op te zetten. Het eerste wat je doet is verbinding maken met de ssh-poort op de ssh-server (meestal poort 22). Op dit moment krijgt de client (dat is de computer vanaf waar je connectie maakt) twee dingen toegestuurd: de protocolversie en de ssh-versie van de server. Als de client het protocol ondersteunt, kunnen ze verder. Op dit moment gaan zowel de client als de server over op een Binair Package Protocol, dat betekent dat de pakketjes die overgestuurd worden nu 32 bits groot zijn. De server stuurt nu zijn publieke sleutel (het publieke deel van de asymmetrische versleuteling, maar dat is weer een verhaal voor een andere keer), 8 willekeurige bits die de client moet terugsturen als antwoord en tenslotte alle soorten encryptie die ondersteund worden. Nu maakt de client een symmetrische sleutel aan en stuurt deze sleutel ook naar de server. Deze sleutel wordt gebruikt om de data die over de ssh gestuurd wordt te versleutelen. Merk natuurlijk wel op dat deze sleutel eerst versleuteld wordt met de publieke sleutel van de server. Ook geeft de client op dit moment aan welke versleutelingsmethode hij gebruikt voor het versleutelen van de data. Als laatste stap wacht de client op een bevestiging van de server. Deze bevestiging is uiteraard versleuteld met de symmetrische sleutel die de client heeft aangemaakt en is belangrijk voor de client; dit is namelijk nu de enige manier om te weten of de client met dezelfde server praat als waar hij net mee heeft gecommuniceerd, dit om zeker te zijn dat er niet iemand is die met alles loopt te rommelen om zo je geheime data te achterhalen. Als dit allemaal goed is gegaan kunnen de client en de server versleuteld en veilig met elkaar babbelen en kan je gaan inloggen op de server.

Dit is natuurlijk een hoop informatie om in 1 keer te bevatten, dus we gaan nu kijken wat er gebeurt als je vanaf thuis bij \aesnaam gaat inloggen. Je probeert dan dus vanaf thuis met poort 22 op de A-Eskwadraatserver te verbinden. Het eerste wat je tegenkomt is de router. De router zorgt voor poortforwarding. Dat houdt in dat de router een lijstje heeft staan met welke poortverbinding hij moet doorsturen naar welke poort op welke machine. Daar staat bijvoorbeeld dat als je op poort 22 probeert te verbinden, de router je doorstuurt naar poort 22 op de ssh-extern-machine van A-Eskwadraat, paul. Vervolgens maak je dus verbinding met poort 22 op paul en treedt het standaard ssh-protocol in werking. In de router staan echter nog meer regels, zo kan je bijvoorbeeld verbinding maken met poort 32022 om op de workstation dennis uit te komen. Probeer het zelf ook eens uit, Linux- en Mac-gebruikers kunnen het commando ssh gebruiken:

ssh [username]@a-eskwadraat.nl -p 32022

Windowsgebruikers kunnen als ze putty gebruiken in putty selecteren met welke poort ze verbinding willen maken.
Natuurlijk wordt de poortforwarding voor veel meer gebruikt dan alleen ssh, denk aan mail of een http-request, maar dat is een verhaal voor een andere keer!

IBA Verklaart Router

Naast de verschillende servers en workstations die A-Eskwadraat heeft is er nog een cruciaal onderdeel binnen het netwerk, de router. De router is de spin in ons netwerk. Hij bepaalt welke diensten beschikbaar zijn en hoe je die kunt benaderen.

Besturingssysteem

Tot voor kort draaide de router binnen ons netwerk op OpenBSD. Hoewel er voordelen zijn om OpenBSD te draaien op een router, te noemen makkelijke firewall configuratie en veiligheid, zijn er ook nadelen. De nadelen zijn onder andere de lastige manier van updaten, wat voor een router van zeer groot belang is. Doordat updaten zeer lastig is komt de veiligheid in het geding, vooral met de vele beveiligingslekken in onder andere SSL de laatste tijd. Daarom zijn we als sysop al langere tijd bezig met een vervangend systeem, dat goed aansluit bij de andere systemen die we gebruiken en dus ook CentOS draait.

Firewall

Binnen besturingssystemen zitten firewalls, deze zijn er om de veiligheid van een netwerk te bewaren. Daarbij is de router de eerste beveiliging tussen de grote boze buitenwereld en het interne netwerk van A-Eskwadraat. OpenBSD heeft een zeer mooie manier om een firewall te configureren, waarbij de configuratie leesbaar is voor de beheerders (pf). Iedere regel beschrijft zeer duidelijk wat er gebeurt. Bij andere systemen is dit over het algemeen lastiger te lezen. Zo ook bij een GNU/Linux systeem, daarbij zijn er vele mogelijkheden om je firewall te configureren. Deze vertalen echter altijd naar regels in iptables die het systeem uitleggen wat er wel en niet door mag naar het interne netwerk. Met het nieuwe systeem maken we gebruik van shorewall (wat voor de oud-sysoppers bekend zou moeten zijn, omdat deze ook op de oude server max gebruikt werd).

Reverse Webproxy

Naast dat het besturingssysteem een probleem begon te worden, waren er ook al langer problemen met enkele van de programma’s die we gebruikten op de router. Een van de belangrijke programma’s op de router is een zogenaamde ‘Reverse Webproxy’, dit is te vergelijken met een webserver die webpagina’s beschikbaar maakt. Hierbij worden de webpagina’s echter niet op de router gemaakt, maar wordt het werk uitbesteed naar andere webservers. Dit heeft als voordeel dat er gebruik gemaakt kan worden van veel verschillende webservers die allemaal hun eigen afgezonderde taak hebben. Bij OpenBSD hadden we voor de Reverse Webproxy een programma genaamd squid. Squid is speciaal ontwikkeld voor gebruik als proxy en heeft als extra optie de mogelijkheid tot reverse proxy. Deze heeft nagenoeg altijd zijn functie goed gedaan, maar door de grote en ingewikkelde configuratie die we gebruikten werd het steeds ingewikkelder om aanpassingen aan de configuratie te doen. Aanpassingen zijn nodig als er een nieuwe website of feature toegevoegd moest worden. Daarnaast begon de beveiliging ook een steeds groter probleem te worden. Hierdoor zijn we voor het nieuwe systeem overgegaan op Nginx, dit is een volwaardige webserver die zeer geschikt is voor gebruik als reverse webproxy. De configuratie heeft ook voordelen, doordat iedere site in zijn eigen bestand opgeslagen kan worden.

15 april 2015

Binnen sysop hadden we besloten dat het tijd werd om het router-migratie-project, wat al langere tijd nagenoeg klaar was, tot een einde te brengen. De router stond al langere tijd klaar om operationeel te gaan, en de voorganger te vervangen. 15 april was het dan eindelijk zo ver en zou de router overgezet worden. Echter zoals vele projecten gaat er wel eens wat mis. Naast de grote hoeveelheid testen die we hebben gedraaid waren er toch nog enkele grote problemen toen we daadwerkelijk het systeem gingen overzetten. Enkele cruciale functies van de firewall werkten niet naar behoren terwijl die tijdens het testen wel werkten. Daardoor is op het laatste moment besloten om alle wijzigingen terug te draaien en de problemen op een later tijdstip op te lossen.

The day after

Een dag later zijn er testen gedaan met een andere manier van firewall configureren. Deze werkte naar behoren waarop besloten werd om nogmaals (vanaf thuis) de router over te zetten. Naast dat dit vanaf thuis een riskante bezigheid is, je zit namelijk van buiten het netwerk het netwerk aan te passen, verliep de overzetting zeer goed. Er waren nog enkele problemen die binnen zeer korte tijd op te lossen waren. Daardoor draait nu het A-Eskwadraat netwerk met de nieuwe router-configuratie en zijn de voordelen zeer duidelijk zichtbaar. Een van de belangrijkere voordelen zijn de betere https-veiligheid (zie bug #5577) en de integratie met de andere sysop-systemen.

*update Technische uitleg te vinden op de A-Eskwadraat wiki