Servrar/Secure ssh
Från Ubuntu Sverige
Innehåll |
[redigera] Gör SSH mer säkert
Det finns några steg man bör ta, efter att man har installerat SSH på sitt system. En kedja är inte starkare än den svagaste länken och gällande SSH är ett svagt lösenord till t.ex. root, ett allvarligt hot.
Det vi skall göra är att byta från port 22 till valfri. Se mer utförlig förklaring till varför, längre ned i artikeln. Skapa ett certifikat samt, stänga av möjligheten att logga in utan certifikat. Vi skall även kontrollera så att root inte får logga in, då det är mycket bättre att använda sudo när administratörsrättigheter behövs.
[redigera] Förberedelser
[redigera] Skapa nyckel
Vi väljer att använda en RSA-nyckel på t.ex. 4096 bitar. Öppna ett terminalfönster och skriv in följande: ssh-keygen -t rsa -b 4096. 1024 sägs vara tillräckligt säkert, men man kan aldrig vara för säker ;-)
rancor@rancor-laptop:~$ ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair.
Du får sedan upp en fråga var du vill spara din nyckel. Har du redan nycklar i id_dsa bör du ange ett annat namn, för filen skrivs över annars. Är du nöjd med förslaget tycker du bara retur
Enter file in which to save the key (/home/rancor/.ssh/id_rsa):
Sedan skall du ange lösenord. Tänk på att blanda stora och små bokstäver samt lägga in tecken och siffror. Gärna en liten mening som hjälper dig att komma ihåg lösenordet utantill.
Enter passphrase (empty for no passphrase): M1tt H3ml1g@ löSe40rD Enter same passphrase again: M1tt H3ml1g@ löSe40rD Your identification has been saved in /home/rancor/.ssh/id_rsa. Your public key has been saved in /home/rancor/.ssh/id_rsa.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:x:xx:xx:xx:xx:xx:xx rancor@rancor-laptop
[redigera] Installera den publika nyckeln i systemet
Den publika nyckeln skall läggas i ~/.ssh/authorized_keys och det kan finnas fler nycklar än en. Se till att göra radmatning mellan nycklarna.
Om nyckeln skall installeras på samma system kopierar du helt enkelt id_dsa.pub till authorized_keys.
rancor@rancor-laptop:~$ cd ~/.ssh rancor@rancor-laptop:~/.ssh$ cp id_rsa.pub authorized_keys
Skulle det vara en extern maskin kan du använda scp för att kopiera nyckeln, tänk då på att du inte skriver över authorized_keys om det skulle finnas existerande nycklar i filen. För att kopiera (skriva över befintlig fil) gör du följande
rancor@rancor-laptop:~/.ssh$ scp -p ~/.ssh/authorized_keys 192.168.0.1:.ssh/ rancor@192.168.0.1’s password: <lösenord> authorized_keys 100% 1839 1.2MB/s 00:00
Se även till att ~/.ssh/autorized_keys och ~/.ssh/id_rsa endast har gällande användares rättigheter. Vid problem använd chmod 600 <filnamn> för att åtgärda.
[redigera] Konfigurera sshd
Nästa steg är att kontrollera inställningarna för sshd. Filen vi skall modifiera heter /etc/ssh/sshd_config
Börja med att skapa en säkerhetskopia av sshd_config
rancor@rancor-laptop:/$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup Password: <lösenord>
Sedan använder vi lämplig editor för att modifiera sshd_config
rancor@rancor-laptop:/$ sudo vi /etc/ssh/sshd_config
Följande rader skall ändras:
Port 22
LoginGraceTime 120
PermitRootLogin yes
Nya värden skall vara:
Port 10022
Välj annan port än 22, dock högre än 10000 för det finns mängder med standardportar som man lätt kan hamna på av misstag som kan skapa problem längre fram. Det innebär heller ingen direkt ökad säkerhet att ändra port, men man slipper de flesta "script-kiddies"attacker och "maskar", när man flyttar sig från standardportar. Detta gäller samtliga tjänster och inte bara ssh.
LoginGraceTime 30
LoginGraceTime är antalet sekunder innan man blir utkastad om man inte lyckas med inloggningen. Det är en smaksak men 120 sekunder behöver man normalt sett inte på sig. Sänk den med fördel. Dock bör du hinna ange ditt lösenord innan tiden går ut.
PermitRootLogin no
Root behöver inte kunna logga in via ssh. Du kan använda sudo istället vilket är mycket säkrare.
Vi skall även lägga till en så att man förhindrar möjligheten att logga in med hjälp av användarnamn och lösenord vilket betyder att man tvingas använda certifikat. Lägg till:
PasswordAuthentication no
Kontrollera även så att följande rader stämmer:
Protocol 2 UsePrivilegeSeparation yes StrictModes yes RSAAuthentication yes PubkeyAuthentication yes
Spara och avsluta.
Nu skall vi bara starta om sshd så att de nya inställningarna börjar gälla.
rancor@rancor-laptop:~/.ssh$ sudo /etc/init.d/ssh restart Password: * Restarting OpenBSD Secure Shell server... [ OK ]
Testa att logga in i systemet. Glöm inte av att du har bytt port. Du måste även ange användarnamn om du inte har samma användarnamn på fjärrdatorn som den lokalt inloggande användare. Detta gör du genom att skriva användarnamn@server.ip
rancor@rancor-laptop:/$ ssh rancor@localhost -p 10022 Enter passphrase for key '/home/rancor/.ssh/id_dsa': INNE! :)
