Hem > Linux, Mac > 5 skäl till sudo istället för su

5 skäl till sudo istället för su

Med anledning av Xkcd:s senaste strip tänkte jag ta upp ett problem kring med att *nix-administratörer använder root-kontot, för att utföra något som kräver rättigheter från en administratör. Innan jag går djupare in på vad jag menar ber jag dig att titta denna Xkcd-strip.

He sees you when you're sleeping, he knows when you're awake, he's copied on /var/spool/mail/root, so be good for goodness' sake.

Bildkälla: http://xkcd.com/838/

Även om poängen i stripen är en annan pekar den ändå ett problem som är tyvärr rätt vanligt bland Linux och Unix administratörer. Varför det är en dålig idé att använda su istället för sudo är av bland annat följande anledningar: (Tryck på läs mer)

1. Om konto root finns är man 50% hackad

Att göra en lyckad brute-force-attack mot en *nix-maskin är näst intill omöjligt. Speciellt inte när man varken känner till användarnamn eller lösenord för något konto på serven. Skulle man mot förmodan komma in på ett konto är det inte säkert att den har de rättigheter som behövs för att kunna ställa till med något på maskinen. Däremot om man har ett root-konto är hackern redan halvvägs inne, detta eftersom att man då ”bara” behöver lista ut lösenordet. Inte nog att hackern är halvvägs inne i datorn, när den förr eller senare knäcker lösenordet får angriparen full tillgång till hela systemet.

Genom att helt förlita sig på sudo, då skapas inte root-kontot och låter ett vanligt användarkonto med annat användarnamn än admin eller root få administrativa rättigheter. Hackern har då en stort sätt en omöjlig uppgift att ta sig in på ett konto, då man ytterst osannolikt kan hitta rätt inlogginsuppgifter.

2. Lätt att glömma, lätt att hacka

När man loggar in på ett root-kontot med sudo su får du inte bara fulla rättigheter, man får vara inloggad på root-kontot så länge som man behagar. Det finns med andra ord ingen tidsgräns för hur länge man får vara inloggad på kontot även om man är inaktiv. Detta kan innebära att råkar man gå ifrån datorn allt för länge och man är inloggad på root-kontot kan någon annan sätta sig framför tangentbordet och gör det man nu vill göra på datorn obehindrat.

Sudo däremot har som standard en tidsgräns på 5 minuter. Använder man inte sudo under denna tid kan man inte använda sudo om man inte skriver sitt lösenord. Skulle någon ta din plats framför datorn efter 5 minuter kan skadan begränsas till vad för rättigheter kontot har utan sudo.

3. Den mänskliga faktorn existerar

Lite koppling till punkt 2. Så länge som människor är inblandade är det omöjligt att räkna bort den mänskliga faktorn. Råkar man vara inloggad på root-kontot samtidigt som man ska installera ett program inte inte alls behöver administrationsrättigheter kan det leda till en rad med säkerhetsproblem. Ett exempel är om någon utnyttjar ett säkerhetshål i mjukvaran som leder till att användaren kommer in i systemet. Om programmet har administratörs-rättigheter kommer nog även den som utnyttjar säkerhetshålet också få rättigheterna.

Sudo förhindrar att man installerar mjukvara eller andra åtgärder med administratörs-rättigheter av misstag. Dels för att man har 5-minuters gräsen och dels att när man ska använda sudo efter 5 minuter måste man fylla i sitt lösenord. När man fyller i sitt lösenord för att bekräfta får man en chans att avbryta innan man kör kommandot. Notera dock att sudo inte förhindrar obehöriga utnyttja säkerhetshålen i en mjukvara som har administratörs-rättigheter. Vill man skydda sig mot säkerhetshål är att se till att man uppdaterar mjukvaran till den senaste stabila versionen.

4. Vill någon annan leka admin? Lösenordet måste då delas

Att ha en root-konto, om man glömmer övriga punkter för en stund, för en användare fungerar utan större problem säkerhetsmässigt. Men om det är någon annan som ska börja administrera serven så sätter man sig i en knepig situation. En av de viktigaste reglerna inom hur man skaffar sig ett säkert lösenord är att aldrig låta någon veta ditt lösenord. Enda att dela ansvaret för administration på en server med root-konto är att helt enkelt dela med sig av lösenordet. Med andra ord uppstår moment 22. Om man ändå väljer dela med sig av ett lösenord till andra tillkommer ytterligare problem. Om lösenordet skulle komma på villovägar eller om en av administratörerna missbrukar root-kontot, vad gör man då? Enda lösningen är att helt enkelt byta ut och skicka ut nya lösenord.

Sudo löser det genom att varje användare tillhör gruppen administratörer. Är man medlem i gruppen har man också rätt till att använda sudo-kommandot. Är det en användare som inte bör ha administratörs rättigheter så lyfter man ur denna person från gruppen. Skulle lösenordet komma på villovägar kan man låsa kontot tills dess användaren har bytt lösenord. Inga mer delande av lösenord, då man helt enkelt skapar ett användarkonto för personen som i sin tur kan sätta sitt egna personliga lösenord.

5. Handlingar av användare loggas ej

Su spara inte historik över vad användaren gör på maskinen. Skulle någon göra något tokigt går det inte spåra varken när eller vem som har gjort det. Även om  man fixar så att det loggas vet man inte vem som har gjort vad, då alla delar på ett och samma konto. Sudo har inbyggd funktion för att logga kommandon körs genom sudo, och eftersom att varje användare har varit konto är det lätt att spåra vem som har gjort vad.

Sammanfattning

Su ska enbart användas för att kunna logga in på ett konto som inte är root. Måste man göra något med administrationsrättigheter, använd då sudo och inget annat. Visst, det är mer bekvämt att enbart att köra su. Men för att undvika att man gör detta, då kan man tänka att när man fyllt i sitt lösenord för root så kommer följande meddelande upp:

[användarnman] is using sudo su
This incident will be reported

Alla vet numera var denna rapport skickas…

  1. Inga kommentarer än.
  1. Inga trackbacks än.