Om du arbetar fjärranslutet på Linux-servrar (eller containrar) kan du anta att det är intrinsikalt säkert. Tyvärr är detta en missuppfattning. Även om Secure Shell är mer säkert än äldre lösningar som Telnet, måste du fortfarande vidta extra åtgärder för att säkerställa säkerheten för dina system och data.

Som standard fungerar Secure Shell med användarnamn och lösenord. Så om du använder kommandot ssh [email protected] kommer du att bli ombedd att ange lösenordet för användaren ”ralph” på servern ”example.com”.

Det finns dock ett bättre sätt som är mindre sårbart för serverintrång. Det kallas SSH-nyckelautentisering.

SSH-nyckelautentisering fungerar med hjälp av ett nyckelpar som genereras på din lokala dator. Nyckelparet består av en privat nyckel och en offentlig nyckel. Den privata nyckeln förblir säker på din lokala dator, medan den offentliga nyckeln skickas till servern du vill få åtkomst till fjärranslutet. När nycklarna är konfigurerade, kontrolleras de varje gång du loggar in på servern för att se om de matchar. Om nycklarna matchar får du åtkomst till servern. Om nycklarna inte matchar har du otur.

Denna lösning är betydligt mer säker än den traditionella autentiseringen med användarnamn och lösenord och bör användas för alla Linux-servrar du använder.

Jag kommer att visa dig hur du implementerar SSH-nyckelautentisering.

Vad du kommer att behöva?

För att utföra denna demonstration behöver du minst två Linux-maskiner – en lokal och en fjärransluten. Eftersom allt görs via kommandoraden behöver du inte ställa in en grafisk miljö. Självklart behöver du IP-adressen eller domänen för den fjärranslutna servern, och den lokala maskinen måste kunna fjärråtkomma den fjärranslutna servern.

Generera ett SSH-nyckelpar

Det första du behöver göra är att generera ditt SSH-nyckelpar. Gör detta på din lokala dator. Logga in på datorn och skapa ett nyckelpar med hjälp av kommandot:

ssh-keygen

Du blir ombedd att ange var nyckeln ska sparas (standardplatsen är ~/.ssh) och du behöver ange och bekräfta ett lösenord för nyckelparet. Se till att du använder ett starkt/unikt lösenord.

Ovanstående kommando genererar två filer: id_rsa (den privata nyckeln) och id_rsa.pub (den offentliga nyckeln).

Kopiera nyckeln till den fjärranslutna maskinen

Nästa steg är att kopiera den offentliga nyckeln till den fjärranslutna maskinen. Som tur är har SSH en inbyggd funktion som gör detta till en enkel uppgift. För att kopiera nyckeln, kör helt enkelt följande kommando:

ssh-copy-id ANVÄNDARE@SERVER

Där ANVÄNDARE är ditt Linux-användarnamn och SERVER är IP-adressen eller domänen för den fjärranslutna servern. Du blir ombedd att ange SSH-lösenordet för den fjärranslutna användaren. Efter framgångsrik autentisering sparas den offentliga nyckeln i katalogen ~/.ssh på den fjärranslutna servern.

Du kan sedan testa SSH-nyckelautentisering genom att försöka logga in på den fjärranslutna maskinen igen med hjälp av kommandot:

ssh ANVÄNDARE@SERVER

Där ANVÄNDARE är användarnamnet och SERVER är IP-adressen eller domänen för den fjärranslutna servern. Den här gången blir du ombedd att ange lösenordet för SSH-nyckeln (inte ditt användarlösenord).

Grattis, SSH-nyckelautentisering fungerar!

Men vi kan ytterligare förbättra säkerheten.

Konfigurera SSH-servern för ökad säkerhet

Innan du fortsätter med detta steg, se till att du har skapat nyckelpar och kopierat den offentliga nyckeln till servern på alla klientdatorer som behöver åtkomst till den fjärranslutna servern. Om du inte gör detta kommer du att upptäcka att dessa maskiner inte kan logga in (även med korrekta användarkonton). Det enda sättet att komma runt detta problem skulle vara att manuellt kopiera innehållet i den offentliga SSH-nyckeln från klientmaskinen till filen ~/.ssh/authorized_keys på servern.

Vårt nästa steg är att aktivera autentisering med offentlig nyckel och inaktivera autentisering med lösenord (på den fjärranslutna servern).

Öppna SSH-daemonts konfigurationsfil (på den fjärranslutna servern) med kommandot:

sudo nano /etc/ssh/sshd_config

Hitta först raden:

# PubkeyAuthentication yes

Ändra den här raden till:

PubkeyAuthentication yes

Hitta sedan raden:

# PasswordAuthentication yes

Ändra den här raden till:

PasswordAuthentication no

Spara och stäng filen.

Starta om SSH med kommandot:

sudo systemctl restart sshd

Innan du avslutar den aktuella anslutningen, öppna ett nytt terminalfönster (på den dator där du kopierade den offentliga nyckeln till servern) och försök att logga in på SSH igen. Om du får åtkomst har du bevisat att det enda sättet att logga in via SSH är med nyckelautentisering.

Nu kommer alla försök att logga in på din Linux-server utan matchande nyckelpar att bli nekade.

FAQ

1. Vilka lösningar ger serverns säkerhet?
Lösningar för SSH-nyckelautentisering.

2. Hur fungerar SSH-nyckelautentisering?
SSH-nyckelautentisering är baserad på ett nyckelpar: privat och offentlig. Den privata nyckeln förblir på den lokala datorn och den offentliga nyckeln skickas till servern du vill få åtkomst till. Nycklarna autentiseras vid inloggningen för att kontrollera om de matchar.

3. Varför är SSH-nyckelautentisering säkrare än den traditionella autentiseringen med användarnamn och lösenord?
SSH-nyckelautentisering är säkrare eftersom den inte kräver att du anger ett lösenord vid inloggningen. Den privata nyckeln förblir på den lokala datorn, vilket gör det svårare för obehöriga att avlyssna.

4. Hur genererar man ett SSH-nyckelpar?
Du kan generera ett SSH-nyckelpar på den lokala datorn med hjälp av kommandot ”ssh-keygen”.

5. Hur kopierar jag den offentliga nyckeln till en fjärransluten maskin?
Du kan kopiera den offentliga nyckeln till en fjärransluten maskin med hjälp av kommandot ”ssh-copy-id ANVÄNDARE@SERVER”.

6. Hur konfigurerar jag SSH-servern för ökad säkerhet?
För att öka säkerheten för SSH-servern måste du aktivera autentisering med offentlig nyckel och inaktivera autentisering med lösenord i konfigurationsfilen för SSH-daemon.

7. Hur startar jag om SSH efter att ha gjort ändringar i konfigurationen?
Du kan starta om SSH med kommandot ”sudo systemctl restart sshd”.

Definitioner

Secure Shell (SSH) – en säker kommunikationsprotokoll för nätverksanslutningar. Den används ofta för fjärrinloggning på servrar.

Privat nyckel – en hemlig kryptografisk nyckel som förblir på den lokala datorn. Den används för att låsa upp krypterade data.

Offentlig nyckel – en kryptografisk nyckel som skickas till den server du vill få åtkomst till. Den används vid SSH-nyckelautentisering.

Autentisering – processen att verifiera användarens eller systemets identitet.

Konsol – en kommandoradgränssnitt som används för att interagera med ett datorsystem.

The source of the article is from the blog zaman.co.at