Tofaktorautentisering på Samfundet

Samfundet støtter tofaktorautentisering (2FA) på en del tjenester, for økt sikkerhet. Det er krav å ha 2FA på alle kontoer med (full) sudo-tilgang.

Hvorfor 2FA?

Passord er kjent som en problematisk autentiseringsmekanisme alene. Passord er for enkle å gjette, blir ofte gjenbrukt mellom steder (fordi det er kull umulig å huske 200 bra passord), og kan mistes (for eksempel ved keylogging eller phishing) uten at du merker det. Derfor er det ønskelig å innføre en andre autentiseringsfaktor som ikke har disse egenskapene. I stor grad bruker man to forskjellige faktorer, f.eks. passord (noe du vet) pluss en kryptografisk nøkkel (noe du eier), men vi har valgt å godkjenne en litt videre definisjon.

Hva slags 2FA?

Samfundet har valgt å legge seg på å kreve én av disse to metodene:

Førstnevnte er foretrukket alternativ, sistnevnte er mer ment som en backup da det er mer sårbart overfor f.eks. MITM-angrep, og mindre ergonomisk i bruk. Du kan argumentere med at førstnevnte bare er én faktor, men om du låser skjermen på laptopen du SSHer fra og krypterer disken, vil det lokale passordet ditt effektivt fungere som en første faktor. I alle tilfelle krever vi touch, altså at du tar på nøkkelen når du SSHer. Det gjør at selv om noen har fått root på (men ikke fysisk tilgang til) maskinen din, kan de ikke enkelt bruke nøkkelen uten et forholdsvis aktivt angrep.

Hvor støtter vi 2FA?

Per i dag støtter vi 2FA på SSH til cassarossa, cirkus, kolje, altersex og domino. Håpet er å få utvidet dette til samtlige maskiner, og også på webtjenester (HTTP)–men da må nok bli kvitt Basic Auth. AD er vanskelig å få på 2FA så lenge Samba ikke støtter det.

Google Workspace har også 2FA-støtte, og det er obligatorisk for alle superadmins. Denne artikkelen snakker ikke om Workspaces implementasjon.

Hvordan slår jeg på 2FA?

Endelig stiller du de bra spørsmålene! Skriv skenroll på cassarossa og følg instruksjonene. Om du vil melde deg ut av 2FA, må du foreløpig gjøre det manuelt, ved å ta deg selv ut av gruppen must-use-security-key og slette TOTP-nøkkelen din.

For å lage en SSH-nøkkel du kan bruke, sett inn en Yubikey eller lignende og gjør:

$ ssh-keygen -t ed25519-sk

Nøkkelen kopieres til .ssh/authorized_keys på cassarossa som vanlig, enten med å paste .pub-fila over, eller ved å kjøre

$ ssh-copy-id -i .ssh/id_ed25519_sk.pub brukernanvn@login.samfundet.no

Vi ønsker ikke at folk bruker Yubikeys' «discoverable keys», der nøkkelen kan flyttes til en annen maskin uten videre. (Noen nøkler krever ecdsa-sk i stedet for ed25519-sk, som også er lov å bruke.)

Om du har annet brukernavn på din lokale maskin, blir det minst gnukk om du legger inn litt SSH-config:

 $ vim ~/.ssh/config 
Host cassa
     HostName login.samfundet.no
     User brukernavn

Hvis du skal bruke windows og yubikey

Jeg, tkvg, har windows, så dette er min taktikk for å fikse dette. Det kan hende det finnes andre, bedre, måter å gjøre det på.

Windows subsystem for Linux og yubikey

Se veilederen Using FIDO2 Keys with Windows Subsystem for Linux (WSL) on Windows

Intern implementasjon

Vi bruker pam_oath for å kreve TOTP (med en fil i /var/local/2fa/users.oath som har alle nøklene), og har en egen gruppe must-use-security-key som matches på i sshd_config for å slå av alle andre nøkkeltyper enn de som er FIDO2. skenroll lever i itkadduser-git-repositoryet, og består av to binærer (=skenroll_raw= er ment å kjøres fra sudo som upriviligert bruker, og legger inn nøkkelen din pluss deg selv i security-key-gruppa). Merk at dette betyr at om du kommer over en aktiv SSH-sesjon og kan passordet, kan du bytte ut 2FA-nøklene–men du kan ikke se dem, og ikke uten at det blir oppdaget neste gang noen prøver å logge seg inn. Men i de fleste tilfeller vil jo ITKere ha full sudo uansett, så det er litt irrelevant om du kan kjøre skenroll_raw eller ikke.

Lenker: Start, itkopptak

Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2023-10-20 15:43 | Revisjon: 12 (historie, blame) | Totalt: 1905 kB | Rediger