Tvåfaktorsautentisering vid SSH-inloggning
Med hjälp av en PAM-modul går det att aktivera tvåfaktorsautentisering i Linux med exempelvis Google Authenticator-appen. Linuxsystemet kräver då både användarens lösenord samt ett engångslösenord. Det går även att kombinera en SSH-nyckel med ett engångslösenord.
Bild: Gerd Altmann
Att kräva tvåfaktorsautentisering vid lösenordsinloggning över SSH höjer säkerheten ett snäpp. Angriparen måste då ha tillgång till både användarens lösenord och dennes enhet som genererar engångslösenorden.
I denna artikel kommer vi endast att aktivera tvåfaktorsautentisering när inloggningen sker över SSH. Om man vill går det däremot att aktivera vid all form av inloggning i Linux, från konsolinloggningen till upplåsningen av skärmsläckaren.
Stegen i denna artikeln är endast testade på Ubuntu 22.04.
Börja med att installera PAM-modulen för Google Authenticator:
$> sudo apt install -y libpam-google-authenticator
Trots namnet går modulen att använda även med andra 2FA-appar, exempelvis Authy eller 1Password.
När modulen är installerad behöver vi lägga in den i PAM-kedjan för SSH.
Öppna /etc/pam.d/sshd
. På den femte raden, raden under @include
common-auth
lägger vi in följande rad:
auth required pam_google_authenticator.so nullok
De översta raderna i min /etc/pam.d/sshd
ser därför ut som följande:
# PAM configuration for the Secure Shell service
# Standard Un*x authentication.
@include common-auth
auth required pam_google_authenticator.so nullok
# Disallow non-root logins when /etc/nologin exists.
account required pam_nologin.so
Argumentet nullok
till PAM-modulen Google Authenticator betyder att det är
okej att släppa in användare som inte har aktiverat sin
tvåfaktorsautentisering ännu.
Nu kan vi aktivera tvåfaktorsautentisering för den egna användaren. Detta kommer att köra en guide där vi kopierar en kod från terminalen till vår 2FA-app, alternativt skannar QR-koden som visas. Vi måste också svara på några frågor om hur vi vill att 2FA-inloggningen ska fungera:
$> google-authenticator
Do you want authentication tokens to be time-based (y/n) y
Warning: pasting the following URL into your browser exposes the OTP secret to Google:
[...]
Your new secret key is: YZGAATGZ5KWB7CC4HYG7R6BO4B
Enter code from app (-1 to skip): 1398439
Code confirmed
Your emergency scratch codes are:
41501547
58060132
24377953
41912180
67580287
Do you want me to update your "/home/jake/.google_authenticator" file? (y/n) y
Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y
By default, a new token is generated every 30 seconds by the mobile app.
In order to compensate for possible time-skew between the client and the server,
[...]
Do you want to do so? (y/n) n
If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting? (y/n) y
Därefter behöver vi aktivera något som heter Keyboard interactive i SSH-demonens konfiguration. Gör vi inte detta kommer ingen användare att kunna logga in!
I filen /etc/ssh/sshd_config
ändrar vi KbdInteractiveAuthentication
från
no
till yes
. Raden ska alltså se ut så här:
KbdInteractiveAuthentication yes
Därefter laddar vi om SSH-demonen så att den nya inställningen får effekt:
$> sudo systemctl reload ssh
Nu kan vi testa att logga ut och logga in igen (över SSH). Om du bara loggar in med lösenord i vanliga fall kommer du nu bli tillfrågad efter både lösenord och ett engångslösenord (benämnns Verification Code av modulen).
$> exit
localhost$> ssh jake@192.168.0.43
Password:
Verification code:
$>
Om du däremot loggar in med en SSH-nyckel kommer du loggas in direkt, utan att bli tillfrågad efter 2FA-koden.
Demonstration
Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.
Kommentarer
Kommentarsfältet är modererat. Det innebär att alla kommentarer granskas av ansvarig utgivare före publicering.
Du väljer själv om du vill ange ditt riktiga namn, en pseudonym eller vara helt anonym. Ingen registrering behövs.
Relaterade artiklar
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Var försiktig med att curl:a skript som root
Att installera program i Linux genom att omdirigera utdata från Curl till skalet är snabbt och smidigt. Men det är ack så farligt om du inte känner till programmet eller dess ursprung.
-
Vidarebefordran av SSH-agenten
SSH agent forwarding, eller vidarebefordran av SSH-agenten, innebär att man kan vidarebefordra SSH-agenten till ett fjärrsystem. På så sätt behöver man inte kopiera sin privata SSH-nyckel till fjärrsystemet, eller skapa flera nycklar för olika system. Men det finns risker med det.
-
Jenkins som ett alternativ till Ansible Tower
Ansible Tower kommer med en stor prislapp, speciellt för ett mindre företag eller en privatperson. AWX å andra sidan är helt fritt, men kräver numera Kubernetes. För den som vill automatisera sina Ansible Playbooks går det dock bra att använda Jenkins som en ersättning för Tower och AWX.
-
Hämta data från API:er med cURL och jq
Med cURL och jq går det att extrahera data från API:er direkt från kommandoraden. Jq är en JSON-tolkare och beskrivs av utvecklarna som sed och awk för JSON.
Senaste nyheterna och inläggen
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Sommarens skånska demopartyn
Årets sommar bjuder på två skånska demopartyn. Först ut är Reunion i Kvidinge den 28–30 juni. Därefter är det Pågadata i Örtofta den 9–11 augusti.
-
Riskerna med BankID som ingen pratar om
BankID är ett säkert och smidigt sätt att identifiera sig online. Men i takt med dess ökade popularitet och användning har det blivit en svag länk – en single point of failure – på mer än ett sätt.
-
Polisernas fängelsedomar står fast
Efter tre år är målet mot de två poliser som olovligen tog sig in i en berusad mans bostad i Landskrona och misshandlade honom klart. Högsta domstolen beslutade den sjätte mars att avvisa överklagan. Fängelsedomarna för poliserna står därmed fast.
Utvalda artiklar
-
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Datorparty i Landskrona
I helgen höll Syntax Society sitt årliga sommarparty. Platsen var en källarlokal i Landskrona där ett femtontal personer medverkade.
-
Det första Pågadata har ägt rum
I helgen ägde det första Pågadata rum – uppföljaren till Gubbdata. Platsen var Folkets Hus i Kvidinge. Organisatör av partyt var Johan “z-nexx” Osvaldsson med hjälp från Jesper “Skuggan” Klingvall. Partyt hade över 100 anmälda deltagare.
-
Även hovrätten fäller poliserna för att ha satt dit oskyldig
Hovrätten fastställer straffet för de två poliser som förra året dömdes till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och satt dit en oskyldig man. De båda poliserna ska även betala skadestånd till mannen.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
CyberInfo Sverige är ett it- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, säkerhet och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.