Het volgende waar we naar gaan kijken is de beveiliging van je systeem tegen aanvallen van lokale gebruikers. Zeiden we zojuist lokale gebruikers? Ja!
Toegang verkrijgen tot een lokaal gebruikersaccount is een van de eerste dingen die indringers op een systeem proberen op hun weg naar het misbruiken van het root account. Met een lakse lokale beveiliging kunnen ze hun normale gebruikerstoegang "upgraden" naar een roottoegang door gebruik te maken van een verscheidenheid aan bugs en minnetjes ingestelde lokale diensten. Als je ervoor zorgt dat je lokale beveiliging waterdicht is, zal de indringer nog een hindernis moeten nemen.
Lokale gebruikers kunnen ook een hoop schade aanrichten op je systeem, zelfs (juist) als ze inderdaad diegene zijn die ze zeggen dat ze zijn. Het verstrekken van accounts aan mensen die je niet kent of van wie je geen achtergrondinformatie hebt, is een erg slecht idee.
Je moet ervan overtuigd zijn dat je gebruikersaccounts verschaft met slechts de minimale vereisten voor de taak die ze moeten doen. Als je je zoon (10 jaar) een account verschaft, zul je wellicht willen dat hij alleen toegang heeft tot een tekstverwerker of tekenprogramma, maar geen gegevens kan verwijderen die niet van hem zijn.
Enkele goede vuistregels als je andere mensen rechtmatige toegang tot je Linux-machine toestaat:
Veel lokale gebruikersaccounts die gebruikt worden bij een aanval zijn in geen maanden of jaren meer gebruikt. Omdat niemand ze gebruikt, zorgen ze voor een ideaal aanvalsvoertuig.
Het meest gewilde account op je machine is het root (superuser) account. Dit account heeft zeggenschap over de gehele machine, wat ook zeggenschap kan inhouden over andere machines op het netwerk. Onthoud dat je het root account alleen moet gebruiken voor hele korte specifieke taken en dat het meestal uitgevoerd moet worden als een normale gebruiker. Zelfs kleine foutjes als je ingelogd bent als root kunnen problemen veroorzaken. Hoe korter je ingelogd bent met root privileges, hoe veiliger het is.
Enkele trucks om te voorkomen dat je je computer overhoop haalt als root:
"rm foo*.bar"
wilt doen, doe dan eerst "ls foo*.bar"
om zeker te weten dat je de bestanden verwijdert die je wilde
verwijderen. Het gebruik van echo
in plaats van destructieve
commando's werkt soms ook. zeker
weet
wat er als root gedaan moet worden. PATH
omgevingsvariabele) specificeert de
directory's waarin de shell zoekt naar programma's. Probeer het command path
voor de root gebruiker zoveel mogelijk te beperken en zet nooit
een .
(hetgeen betekent "de huidige directory") in je PATH. Zorg er
bovendien voor dat je nooit directory's met schrijfpermissie in je zoekpad
hebt, omdat dit aanvallers toestaat om bestaande binary's aan te passen of
nieuwe binary's aan je zoekpad toe te voegen, hetgeen hen toestaat als root te
opereren de volgende keer dat je dat commando uitvoert. .rhosts
bestand aan voor
root. /etc/securetty
bestand bevat een lijst met terminals
waarop root in kan loggen. Standaard (onder Red Hat Linux) is dit ingesteld
op alleen de lokale virtuele consoles (vty's). Wees erg voorzichtig met het
toevoegen van iets anders aan dit bestand. Je zou indirect op je normale
gebruikersaccount in moeten kunnen loggen en vervolgens su
als dat
nodig is (hopelijk via
ssh
of een ander
versleuteld kanaal), zodat er geen reden is waarom je direct als root in zou
moeten loggen. Als het absoluut noodzakelijk is om iemand (hopelijk erg vertrouwd)
roottoegang tot je machine toe te staan, zijn er een aantal tools
die kunnen helpen. sudo
staat gebruikers toe hun wachtwoord te
gebruiken om toegang te krijgen tot een beperkte set commando's als root.
Zodoende kun je, bijvoorbeeld, een gebruiker in staat stellen om verwijderbare
media uit te werpen en te mounten op je Linux box, maar verder geen andere
root privileges te hebben. sudo
houdt ook een log bij van alle
geslaagde en mislukte sudo pogingen, zodat je uit kunt zoeken wie welk
commando gebruikte om wat te doen. Om deze reden werkt sudo
zelfs
goed op plaatsen waar een aantal mensen root toegang hebben, omdat het je
helpt om aangebrachte wijzigingen bij te houden.
Hoewel sudo
gebruikt kan worden om bepaalde gebruikers bepaalde
privileges voor bepaalde taken te geven, heeft het een aantal tekortkomingen.
Het moet alleen gebruikt worden voor een beperkt takenpakket, zoals een
server opnieuw opstarten of nieuwe gebruikers toevoegen. Elk programma
waarbij het uitwijken naar een shell mogelijk is, zal root toegang
verschaffen aan een gebruiker die het aanroept via sudo
. Dit omvat de
meeste tekstverwerkers bijvoorbeeld. Ook een programma zo onschadelijk als
/bin/cat
kan worden gebruikt om bestanden te overschrijven, waarmee
het mogelijk zou kunnen worden om root te misbruiken. Beschouw sudo
als een middel voor het toekennen van verantwoordelijkheden en verwacht niet
dat het de root gebruiker kan vervangen en tevens veilig is.