Simovits

Dubbelknäppt eller: Hur jag slutade ängslas och lärde mig att älska tvåfaktorsautentisering

I dagens blogg så tänkte jag prata om ett välkänt ämne. Från det går det att fråga varför det är värt att prata om det om det om de nu är så välkänt? Jo, dels för att det är välkänt av en anledning (det är en ganska bra sak) dels för att det i de sammanhanget som vi ska betrakta här är förvånansvärt enkelt att fixa. Så, låt oss prata om den gamla stapelvaran två-faktorautentisering, den här gången i sammanhanget Linux. För att jag eventuellt kanske möjligtvis potentiellt ska ha något att fortsätta med i framtiden så kör vi enbart en aspekt, och väljer dessutom den enklast. Även den längsta resen måste såklart börja med det första steget och det blir alltid lättare att komma igång om man börjar med något simpelt samt trevligt. Med det kollar vi på en metod för att ordna tvåfaktorsautentisering för inloggning och autentisering för en vanlig Linuxdistribution (Ubuntu).

Tvåfaktorsautentisering som standard i Linux: Lättare än vad du tror

Den enklaste metoden av tvåfaktorsautentisering i det här sammanhanget bygger på användandet av Google Authenticator och dess tillhörande PAM (Pluggable Authentication Module). Metoden innefattar följande steg:

  1. Installera libpam-google-authenticator (finns i standard repositorium på exempelvis Ubuntu)
  2. Installera Google Authenticator på din telefon.
  3. Kör google-authenticator för att konfigurera inställningarna (körs genom att ange kommandot med exakt samma namn i terminalen) genom att följ stegen som följer i programmet. Detta inkluderar sammankopplande mellan telefon och modulen genom skannade av en QR-kod.
  4. Aktivera autentiseringsmetoden i alla önskade autentiseringsmoduler. De sista svarar mot olika sätt som en användare kan tänkas autentisera sig, exempelvis via display manager eller TTY. Aktiveringen genomförs på det sättet att ”auth required pam_google_authenticator.so” infogas i konfigurationsfilen (för mig har det alltid fungerat att lägga till den sist i filerna). För att tvinga användandet av valideringskoden ifrån Google Authenticator för alla autentiseringssätt så ändrar jag filen ”/etc/pam.d/common-session” så att den två sista raderna blir:
 # end of pam-auth-update config
auth required pam_google_authenticator.so

Notera väl att jag här enbart här har ändrat/lagt till den sista raden. Raden ovan den är enbart för att illustrera vart i filen raden har lagts till (i slutet i de här fallet).

Så här kan det se ut när man måste ange verifieringskod vid inloggning på Ubuntu.

Med det så måste man alltid ange sin tidsbegränsade valideringskod ifrån Google Authenticator ihop med sitt lösenord. Observera att detta även gäller för körandet av ”sudo” vilket kan te sig lite busigt. Kombinera detta med en sudo timeout på 0 (dvs alltid kräva inskrivande av lösenordet för sudo oavsett hur lång tid det har gått) så har vi fått till en ganska bra säkerhetsförbättring, dessutom har vi antagligen skrämt iväg alla systemadministratörer men det är ett annat problem. Med enbart 4 steg så är det här nog den enklaste metoden för att fixa tvåfaktorsautentisering på Linux.

Måste jag ha tvåfaktorsautentisering på allt nu?

Ja.

…Okej det går att fixa så att kravet på verifieringskod enbart gäller för visa autentiseringsmetoder och situationer. På det sättet går det bland annat att undvika att behöva ange det när man kör ”sudo”. Tricket är att enbart välja just de pam moduler som önskas och sedan lägga till pam_google _authenticator som ”required”. För att inte uppmuntra för mycket till nedsatt säkerhet så avstår jag här ifrån att visa exakt hur det går till. Metodiken är dessutom så snarlik den ovan att det i regel är lätt att justera själv.

Och med det har vi fixat tvåfaktorsautentisering för inloggningar och autentisering. I en framtida blogg kanske jag kollar vidare och pratar om tvåfaktor gällande andra aspekter inom Linux (diskkryptering?).