Hur du Aktiverar Två Faktor för SSH-Inloggning

0
275
Shutterstock/TATSIANAMA

Om du verkligen vill låsa din cloud server, kan du aktivera två-faktor autentisering för SSH på samma sätt som du skulle lägga till den till ditt Gmail-konto, vilket hindrar någon från att få tillgång om de har stulit din SSH privata nyckeln.

Är Detta Verkligen Nödvändigt?

Jämfört med att ha två-faktor på e-post eller web-baserat-konto, två-faktor på SSH är inte så användbar. För något som e-post, den brister är oftast lösenord återställa system, lätt crackable lösenord, eller dataintrång. Verkligen, något inbegriper dåliga lösenord eller dålig hantering av lösenord.

För SSH, det är inte mycket av ett problem. SSH använder mycket bra kryptering för publika och privata nycklar som används för att göra-anslutningar. Om din SSH-server är låst och inte tillåta lösenord för tillgång, ingen är att få in om de inte har den fysiska enheten att nyckeln ligger på, och det är inte särskilt troligt att någon kommer att bruteforce din SSH-nyckel när som helst under detta århundrade. Så, i en mening, det är nästan som om du redan har två faktor, eftersom din nyckel kommer att finnas kvar på din bärbara dator.

Men, i vissa fransar fall, två faktor kan vara ett bra val. Om någon galning hacker bestämmer sig för att stjäla din bärbara dator med avsikt för nabbing din SSH-nycklar tillsammans med det (och inte bara sälja det på Craigslist när de inte kan knäcka ditt lösenord för enheten), med två faktor skulle sätta dig ett steg före.

En mer verkliga problemet är dock med SSH-agent vidarebefordran; Med agent vidarebefordran aktiverad, nyckeln begär att logga in ytterligare servrar för att få skickas tillbaka till din enhet. Detta gör att du kan köra SSH till en public server, och som public server—SSH igen i en annan privat server på samma nätverk, vilket ger dig tillgång på ungefär samma sätt som en VPN skulle fungera.

Problemet är dock att om den offentliga server äventyras, om du har agent vidarebefordran aktiverad kan en angripare kan agera som dig medan du är ansluten till offentliga server. Detta är en potentiell utökning av privilegier, beroende på hur du har konfigurerat ditt nätverk. Två-faktor SSH skulle lösa problemet.

Återigen, detta är en mycket kanten fall lösningen, och det kommer förmodligen att leda till mer problem än det förhindrar, men om du är allvarligt om att låsa ner allt, vi kommer att visa dig hur.

Hur du Aktiverar Två Faktor för SSH

För att hantera två faktor önskemål, kommer vi att använda Googles Pluggable Authentication Module (PAM), som arbetar med Authy och Google Authenticator. Installera den från din distribution har package manager:

sudo apt-get install för libpam-google authenticator

Kör sedan denna initiering kommando:

google authenticator

Svara ja på den första frågan om att ha authentication tokens vara tidsbaserad. Detta är säkrare. Din terminal kommer då att fyllas med en gigantisk QR-kod, och du kommer troligen att behöva zooma ut lite.

Öppna upp ditt authenticator, och skanna koden (inte bilden). Din app ska synkroniseras, och börja mata sex-siffriga koder som ändrar varje 30 sekunder.

Du kommer också vill göra en del av alla av ytterligare produktion, inklusive den hemliga nyckeln och akut scratch koder. Dessa används för att få tillgång igen för att din server om du är låst av någon anledning, men du bör varnas för att eventuella problem relaterade till felaktig konfiguration kan fortfarande lämna dig låst ut permanent. Vi ska vända på två faktor som tillval för att testa innan du gör det obligatoriskt.

För nästa frågor, svara på följande:

  • Svara ja för att uppdatera din config, annars kommer ingenting att fungera.
  • Svara ja för att underkänna flera användningsområden för varje token. De bör upphöra när de används.
  • Svarar du nej till att förlänga den giltiga koden för fönstret, som det egentligen inte finns någon anledning till det.
  • Svara ja om du vill tillåta hastighetsbegränsande, som kommer att blockera ut angriparna efter tre försök. Din sista tre koder som kommer att vara giltiga för en och en halv minut, så du behöver inte oroa dig för att låsa dig själv genom att vara alltför långsam.

Alla dina inställningar sparas till ~/.google authenticator. Du kan kopiera denna fil till en extra server för att tillämpa samma konfiguration som inte kör initiering tool igen, eller om du har för att länka två separata enheter.

Konfigurera SSH för att Arbeta med Google PAM

Öppna upp PAM-konfigurationsfil i /etc/pam.d/sshd i din favorit textredigerare och lägg till följande rad längst ner:

auth krävs pam_google_authenticator.så nullok

Den nullok direktivet innebär att det endast är tillfälligt, så två faktorn kommer att vara frivillig tills du ändrar det här. Lämna det på det här sättet för att testa. Du kommer också vill ha för att hitta den rad som innehåller @inkluderar gemensamma-auth, och kommentera detta med ett #:

# Standard Un*x-autentisering.
#@inkluderar gemensamma-auth

Detta stänger av lösenord-baserad autentisering, som du inte vill ha.

Nästa öppna upp SSH inställningarna i /etc/ssh/sshd_config. Hitta ChallengeResponseAuthentication alternativ, och slå på den:

# Ändra till ja för att aktivera challenge-response-lösenord (se upp med frågor
# vissa PAM-moduler och trådar)
ChallengeResponseAuthentication ja

Detta gör att 2FA, men SSH-nycklar åsidosätta 2FA som standard så du måste fixa det genom att lägga till följande rad i slutet av sshd_config:

AuthenticationMethods publickey,tangentbord interaktiva

Detta kräver en offentlig nyckel och “tangentbord-interaktiv,” vilket är den fråga som ber dig för din två-faktor-kod.

SSH är nu konfigurerad, så du kan starta om sshd för att slå på de nya inställningarna:

sudo systemctl starta om sshd.service

Detta kommer inte att stänga din anslutning, så att du bör göra något samband testning i en separat terminal-fliken. Öppna en ny flik, och försök att ansluta till din server. Du bör se en uppmaning att be för en verifieringskod. Ange i en från din telefon, och om allt som är kopplade på rätt sätt, bör det fungera. Om den inte gör det, du bör fortfarande kunna komma åt kontot genom att lämna det tomt.

Om allt fungerar väl, och du har kontrollerat att det inte finns några problem med att logga in, kan du ta bort “nullok” direktiv i /etc/pam.d/sshd att göra 2FA obligatorisk.

Om du förlorar åtkomst, kan du fortfarande logga in med hjälp av akut-koder ges till dig när du har konfigurerat PAM, och den hemliga nyckeln gör att du kan länka en TOTP app bör din bli avlänkas av någon anledning.

Lägg till Åtkomst för Service Konton

Om du har ett konto som behöver tillgång till din server (till exempel, rsync), måste du inaktivera 2FA för kontot. Det är ganska enkelt att göra, först ska vi göra en ny grupp om du vill lägga till konton till:

sudo groupadd service

Lägg sedan till de användare som grupp:

sudo adduser <username>
sudo usermod -a-G-service <användarnamn>

Nästa öppna upp PAM-konfiguration i /etc/pam.d/sshd, och lägga till följande rad:

auth [framgång=göras standard=ignorera] pam_succeed_if.så användaren ingroup service

Observera att detta inte tillåta åtkomst till din server utan 2FA, men om användaren inte root kan det inte vara en stor grej.