SSH Authentificatie met een Yubikey

Door Dhr_Soulslayer op maandag 12 maart 2012 23:46 - Reacties (11)
Categorie: ICT, Views: 5.567

Nadat ik 2 dagen heb lopen stoeien heb ik het dan toch voor elkaar:
Inloggen op mijn ubuntu test machine via SSH terwijl de authentificatie loopt via een OTP(One Time Password) plus een lokaal password.
Het installeren van deze configuratie was achteraf gezien erg eenvoudig en daarom wil ik hem met jullie delen.

Mijn test virtual machine bestaat uit een kale Ubuntu 10.04 LTS installatie. Deze is geŘpdate via apt-get update & apt-get upgrade.
Daarna heb ik de ssh server ge´nstalleerd met het commando apt-get install openssh-server
Hiermee is de basis omgeving klaar en kunnen we beginnen met bouwen.

Als eerste de C Compileer omgeving installeren door apt-get install build-essential. Daarna de pakketten voor het gebruik van een Yubikey op Ubuntu:
apt-get install libpam0g-dev libykclient3 libykclient-dev

Vervolgens wordt de PAM module gedownload en ge´nstalleerd:
1. wget http://yubico-pam.googlecode.com/files/pam_yubico-2.4.tar.gz
2. tar xfz pam_yubico-2.4.tar.gz
3. cd pam_yubico-2.4
4. ./configure
5. make check install
6. ln -s /usr/local/lib/security/pam_yubico.so /lib/security

Als dit zonder fouten is verlopen gaan we verder met instellen van het debuggen.
Dit is een optionele stap maar is wel handig voor het testen.
1. touch /var/run/pam-debug.log
2. chmod go+w /var/run/pam-debug.log
3. tail -F /var/run/pam-debug.log &

Als volgende stap wordt het bestand aangemaakt waarin wordt bepaald welke gebruiker aan welke Yubikey wordt gekoppeld. Dit gebeurd via het commando nano /etc/yubikeyid
Binnen dat bestand wordt de koppeling als volgt genoteerd: username:yubikeyid(yubikey id is in dit geval de eerste 12 karakters van je OTP)

Open vervolgens het bestand /etc/pam.d/sshd, in dit bestand staat de PAM configuratie voor het inloggen via SSH. Voeg de volgende regel toe aan bovenaan het bestand: auth required pam_yubico.so authfile=/etc/yubikeyid id=YubikeyApiID debug . De Yubikey API ID kan je opvragen door bij https://upgrade.yubico.com/getapikey/ je email adres op te geven en een OTP.

Nu zijn we alweer bij de een na laatste stap. Op nu het bestand /etc/pam.d/common-auth. Zoek vervolgens de regel auth [succes=1 default=ignore] pam_unix.so nullok.secure en zet achter nullok.secure de tekst try_first_pass
De regel wordt dus:
auth [succes=1 default=ignore] pam_unix.so nullok.secure try_first_pass

Herstart nu de SSH deamon via het commando /etc/init.d/ssh restart
Als je daar inlogt via SSH wordt er gevraagd om je Username en je Wachtwoord.
Het wachtwoord bestaat uit je lokaal password met direct daar achteraan je OTP.
Username: test
Wachtwoord: welkomvvejvhlrtnubikdfvglevchgrlbclrrithvddudkrrft

Mocht je er niet uitkomen check altijd of je alles goed getypt/ingevult hebt. Mocht je er dan echt niet uitkomen kun je altijd kijken of Google het antwoord heeft. De forums van yubico willen soms ook nog wel eens het antwoord hebben. Kijk daarvoor even hier:http://forum.yubico.com/

Volgende: Mikrotik met Ziggo WifiSpots 08-'16 Mikrotik met Ziggo WifiSpots
Volgende: Installeren Bonesi 09-'11 Installeren Bonesi

Reacties


Door Tweakers user Joseph, dinsdag 13 maart 2012 00:22

Vergeet niet dat dit een extern propetairy product is, waarbij je ook nog een USB-Poort nodig hebt, die op veel publieke PC's niet aanwezig is. En dat wachtwoord kan met een keylogger nog geript worden, tenzij die one-time is. Dit lijkt me echter niet, en kan ik niet uit je post opmaken. (Note dat ik het hier over het lokale password heb!)

Ik heb thuis een eigen RADIUS server draaien, waar ik een echte OTP-Calculator bij heb. Ik kan dus ook op publieke PC's veilig inloggen, met alleen het toetsenbord en de muis die ik tot mijn beschikking heb.

Ik wil ook met smartcards gaan werken via diezelfde server, leuk als alternatieve sleutel voor het huis. Dit is inderdaad zeker interessante technologie.

Het is wel goed dat je dit duidelijk maakt voor mensen die er minder ervaring mee hebben, en die zullen deze raad hopelijk ook opvolgen. Dat komt de veiligheid op het internet alleen maar ten goede.

[Reactie gewijzigd op dinsdag 13 maart 2012 10:59]


Door Tweakers user JUDGExKTF, dinsdag 13 maart 2012 01:27

En dat wachtwoord kan met een keylogger nog geript worden, tenzij die one-time is. Dit lijkt me echter niet, en kan ik niet uit je post opmaken.
kuch:
authentificatie loopt via een OTP(One Time Password) plus een lokaal password.
Er valt dus niks te rippen. Met 1 Google opdracht had je dat ook kunnen vinden als het niet in het artikel gestaan had.
Vergeet niet dat dit een extern propetairy product is
Alle gebruikte software is opensource. Dat kan je ook zien in de blog post aan het feit dat de source voor de PAM gedownload word van Google Code. Wellicht dat je bedoelt dat de hardware niet opensource is ? Dat lijkt me nogal een stretch aangezien er bijvoorbeeld ook geen opensource hardware OTP calculator is (Een Android phone met opensource OTP calculator is geen opensource hardware).
Ik heb thuis een eigen RADIUS server draaien, waar ik een echte OTP-Calculator bij heb. Ik kan dus ook op publieke PC's veilig inloggen
Inloggen vanaf een publieke PC is nooit veilig. Als jij inloged via een publieke PC (via OTP, Password, Kerberos, X.509 of whatever) die 'vijandig' is en iemand neemt de controle over die PC over (via bijvoorbeeld een trojan die erop staat) nadat jij ingelogd bent vanaf die PC ga je gewoon nat. Het enige waar OTP e.d. voor zorgen is dat niet je password gesnatched word en iemand ook meteen kan inloggen op andere services (waar je wellicht hetzelfde password gebruikt). Het beschermt dus tegen het omgekeerde: Inloggen op een server die wellicht gehackt is (en bijvoorbeeld alle passwords opslaat die aangeboden worden) vanaf een PC die te vertrouwen is.

Door Tweakers user Joseph, dinsdag 13 maart 2012 10:55

JUDGExKTF schreef op dinsdag 13 maart 2012 @ 01:27:
[...]

Ik heb het hier over het lokale password.

[...]

Het lokale password valt dus te rippen.

[...]

Ik heb het erover dat hij een API-Key moet verkrijgen en ingeven om deze software te laten werken.

[...]

Diegene die mijn PC over zou nemen kan erg weinig. Het ligt vooral aan welke rechten ik deze account heb gegeven. En als de sessie vervalt, kan hij niet opnieuw inloggen.

[Reactie gewijzigd op dinsdag 13 maart 2012 10:56]


Door Tweakers user FlowinG, dinsdag 13 maart 2012 11:06

Volgens mij heb je een goed idee te pakken:

Identificatie en authenticatie ineen! Dat zal het veel gemakkelijker maken om beveiligingssystemen te implementeren! :)

Door Tweakers user Manu_, dinsdag 13 maart 2012 13:13

authentificatie

Door Tweakers user himlims_, dinsdag 13 maart 2012 17:24

baal beetje van die externe 3th party afhankelijkheid

Door Tweakers user Dhr_Soulslayer, dinsdag 13 maart 2012 21:30

@himlims_ het is ook mogelijk om de validatie server zelf te draaien door gebruik te make van software en een api die Yubico aanbiedt op hun website. Er zijn heel erg veel mogelijkheden om de yubikey te gebruiken in verschillende omgeving al dan niet met de OTP Cloud service.

Door Tweakers user Caelyn, dinsdag 13 maart 2012 22:08

@ Joseph:

Een lokaal wachtwoord en de OTP onderscheppen is niet erg. ookal weet men je wachtwoord: je hebt altijd de OTP nodig om toegang te krijgen. En zoals elke tweaker weet: Gebruik altijd verschillende wachtwoorden... Dus ik zie je issue niet...

Een API is niet noodzakelijk, alleen als je de validatieserver niet zelf wil hosten, kun je gebruik maken van de YubiCLOUD. Wil je dat niet, dan word kostenloos en volledig open source de YubiRADIUS aangeboden, waarmee je dit zelf kan doen. Virtual appliance, zo te downloaden... Nu ook met ondersteuning voor de YubiAPP, voor android, mocht je je key niet bij je hebben.

@ Himlims_ Dat het 3rd party is, is niet aan te ontkomen. Ik persoonlijk vind het een beter alternatief dan de RSA tokens bijvoorbeeld, omdat hierbij niet elke x jaar een token vervangen hoeft te worden (voor een prijs van 2x een yubikey). Ook omdat alle tools en mogelijkheden volledig in open source oplossingen gegeven worden (geheel, of in geval van de cloud, alternatieven), lijkt me dit juist voor kleinere organisaties, of organisaties met een klein budget, een perfecte oplossing.

Tuurlijk, het kan gekraakt worden. Als iemand de OTP gebruikt voordat jij dat zelf doet, of voordat je een nieuwe genereerd, kan iemand daar misbuik van maken. Maar om eerlijk te zijn, ik ben nog nooit een 100% water dicht systeem tegengekomen... Ik denk dat niemand dat is. Iig niet een die bruikbaar is...

Ik heb nu hier in huis als projectje de OpenVPN Appliance, samen met een YubiRADIUS appliance en mijn activedirectory gekoppeld. Dit betekend dat je een account in de AD, in de juiste groep, met je wachtwoord en yubikey moet hebben om een VPN sessie te openen. De verificatie van de OTP loopt momenteel bij mij nog via de cloud, maar alleen omdat ik er nog niet aan toe ben gekomen de key om te programmeren naar een ander verificatie systeem om hem in te kunnen lezen in de radius, waardoor ik alles in huis hou...

Ja, ik ben erg enthousiast over deze tokens. Vooral omdat het tweakers een betaalbare optie geeft om hun systemen veiliger te maken en houden.

@ Dhr_Soulslayer, de api op de site is niet nodig als je je eigen validatie verzorgt. alleen als je de radius server dat in de cloud laat doen. De enige afhankelijkheid die nooit zal verdwijnen is het feit dat je de keys niet zelf kan maken... :P (alhoewel... de protocollen die gebruikt worden zijn: open source :P )

Door Tweakers user Joseph, dinsdag 13 maart 2012 23:46

Caelyn schreef op dinsdag 13 maart 2012 @ 22:08:
@ Joseph:

Een lokaal wachtwoord en de OTP onderscheppen is niet erg. ookal weet men je wachtwoord: je hebt altijd de OTP nodig om toegang te krijgen. En zoals elke tweaker weet: Gebruik altijd verschillende wachtwoorden... Dus ik zie je issue niet...
En daar mijn punt over de USB-Stick, want die valt altijd te rippen. Ook de inhoud van een YubiKey. * Joseph weet dat hij nu wel erg paranoiaal denkt.
Een API is niet noodzakelijk, alleen als je de validatieserver niet zelf wil hosten, kun je gebruik maken van de YubiCLOUD. Wil je dat niet, dan word kostenloos en volledig open source de YubiRADIUS aangeboden, waarmee je dit zelf kan doen. Virtual appliance, zo te downloaden... Nu ook met ondersteuning voor de YubiAPP, voor android, mocht je je key niet bij je hebben.
Dat wist ik niet. Ik dacht dat zo'n key mandatory was. Dat argument vervalt dus.

[Reactie gewijzigd op dinsdag 13 maart 2012 23:46]


Door Tweakers user JUDGExKTF, woensdag 14 maart 2012 01:01

En daar mijn punt over de USB-Stick, want die valt altijd te rippen. Ook de inhoud van een YubiKey.
Je kan er niks vanaf kopieeren want het is geen USB opslag device. De PC ziet hem als een toetsenbord (USB HID) en als je op de knop drukt stuurt hij het OTP naar de PC. Het ding is dus exact hetzelfde als een OTP calculator.

Door Tweakers user Caelyn, woensdag 14 maart 2012 17:45

JUDGExKTF schreef op woensdag 14 maart 2012 @ 01:01:
[...]


Je kan er niks vanaf kopieeren want het is geen USB opslag device. De PC ziet hem als een toetsenbord (USB HID) en als je op de knop drukt stuurt hij het OTP naar de PC. Het ding is dus exact hetzelfde als een OTP calculator.
Klopt inderdaad. Het is eigenlijk gewoon een USB toetsenbord, die (heel snel) je key intoetst. Hij is dus ook eigenlijk pas te lezen, nadat je hem gebruikt hebt. In bepaalde implementaties, zoals de pGina plugin voor windows (logon to windows in domeinen), kun je zelfs instellen dat kopieren en plakken volledig niet werkt, en de key binnen (ik geloof) 2 of 4 seconden ingevoerd moet zijn, anders accepteerd ie em niet... dus handmatig intikken lukt je dan ook niet :)

Mocht je hem kwijt raken, of hij word gestolen of wat dan ook, kun je bij de YubiRADIUS appliance de key er uit halen. Mocht je de cloud gebruiken, kun je met een logon die je aan kan maken bij hun, ook meteen je key laten blokkeren. Daarmee voorkom je ook dat dat een issue is.

Het enige gat wat ik heb kunnen vinden, is dat het gebruikte systeem open source is, en theoretisch nagemaakt kan worden voor 1 bepaalde key. Nu is het wel, dat geen enkel systeem dit volledig in kan dekken. RSA keys kunnen tegenwoordig ook genept worden, zei het met moeite.

Hier komt alleen ook de kracht van de key: als je het idee hebt dat het niet veilig meer is, omdat je RSA key van je sleutel bekend is, dan herprogrammeer je hem, laad je hem opnieuw in de server / cloud en je kan weer... :)

[Reactie gewijzigd op woensdag 14 maart 2012 17:47]


Reageren is niet meer mogelijk