15.2. Introductie

Beveiliging is een taak die begint en eindigt bij de systeembeheerder. Hoewel alle BSD UNIX® meergebruikerssystemen enige inherente beveiliging kennen, is het bouwen en onderhouden van additionele beveiligingsmechanismen om de gebruikers “eerlijk” te houden waarschijnlijk een van de zwaarste taken voor de systeembeheerder. Machines zijn zo veilig als ze gemaakt worden en beveiligingsoverwegingen staan altijd op gespannen voet met de wens om gebruiksvriendelijkheid. UNIX systemen zijn in het algemeen in staat tot het tegelijkertijd uitvoeren van een enorm aantal processen en veel van die processen acteren als server - daarmee wordt bedoeld dat externe entiteiten er verbindingen mee kunnen maken en ertegen kunnen praten. Nu de minicomputers en mainframes van gisteren de desktops van vandaag zijn en computers onderdeel zijn van netwerken en internetwerken, wordt beveiliging nog belangrijker.

Systeembeveiliging heeft ook te maken met het omgaan met verschillende vormen van aanvallen, zoals een poging om een systeem te crashen of op een andere manier onstabiel te maken, zonder te proberen de root account aan te vallen (“break root”). Aandachtspunten voor beveiliging kunnen opgesplitst worden in categorieën:

  1. Ontzeggen van dienst aanvallen (“Denial of Service”).

  2. Gebruikersaccounts compromitteren.

  3. root compromitteren via toegankelijke servers.

  4. root compromitteren via gebruikersaccounts.

  5. Achterdeur creëren (“Backdoor”).

Een ontzegging van dienst (DoS) aanval is een techniek die de machine middelen ontneemt. In het algemeen zijn DoS aanvallen brute kracht mechanismen die proberen de machine te crashen of op een andere manier onbruikbaar te maken door de machine of de netwerkcode te overvragen. Sommige DoS aanvallen proberen misbruik te maken van bugs in de netwerkcode om een machine met een enkel pakket te crashen. Zoiets kan alleen gerepareerd worden door een aanpassing aan de kernel te maken. Aanvallen op servers kunnen vaak hersteld worden door op de juiste wijze opties in stellen om de belasting van servers te limiteren in ongunstige omstandigheden. Omgaan met brute kracht aanvallen is lastiger. Zo is een aanval met gefingeerde pakketten (“spoofed-packet”) vrijwel niet te stoppen, behalve dan door het systeem van Internet los te koppelen. Misschien gaat de machine er niet door plat, maar het kan wel een volledige Internetverbinding verzadigen.

Een gecompromitteerde gebruikersaccount komt nog veel vaker voor dan een DoS aanval. Veel systeembeheerders draaien nog steeds standaard telnetd, rlogind, rshd en ftpd servers op hun machines. Deze servers communiceren standaard niet over beveiligde verbindingen. Het resultaat is dat als er een redelijk grote gebruikersgroep is, er altijd wel van een of meer van de gebruikers die van afstand op dat systeem aanmelden (wat toch de meest normale en makkelijke manier is om op een systeem aan te melden) het wachtwoord is afgeluisterd (“sniffed”). Een oplettende systeembeheerder analyseert zijn logboekbestanden om te zoeken naar verdachte bronadressen, zelfs als het om succesvolle aanmeldpogingen gaat.

Uitgangspunt moet altijd zijn dat als een aanvaller toegang heeft tot een gebruikersaccount, de aanvaller de root account kan compromitteren. In werkelijkheid is het wel zo dat voor een systeem dat goed beveiligd is en goed wordt onderhouden, toegang tot een gebruikersaccount niet automatisch betekent dat de aanvaller ook root privileges kan krijgen. Het is van belang dit onderscheid te maken, omdat een aanvaller zonder toegang tot root in het algemeen zijn sporen niet kan wissen en op z'n best wat kan rommelen met bestanden van de gebruiker of de machine kan crashen. Gecompromitteerde gebruikersaccounts zijn vrij normaal omdat gebruikers normaliter niet de voorzorgsmaatregelen nemen die systeembeheerders nemen.

Systeembeheerders moeten onthouden dat er in potentie heel veel manieren zijn om toegang tot root te krijgen. Een aanvaller zou het root wachtwoord kunnen kennen, een bug kunnen ontdekken in een dienst die onder root draait en daar via een netwerkverbinding op in kunnen breken of een aanvaller zou een probleem kennen met een suid-root programma dat de aanvaller in staat stelt root te worden als hij eenmaal toegang heeft tot een gebruikersaccount. Als een aanvaller een manier heeft gevonden om root te worden op een machine, dan hoeft hij misschien geen achterdeur (“backdoor”) te installeren. Veel bekende manieren die zijn gevonden om root te worden, en weer zijn afgesloten, vereisen veel werk van de aanvaller om zijn rommel achter zich op te ruimen, dus de meeste aanvallers installeren een achterdeur. Een achterdeur biedt de aanvaller een manier om makkelijk opnieuw root toegang tot het systeem te krijgen, maar dit geeft de slimme systeembeheerder ook een makkelijke manier om de inbraak te ontdekken. Het onmogelijk maken een achterdeur te installeren zou best wel eens nadelig kunnen zijn voor beveiliging, omdat hiermee nog niet het gat gedicht is waardoor er in eerste instantie is ingebroken.

Beveiligingsmaatregelen moeten altijd geïmplementeerd worden in een meerlagenmodel en worden als volgt gecategoriseerd:

  1. Beveiligen van root en medewerkersaccounts.

  2. Beveiligen van root – servers onder root en suid-/sgid-binaire bestanden.

  3. Beveiligen van gebruikersaccounts.

  4. Beveiligen van het wachtwoordbestand.

  5. Beveiligen van de kern van de kernel, ruwe apparaten en bestandssystemen.

  6. Snel detecteren van ongeoorloofde wijzigingen aan het systeem.

  7. Paranoia.

In het volgende onderdeel van dit hoofdstuk gaan we dieper in op de bovenstaande punten.