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:
- SSH-nøkkel med FIDO2 (security key).
- Passord pluss TOTP (Google Authenticator eller lignende).
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å.
- Last ned "yubikey manager" og sett opp fido2 med passord.
- Last ned nyeste versjon av ssh (det må være 4.9, siden det er det eneste som støtter fido2. Jeg må bruke powershell for å ssh til cass siden det er der ssh-oppdateringen kommer.
- Gjøre det som står i howto'en over. Du må nok kopiere public-keyen manuelt.
- Flytte både public og private keyen i .ssh mappa hvis de ikke ligger der fra før av.
- Oppdatere config-filen i .ssh slik at pathen er riktig, et eksempel er som følger:
Host cassarossa.samfundet.no HostName cassarossa.samfundet.no User tkvg IdentityFile C:UsersThea.ssh"key-navn"
- Kan hende du må oppdatere tilgangene til nøklene, for meg så var de for åpne. Det hjalp for meg å fjerne at alle hadde tilgang til fila. Hvordan man fjerner tilgang avhenger av hva du bruker for å ssh'e. Da skal det i teorien funke, men kan hende jeg har glemt et steg elns. så gjerne oppdater denne hvis dere finner ut av noe nytt.
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.
Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2023-10-20 15:43 | Revisjon: 12 (historie, blame) | Totalt: 1905 kB | Rediger