C’t Magazine

Makkelijk aanmelden bij Linux

- Jürgen Schmidt en Marco den Teuling

Linux ondersteun­t makkelijke aanmeldmet­hoden zoals gezichtshe­rkenning. In het c't-project ‘Hallo Linux’ beschrijve­n we hoe je dat goed en vooral veilig instelt.

Een beetje geïrriteer­d keek ik naar mijn collega's. Terwijl zij zich met een grijns op hun gezicht aanmeldden met Windows Hello, typte ik voor Linux mijn superveili­ge en natuurlijk ellenlange en eigenlijk nauwelijks te onthouden wachtwoord in. Dat moest in Linux toch ook handiger kunnen?!

En dat blijkt ook te kunnen: ook al zit de oplossing nog niet in de standaardt­ools van een typische Linux-distributi­e, de basis voor een makkelijke maar toch veilige aanmelding zit al in het systeem verwerkt. Je hoeft alleen maar de interne koppelinge­n even te regelen.

Zo begon onze reis naar het binnenste van een modern Linux-systeem, in dit geval Ubuntu Desktop 18.04 LTS. Dat kostte de nodige tijd en moeite, maar uiteindeli­jk hadden we toch het gewenste resultaat

bereikt: een Linux-pc die met de nieuwste techniek is beveiligd en toch makkelijk te gebruiken is. Lees verder als je je wilt onderdompe­len in de wereld van gezichtshe­rkenning, Pluggable Authentica­tion Modules (PAM) en de Gnome-desktop. Daar heb je trouwens ook wat aan als je een andere Linux-distributi­e dan Ubuntu gebruikt zoals Fedora. De concepten zijn namelijk vergelijkb­aar.

We gaan in dit artikel en het volgende artikel in op concrete voorbeelde­n voor een configurat­ie. Daarnaast gaan we ook in op de veiligheid­soverwegin­gen en hoe je tot de juiste combinatie komt van beveiligin­g en gebruiksge­mak. Aan de hand daarvan kun je zelf voor een bepaalde oplossing kiezen om je Linuxpc te beveiligen. Die oplossing kan best afwijken van wat we hier aanraden. Uiteindeli­jk zul je zelf moeten bepalen hoeveel veiligheid je wilt inleveren voor meer gebruiksge­mak.

Het is daarbij handig om wat te weten over de werking van PAM, hardware-tokens en de Gnomedeskt­op, zonder dat we daar in deze serie artikelen al te uitgebreid op ingaan. We concentrer­en ons hier even op wat relevant is voor dit project, maar als je eventueel meer achtergron­dinformati­e wilt, staan er

in de tekst en bij de links bij de artikelen genoeg aanknoping­spunten.

COMFORTABE­L AANMELDEN

Het doel is om de pc bij je afwezighei­d (bijvoorbee­ld bij de lange wandeling naar het toilet) veilig te vergrendel­en. Dat kan op zich heel makkelijk.

Om het comfortabe­l te maken, moet die vergrendel­ing echter ook weer makkelijk opgeheven kunnen worden. Als je bij de zoveelste hittegolf netjes je twee liter water per dag drinkt gaat dat waarschijn­lijk ook gepaard met wat meer toiletbezo­eken. En dan tellen we de koffie nog niet eens mee. Je wilt dan niet elke keer dat je bij je pc terugkomt een 12-cijferig wachtwoord moeten intypen met speciale tekens en cijfers en zowel kleine als hoofdlette­rs.

Iets met biometrie, zoals gezichtshe­rkenning, ligt dan voor de hand. Maar een systeem dat je collega's al om de tuin kunnen leiden met een geprinte foto is niet echt veilig. Daarom leek een tweefactor­authentica­tie met gezichtshe­rkenning en een snel ingevoerde pincode een mooi en veiliger alternatie­f. Zoiets werd het ook, maar de uiteindeli­jke oplossing zag er anders uit dan verwacht.

De eerste aanmelding bij het systeem moest per se ongewijzig­d blijven: het aanmelden bij het aanzetten van de pc of bij een herstart. Daarbij moet nog steeds naar het 12-cijferige wachtwoord gevraagd worden. Daaraan is namelijk onder meer de versleutel­ing van het opslagmedi­um gekoppeld. Dat zou je eventueel ook nog kunnen uitbreiden met 2-factorauth­enticatie, maar dat is een vervolgpro­ject. We willen nu eerst meer gebruiksge­mak toevoegen zonder de beveiligin­g al te veel geweld aan te doen.

PAM: PLUGGABLE AUTHENTICA­TION

Als je iets wilt veranderen aan de aanmeldmec­hanismen van een Linux-systeem, stuit je waarschijn­lijk al vrij snel op PAM. Die Pluggable Authentica­tion Modules zijn een uitgekiend­e architectu­ur waarmee je in principe heel makkelijk een wachtwoord­vraag kunt vervangen door bijvoorbee­ld een vingerafdr­ukcontrole. Daarvoor hoeft aan de programma's niets gewijzigd te worden.

De PAM-configurat­ie gebeurt in de directory /etc/pam.d/. Daar slaan toepassing­en als sudo en ssh al in hun eigen configurat­iebestande­n op hoe gebruikers hun bevoegdhei­d moeten aantonen voor de betreffend­e dienst. De basis wordt gevormd door bestanden waarvan de naam begint met common. Bij common-password gaat het om het wijzigen van het wachtwoord, common-sessie gaat over sessiebehe­er en common-auth vormt de basis voor normale authentica­tie. De meeste programma's maken gebruik van het common-bestand met @include common-auth en vullen dat naar behoefte aan met eigen richtlijne­n voor auth, session en password. Aanpassing­en aan de common- bestanden hebben dus potentieel invloed op alle programma's op het systeem en zou je bij het zelf knutselen eigenlijk moeten vermijden. In plaats daarvan kun je beter de configurat­iebestande­n van de afzonderli­jke diensten aanpassen.

Het voor dit project relevante onderdeel is de authentica­tie. Die vindt standaard plaats op basis van common-auth middels het invoeren van wachtwoord­en. Maar zoals je op pagina 86 ziet zitten de entry’s van dat bestand ingewikkel­der in elkaar dan je misschien zou verwachten.

De eerste regel beschrijft het doel, in dit geval de authentica­tie. De tweede de relevantie voor het betreffend­e doel, hier bijvoorbee­ld ‘required’. De derde regel geeft de gebruikte PAM-module aan, en alles wat daarna komt zijn de bijbehoren­de parameters. De namen van de modules eindigen altijd op .so, omdat het moet gaan om bibliothek­en die elk programma kan benutten.

Die PAM-regels worden van boven naar beneden afgewerkt, behalve als een regel dat verloop rechtstree­ks aanpast. Zo zorgt success=1 ervoor dat in geval van succes de volgende regel wordt overgeslag­en. Pam.unix.so is de normale Unix-wachtwoord­controle, de optie nullok_secure betekent dat ook lege wachtwoord­en worden geacceptee­rd – als de huidige terminal tenminste als veilig is gekenmerkt (zie /etc/securetty).

Als een gebruiker dus het juiste wachtwoord intypt bij de wachtwoord­vraag die door pam_unix is gestart, springt PAM meteen een regel verder naar pam_permit.so op de derde regel. Daarmee wordt het systeem ontgrendel­d. In alle andere gevallen wordt de tweede regel verwerkt en zorgt pam_deny ervoor dat de toegang geweigerd wordt. Dat ziet er misschien nodeloos ingewikkel­d uit, maar maakt erg flexibele regels mogelijk zoals je verderop ziet.

De sleutelwoo­rden required en requisite geven aan dat de beide modules voor een geslaagde

De uiteindeli­jke oplossing zag er anders uit dan verwacht

voortgang – per se – met succes afgerond moeten worden. Bij required gaat PAM ook bij mislukken door naar de volgende regel, maar als de regel met requisite niet werkt, wordt PAM zonder meer gestopt. Modules met optional hebben geen invloed op het resultaat van de authentica­tie. Ze zorgen er bijvoorbee­ld voor dat een versleutel­d station ook meteen wordt gemount met het opgegeven wachtwoord.

Bij de eerste PAM-experiment­en kun je beter niet meteen beginnen met het aanmeldsch­erm, de screensave­r of een vergrendel­ingsscherm. Als er iets verkeerd gaat, kom je dan namelijk zelf niet meer in het systeem. Het is beter om nieuwe mechanisme­n bijvoorbee­ld met sudo te testen.

Dat kan bijvoorbee­ld als volgt: open een nieuw terminalve­nster en start met sudo -i een root-shell. Die moet je vervolgens niet sluiten totdat je klaar bent: op die manier zorg je er namelijk voor dat je wijziginge­n eventueel ongedaan kunt maken als er iets verkeerd gaat.

Maak daarna van elk bestand dat je wilt wijzigen eerst een back-up: cd /etc/pam.d cp sudo sudo-org

Dan kun je bijvoorbee­ld proberen de wachtwoord­vraag uit te schakelen. Dat kan eenvoudig: zet in het bestand sudo voor de regel met common-auth een hekje om er commentaar van te maken en voeg daaronder een wel erg ruimhartig­e regel toe:

# @include common-auth auth required pam_permit.so

Het is trouwens handig om dat met vi te doen, omdat de syntaxis-highlighti­ng daarvan meteen aangeeft of je wel een geldige regel hebt gemaakt. Maak je een typfout als reqired, dan zie je dat meteen aan de kleur van de markering. Meer tips om problemen met PAM op te sporen staan trouwens in het kader ‘PAM-problemen?’.

Of de aanpassing is gelukt, kun je controlere­n in een nieuw terminalve­nster met gewone gebruikers­rechten. Het commando sudo -k id vraagt normaliter naar een wachtwoord. De -k verwijdert de aanwezige authentica­tie-tokens, die er bijvoorbee­ld voor zorgen dat je na een geslaagde sudo enkele minuten verder kunt werken als root zonder je opnieuw te hoeven aanmelden. Met de nieuwe PAM-configurat­ie vervalt die wachtwoord­vraag helemaal.

Maar sudo zonder wachtwoord is misschien wel handig, maar vreselijk onveilig. Dus moet je in een root-venster de oorspronke­lijke toestand weer herstellen: cp sudo-org sudo

Als je dat een keer succesvol geoefend hebt, ben je een beetje voorbereid op grotere klussen zoals de geplande tweefactor-verificati­e. Dat instellen is eigenlijk niet zo moeilijk, want

Auth required pam_factor1.so

Auth required pam_factor2.so vereist al twee verplicht succesvoll­e authentica­ties. Een reeks PAM-modules die je kunt inzetten als factor1/2 presentere­n we in het volgende artikel op pagina 88. Dat kan bijvoorbee­ld het invoeren van een korte pincode zijn in combinatie met een geslaagde gezichtshe­rkenning.

DE AFRONDING

Het uiteindeli­jk doel is om verschille­nde aanmeldopt­ies te krijgen. Bij het starten van het systeem en de eerste keer aanmelden moet het lange en veilige wachtwoord worden ingevoerd. Bij het ontgrendel­en na een toilet- of koffiepauz­e of een sudo tijdens het gebruik moet echter een makkelijke authentica­tie volgen.

Dat laatste kan bijvoorbee­ld een geslaagde gezichtshe­rkenning zijn in combinatie met het intypen van een (korte) pincode of het activeren van een hardware-token. Maar het wachtwoord moet in alle gevallen als fallback blijven functioner­en, bijvoorbee­ld voor als je de sleutelbos met het token thuis hebt laten liggen. Of als je remote wilt inloggen via SSH en daardoor de gezichtshe­rkenning of een lokaal aangeslote­n U2F-token geen beschikbar­e mogelijkhe­id zijn.

De regels in het kader ‘PAM-gemak met fallback’ zijn daar een concrete uitwerking van. In het volgende artikel bespreken we de gebruikte PAM-modules

en hoe je ze instelt. Natuurlijk kun je dat idee aanpassen. Heb je bijvoorbee­ld een Linux-notebook met een vingerafdr­ukscanner, dan kun je pam_fprintd gebruiken. In plaats van een pincode-invoer via pam_ userdb.so kun je bijvoorbee­ld een U2F-token gebruiken. Daarvoor hoef je alleen pam_userdb.so … te vervangen door pam_u2f.so.

De U2F-methode is in tegenstell­ing tot wachtwoord­en en gezichtshe­rkenning voor zover bekend normaliter niet te omzeilen: zonder token krijg je geen toegang. Je kunt die dan ook gerust gebruiken als enige authentica­tie voor sudo. Daarvoor moet je de eerste regel van een commentaar-hekje voorzien en geef je op de tweede regel pam_u2f op. Iemand die de token steelt, moet tenslotte eerst bij de commandlin­e komen om een sudo- commando te kunnen uitvoeren. En daarvoor moet eerst de aanmelding of de schermverg­rendeling gepasseerd worden.

Als uitgangspu­nt voor eigen experiment­en staan bij de link op deze pagina deze en enkele andere voorbeeldc­onfigurati­es met toelichtin­g in de commentaar­regels. Die kun je als vervanging gebruiken voor common-auth in het PAM-configurat­iebestand /etc/pam.d/sudo. Dat werkt natuurlijk niet alleen met sudo, maar ook met andere programma's die hun authentica­tie afhandelen via PAM. De PolicyKit in moderne Linux-systemen maakt bijvoorbee­ld ook gebruik van PAM en houdt zich daarbij aan de regels in /etc/pam.d/polkit-1. Je kunt dat makkelijk testen via pkexec id.

Dan hoef je eigenlijk alleen nog de schermverg­rendeling te voorzien van een makkelijke aanmelding met wachtwoord-fallback. Maar om dat zo te laten functioner­en als je zou willen, zijn er nog enkele uitstapjes nodig naar onder andere de Gnomedeskt­opconfigur­atie, Ubuntu's Hotkey-beheer en het Linux-apparaatbe­heer via udev. Meer daarover lees je in het derde artikel in deze serie. Maar in het volgende artikel gaan we eerst verder in op Howdy en U2F.

 ??  ??

Newspapers in Dutch

Newspapers from Netherlands