Tofaktorautentisering på Samfundet

Samfundet støtter tofaktorautentisering (2FA) på en del tjenester, for økt sikkerhet. Foreløpig er det frivillig, men håpet er å etter hvert kunne kreve det for alle kontoer som har 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. 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 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.)

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

Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2022-12-17 16:25 | Revisjon: 4 (historie, blame) | Totalt: 1820 kB | Rediger