Kom igång med SSH

SSH är en förkortning av Secure Shell, och används för att via en krypterad anslutning komma åt en fjärrdator, vanligtvis en server för att kunna administriera den via terminalen.

I denna guiden kommer jag gå igenom några enkla steg hur man installerar, kommer igång och gör SSH säkert på din serverdator.

Guiden är baserad på wiki-inlägget Secure SSH, som jag själv använde mig av för något år sedan när jag hade min första server och skulle komma igång med SSH. Men jag ansåg att den kunde göras ännu mer nybörjarvänlig. :)

Installation

Det enda som behövs för att komma igång är paketet openssh-server på din server. Ubuntu har som standard en SSH-klient vid namn OpenSSH (openssh-client) installerad.

Installera paketet openssh-server på din server:

sudo aptitude install openssh-server

Komma igång

Nu är det bara att logga in på servern med kommandot:

ssh <användarnamn>@<IP-adress>

Inloggningsuppgifterna är kontot du har på servern. Svårare än så är det inte att komma igång med SSH, dock hänger hela säkerheten på hur starkt ditt lösenord är.

Gör SSH säkrare

Det finns några enkla säkerhetsåtgärder jag rekomenderar att man vidtar för att göra SSH säkrare, stegen jag kommer gå igenom är:

  • Använda certifikat
  • Byta ut standardporten
  • Neka åtkomst för användaren root
  • Ändra tiden man har på sig att logga in
  • Inaktivera möjligheten att kunna använda det lokala kontot för att logga in
  • Använda Fail2ban

Använda certifikat

För certifikatet använder vi oss av en RSA-nyckel, vilket innebär att man måste ha en nyckel som är godkänd av servern för att kunna logga in på servern.

Börja med att skapa en RSA-nyckel på din arbetsdator (En nyckel på 1024 bitar ska vara tillräckligt, men jag rekomenderar en nyckel på 4096 bitar för att vara lite extra säker):

ssh-keygen -t rsa -b 4096

Det är en god idé att skapa nyckeln på arbetsdatorn eftersom att nyckeln blir säkrare på en arbetsdator som är välanvänd, eftersom mus- och hårddiskanvändande spelar in i hur stark nyckeln blir. Detta har att göra med slump på den datorn man skapar nyckeln på. På Wikipedia finns en intressant artikel vid namn Pseudoslumptalsgenerator som är den typ av slumpgenerator datorer använder.

Du kommer bli tillfrågad vart du vill spara din nyckel, om du inte har några nycklar sedan tidigare duger standardmappen bra, vilket du bekräftar med tangenten <Enter>. Nästa val är att välja lösenord för din nyckel, välj ett starkt lösenord, blanda gärna stora och små bokstäver, siffror och tecken för att vara extra säker.

Kopiera innehållet från filen id_rsa.pub som finns i din arbetsdator till filen authorized_keys som finns på din server. Om du inte har någon nyckel sparad i filen authorized_keys sedan tidgare, kan du kopiera hela filen till servern och samtidigt ge den rätt namn, för detta använder vi programmet SCP, vilket använder SSH.

Börja med att skapa mappen .ssh på din server:

mkdir .ssh

Kopiera sedan filen med SCP till din server:

scp -p .ssh/id_rsa.pub <användarnamn>@<IP-adress>:.ssh/authorized_keys

Var noga med att det bara är din användare som har rättigheter att läsa filen id_rsa.pub på din arbetsdator och filen authorized_keys på din server. Är du osäker kan du sätta rätt rättigheter med dessa kommandon:

Klienten:

chmod 600 id_rsa.pub

Servern:

chmod 600 authorized_keys

Byta ut standardporten

Att byta ut standardporten är en enkel och bra åtgärd för att försvåra åtkomsten för obehöriga användare.

Börja med att öppna filen /etc/ssh/sshd_config på din server:

sudo nano /etc/ssh/sshd_config

Leta reda på raden:

Port 22

Och ändra värdet till en annan ledig port, gärna en port ovan 10000.

Neka åtkomst för användaren root

Att inte tillåta användaren root använda SSH är en annan enkel säkerhetsåtgärd som jag rekomenderar.

Leta reda på raden:

PermitRootLogin yes

Och ändra värdet yes till no.

Ändra tiden man har på sig att logga in

Att ändra tiden man har på sig att logga in kan vara en god idé, detta är helt valfritt. Som standard har man 120 sekunder på sig att logga in.

För att ändra värdet för detta är det följande rad du ska ändra:

LoginGraceTime 120

Inaktivera möjligheten att kunna använda det lokala kontot för att logga in

Detta är en åtgärd jag starkt rekomenderar att man ordnar. Om du inaktiverar möjligheten att kunna använda det lokala kontot på servern för att kunna ansluta måste man ha ett certifikat för att kunna komma åt servern via SSH.

Leta reda på raden:

PasswordAuthentication yes

Och ändra värdet yes till no.

Kontrollera även så att följande rader i konfigurationsfilen stämmer:

Protocol 2
UsePrivilegeSeparation yes
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes

Spara och stäng filen med tangentbordskombinationen <Ctrl> + <X>, följt av <y> för att bekräfta åtgärden.

För att ändringarna ska börja gälla på servern behöver vi starta om tjänsten:

sudo /etc/init.d/ssh restart

Använd Fail2ban

Fail2ban är en tjänst som går igenom loggarna på din server och bannar IP-adresser som har angett fel lösenord 3 gånger i rad. Den uppdaterar brandväggen och blockerar IP-adresserna via den vägen. Fail2ban är även ett smidigt program om du har Apache, vsftp etc.

För att installera fail2ban använder du dig av kommandot:

sudo aptitude install fail2ban

Som standard blockeras IP-adressen i 600 sekunder efter 3 felaktiga försök. Eftersom standardvärdet på 600 sekunder bara håller fel folk bort en kort stund rekomenderar jag att du ändrat värdet så att blockeringen blir permanent.

Öppna konfigurationsfilen med kommandot:

sudo nano /etc/fail2ban/jail.conf

Leta reda på detta stycket som finns i början av filen:

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1
bantime  = 600
maxretry = 3

Ändra värdet för bantime till 0, vilket gör avstäningen permanent.

Spara och stäng filen med tangentbordskombinationen <Ctrl> + <X>, följt av <y> för att bekräfta åtgärden.

Nu är det bara att logga in på din server med kommandot:

ssh <användarnamn>@<IP-adress> -p <Port>

Du kommer nu bli tillfrågad om att låsa upp den privata RSA-nyckeln som du tidigare skapade.

Väl inloggad via SSH ser det ut så här:

Lycka till!

Dela med dig

RSS Twitter Epost Facebook Delicious Pusha Epost

Liknande Inlägg

16 Kommentarer

  1. Real_Hund skriver:

    Problemet med scp -p .ssh/id_rsa.pub @:.ssh/authorized_keys för att lägga till en nyckel i authorized_keys-filen är att man skriver över hela authorized_keys? Det ställer ju till problem om man redan har nycklar från en annan dator i authorized_keys-filen. Hur gör jag för att lägga till en nyckel sist i filen utan att gå omvägen om att ladda upp nyckeln och sedan med cat lägga till en rad sist i authorized_keys?

  2. Real_Hund skriver:

    Och varför har du -p innan .ssh/id_rsa…? Har det med min förra fråga att göra?

  3. Hund skriver:

    Yepp. Om man redan har en nyckel sedan tidigare kan man ju alltid klistra in innehållet själv.

    Saxat från man:

    -p Preserves modification times, access times, and modes from the original file.

  4. Magnus Hedman skriver:

    Ssh kan även komprimera trafik och öppna krypterade tcp-tunnlar till servern så att man exempelvis kan nå tjänster hos servern bundna till localhost, från sin egen maskin. En riktigt bra finess med detta är X11 forwarding: ssh -X user@host xterm, så exekveras xterm på servern med fönstret på den lokala datorn.

    I stället för att använda XDMCP för fjärrinloggning har jag provat följande (i en terminal på den lokala datorn):

    Xephyr :1 &
    DISPLAY=:1 ssh -X user@host gnome-session

    Sedan är jag inloggad på fjärrdatorn med en komplett Gnome-session i ett fönster på min dator.

  5. David skriver:

    ”Äntligen!”
    – Gert Fylking

  6. gusse skriver:

    Man kan med fördel använda ssh-copy-id för att kopiera nyckeln från klienten till severn.
    Om man inte använder standardporten 22 så kan man konfigurera klienten med /etc/ssh/ssh_config så att rätt port används automatiskt.

  7. Hund skriver:

    @gusse: Intressant, ska kika på det. :)

  8. Maths skriver:

    Jag tyckte det var lite märkligt att ssh-copy-id inte funkade på någon annan port än 22. Men om jag förstår /etc/ssh/ssh_config rätt, så kan man även använda ~/.ssh/config för det där. Men det har inte funkat för mig, tyvärr.

    @Hund
    Bra initiativ! Jag tror inte att jag har sett någon så här utförlig gör-så-här-sida om SSH på svenska.

  9. Hund skriver:

    @Maths: Kul att du gillade den. :)

  10. Magnus Hedman skriver:

    Ytterligare värt att nämna är ~/.ssh/config där man kan göra inställningar för specifika hoster:

    (~ $) cat ~/.ssh/config
    Host kth.se
    User ***
    HostName my.nada.kth.se
    (~ $)

    Så ’ssh kth.se’ är kort för ’ssh -l *** my.nada.kth.se’.

  11. bamse skriver:

    Bra guide Hund !

  12. Hund skriver:

    @bamse: Tack. :)

  13. rigg skriver:

    Tänkte bara hälsa att jag kastade mitt utkast till en SSH-post och länkade till din i stället!

  14. Hund skriver:

    @rigg: Kul att det uppskattas. :)

  15. Little John skriver:

    Den tackar jag för, Johan !

    LJ

  16. Hund skriver:

    @Little John: Nemas problemas. :D

Lämna en kommentar



http://www.lathund.nu/wp-content/plugins/tango-smilies/tango/face-smile.png 
http://www.lathund.nu/wp-content/plugins/tango-smilies/tango/face-raspberry.png 
http://www.lathund.nu/wp-content/plugins/tango-smilies/tango/face-smile-big.png 
http://www.lathund.nu/wp-content/plugins/tango-smilies/tango/face-wink.png 
http://www.lathund.nu/wp-content/plugins/tango-smilies/tango/face-angel.png 
http://www.lathund.nu/wp-content/plugins/tango-smilies/tango/face-sad.png 
http://www.lathund.nu/wp-content/plugins/tango-smilies/tango/face-cool.png 
more...
 
Tidigare inlägg
«
Nyare inlägg
»