Hem > Guider, Linux > Guide: Installera och säkra SSH-server

Guide: Installera och säkra SSH-server

För de som använder Linux- och/eller Unix-baserat operativsystem och som använder terminalen vet de flesta om att SSH är guld värt när det kommer till att styra system på distans. Ett terminal-liv utan SSH skulle nog inte vara det samma, speciellt om man satt på en osäker Telnet anslutning eller VNC på en internetanslutning men en hastighet som kan matcha ett gammalt telefonmodemen.

För er som fram tills nu inte har en aning om vad jag pratar om men som är intresserad av vad SSH är för något och vad det används till kan läsa min uppsats om introduktion till SSH som jag skrev för en kurs på Tekniska Högskolan i Jönköping. Den är i PDF, och råkar du inte veta vad PDF är och/eller hur man installerar en PDF-läsare är mitt tips är att söka på Wikipedia respektive googla på det. :smile:

Att installera en SSH-server är som bekant mycket enkelt, allt man behöver göra är att skriva följande kommando i Ubuntu eller andra Debian-baserade system:

sudo apt-get install openssh-server

Eller om man man råkar sitta på Red Hat eller Fedora:

yum install openssh-server

Sitter man på Mac kan man aktivera ssh-servern genom att gå in under Systeminställningar -> Delning och bocka i ”Fjärrinlogging”.

Även om en standardinstallation redan från början är rätt säker finns det utrymme för att göra den ännu säkrare. Att lägga 30 minuter på att säkra upp serven ytterligare är enligt min mening värt, eftersom att om man lyckas komma in i datorn via SSH så är man rätt körd. Speciellt om man kommer i på root-kontot. :twisted: Men efter mina enkla tips, kan jag lova att chansen att få sin dator kapad via SSH minskar betydligt jämnfört med en server med fler säkerhetshål än en schweizerost. :grin:

Innan du börjar…

Var försiktig med vad för inställningar du ställer in på din SSH-server. I värsta fall kan du stänga ute dig själv från serven, men så länge som du kan komma åt och ändra SSH-konfigurationen och har möjlighet att starta om SSH-serven på något annat sätt än via SSH ska detta inte vara några problem.

Nedan kommer jag att referera till ”konfigurationsfilen” eller ”ssh-konfigurationen”, med det menar jag att öppna filen /etc/ssh/sshd_config. Lättast att göra detta är med hjälp av följande kommando:

sudo nano /etc/ssh/sshd_config

Något annat som är viktigt är att oavsett om man följer denna guide i sin helhet eller delar, är det viktigt att efter du har gjort dina inställningar att du startar om SSH-serven. Detta är för att nya inställningar börjar inte gälla först när SSH-serven har startas om. Smidigaste sättet att starta om SSH-serven är med följande kommando:

sudo service ssh restart

Att starta om hela serven/datorn är också ett alternativ.

Tips 1 – Byt ut standardporten

Att ändra från standardporten (TCP port 22) till en annan valfri icke-reserverad port gör att man slipper majoriteten av de robotar på Internet som letar efter de mindre säkra SSH-servrarna.

Öppna konfigurationsfilen och ändra

# What ports, IPs and protocols we listen for

#Port 22

Till exempelvis

# What ports, IPs and protocols we listen for

Port 2222

Att komma på ett eget portnummer istället för portnummer 2222 ökar säkerheten ett snäpp. När du gör detta, tänk också på att eventuell brandväg också behöver justeras så att den lyssnar på din valda port istället för port 22.

Tips 2 – Tillåt ej root-inloggingar

Med koppling till första tipset. Robotarna som söker av Internet efter SSH-servrar brukar attackera servarna genom att prova sig fram till inloggningsuppgifter som fungerar. I vanliga fall gissar man både användarman och lösenord, men detta är en metod som är både långsam och ineffektiv. Det robotarna istället gör är att ge sig på Root-kontot som både gör det betydligt enklare att hitta inloggningsuppgifter till (behöver ”bara” gissa sig fram till lösenordet) samt garanterat får full kontroll över systemet om lösenordet knäcks.

För att täppa till detta problem finns det en enkel lösning, det är helt enkelt att inte tillåta root-inloggingar. Börja med att leta följande i konfigurationsfilen:

PermitRootLogin yes

Och ändra det till:

PermitRootLogin no

För den som brukar logga in på root-kontot via SSH kommer det i fortsättningen inte att fungera. Istället uppmanas att logga in på en vanlig användares konto och sedan köra följande kommando:

su -

Efter man har fyllt i lösenordet för Root är det nu bara att tuta och köra.

Tips 3 – Begränsa behörigheten

Är det verkligen nödvändigt att alla användare på en server ska ha tillgång till SSH? Ibland skapas det konton på en server som bara till för att köra ett visst program (t.ex. Teamspeak). Är det då rimligt att den ska ha tillgång till SSH? Tror knappast det. Därför kan det vara bra att begränsa vilka användare som får använda sig av SSH alternativt vilka som inte får använda SSH. Att åstadkomma detta är rätt lätt, då man kan styra detta via ssh-konfigurationen.

Leta bara upp efter följande:

#AllowUsers

Och ändra det till:

AllowUsers

Om du inte hittar denna inställning lägger du istället in ”AllowUsers” på en ny rad längst ned i filen.

Vad AllowUsers gör är, som namnet antyder, enbart tillåter de användare som är definierade av denna inställning. Alla andra användare betraktas som obehöriga och kan därmed överhuvudtaget inte logga in via SSH. Varje användare som läggs in avskiljes med ett mellanrum. I slutändan ska det se ut ungefär så här:

AllowUsers user1 user2 user3

Det finns även en syskon-inställning vid namn DenyUsers, som ser och fungerar precis som AllowUsers, med undantaget att den istället förbjuder de användare som är angivna från att komma åt SSH. Alla andra användare betraktas som behöriga och kan utan hinder logga in via SSH.

Tips 4 – Använd nycklar och glöm lösenorden

En av funktionerna som jag verkligen uppskattar med SSH är så kallade SSH-nycklar, även kallad för SSH-keys och Public-Key Authentication. Tanken med SSH-nyckar är att man ska slippa skriva lösenord varje gång man vill logga in på en eller flera datorer med en SSH-server. Detta är ohört smidigt eftersom att om man administrerar exempelvis 100 datorer som var och en har ett unikt lösenord, är det betydligt smidigare bara lägga in sin nyckel i varje dator och sedan kunna logga in hur många gånger man vill genom att enbart uppge ett användarnamn än att komma ihåg 100 olika lösenord. Detta gör betydligt smidigare för automatiska script, eftersom att de inte kan (utan mycket besvär) koppla upp sig mot en dator med SSH med hjälp av ett lösenord. Detta eftersom att de inte kan följa uppmaning om att ange ett lösenord som dessutom måste skrivas i klartext. Som grädde på moset blir användandet av SSH-nycklar betydligt säkrare än hantering av lösenord, eftersom att en attackerade dator måste lista ut en nyckel som bygger på RSA- eller DSA-krypto som är kända för att vara mycket svåra att knäcka. Kort och gott, en SSH-nyckel är både säkrare och i längden smidigare än att ange ett lösenord.

Denna bild är tagen av ntr23 på Flickr.

Denna bild är tagen av ntr23 på Flickr.

Vad är då som är mindre bra med SSH-nycklar? En nackdel med SSH-nyckel är att den inte är bunden till en viss person utan till en viss dator eller användarkonto på datorn. Har du två datorer som man använder för att jobba mot serven måste man generera en nyckel för varje dator, i detta fall två nycklar, som alla ska läggas in i serven. Skaffar man en ny dator måste denna process upprepas för att det ska fungera. Vill man exempelvis logga in från en tillfällig dator är det rätt omständligt att generera och lägga in SSH-nyckel än att bara logga in med ett användarnamn och ett lösenord.

Men en fördel med SSH är att du kan använda både av SSH-nyckel och ett lösenord. Min rekommendation är att man aktiverar så att man kan använda sig av SSH-nyckel och ser till att det fungerar på de datorer som man använder mest. När det gäller lösenordet så gör gärna ett extra starkt lösenord som du eventuellt skriver ned på ett papper som du har med dig och därmed kan logga in på din server. Man vet aldrig när man behöver utföra något akut på sin server och enda datorn som är att tillgå är sin kompis laptop. Men är man beredd att offra denna möjlighet är det möjligt att enbart kunna logga in med SSH-nycklar.

Innan vi börjar generera nycklar på arbetsdatorn ska vi se till konfigurationen på serverdatorn. För att man ska kunna koppla upp dig mot serven med SSH-nyckel krävs följande inställningar i konfigurationsfilen:

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

När du har kontrollerat att det är rätt inställningar är det sedan dags att generera SSH-nycklar på arbetsdatorn. Eftersom att denna guide är inriktad mot Linux-plattformen för både arbetsdator och server kommer jag enbart ta upp hur man genererar nycklar på en Linux-burk. Men råkar du ha Windows på din arbetsdator finns Putty att tillgå som gör uppkopplingarna smidiga. Vill man använda sig av SSH-nycklar och generera dessa på en Windowsdator kan läsa denna guide.

Att skapa SSH-nycklar i linux är mycket enkelt, allt man behöver göra är att skriva följande i en terminal på din arbetsdator:

ssh-keygen -t rsa -b 4048 -C 'En valfri kommentar'

När denna har körts så skapas det två filer i ~/.ssh/ katalogen:

  1. id_rsa.pub
  2. id_rsa

Varje fil innehåller varsin nyckel. id_rsa.pub är den publika nyckeln och det är den som ska läggas in på de enheter som du vi koppla upp mot med din SSH-nyckel.

id_rsa är den privata nyckeln som aldrig får lämnas ut under några omständigheter. Kommer denna nyckel på villovägar kan vem som helst med denna nyckel logga in på de datorer som har den publika nyckel som du har kopplat till den. Hela säkerhetstänkandet med SSH-nycklar är att id_rsa hålls hemlig. Låt den dock ligga i kvar .ssh-mappen och gör inga förändringar i övrigt men den filen.

Sista steget för att få SSH-nyckeln att fungera är att överföra publiken nyckeln till den eller de servrar och datorer (med SSH-server mjukvaran installerad) som är tänkt att kunna loggas in utan lösenord. Smidigaste sättet är att köra följande kommando:

cat ~/.ssh/id_rsa.pub | ssh ip-nummer-eller-adress-till-server -l användarnamn -p 22 "cd ~/; mkdir .ssh; chown -R användarnamn:användarnamn .ssh; chmod 700 .ssh; cat >> .ssh/authorized_keys; chmod 600 .ssh/authorized_keys"

Tycker man att denna kommando är svår att komma ihåg finns det en funktion vid namn ssh-copy-id, problemet med detta kommando är att det inte säkert att den finns på alla system och dels att den inte har inbyggt stöd för att sälla in ett annat portnummer än port 22.

Vill man så kan man förstås manuellt kopiera innehållet i id_rsa.pub och klistra in det längst ned i filen authorized_keys på serven. Kan dock garantera att det tar betydligt längre tid än att köra kommandot ovan. ;-)

Slutord

Lycka till med installation och konfiguration av SSH-servrarna. Vill du några frågor eller funderingar besvarar jag gärna på dessa genom att du lägger kommentar till detta inlägg nedan. Feedback uppskattas och du kan lämnade antingen via min kontakt-sida eller som en kommentar nedan.

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