Denna guide kommer beskriva hur man i ubuntu konfiguerar så man får tvåstegsverifiering (two facto authentication) via SSH. Exemplet nedan är utfört på en Ubuntu 12.04 server installation tillsammans med en yubikey standard.
Steg 1: Installera nödvändiga paket
För att detta ska fungera måste man installera några paket för att kunna använda yubikeyn se nedan.
sudo apt-get install libpam-yubico libykclient3
Verifiera nu att paketen installerats korekt och kolla så du har filen enligt nedan exempel
ls -la /lib/security/pam_yubico.so
-rw-r–r– 1 root root 35416 Feb 15 2012 /lib/security/pam_yubico.so
Har du filen kan du gå vidare till nästa steg.
Steg 2: Koppla användare till yubikey inloggning
Innan vi konfigurerar SSH ska vi konfigurerar användare för yubikey. Gör enligt nedan exempel men använd korekt användarnamn.
mkdir /home/username/.yubico/
touch /home/username/.yubico/authorized_yubikeys
chmod 700 /home/username/.yubico
Nu ska vi lägga in användare i filen och koppla till din yubikey. Gå in i filen vi skapade ovan med en texteditor se nedan
nano /home/username/.yubico/authorized_yubikeys
Syntaxen i filen är enligt nedan exempel
username:yubikey id
Vill man ha flera yubikeys kopplade på samma användare gör man enligt nedan
username:yubikey id:yubikey id
Exempel
ubuntu:ccccccbdefgh
För flera yubikeys på samma användare
ubuntu:ccccccbdefgh:ccccccbddfef
Yubikey ID får man av att ta en OTP från sin yubikey och ta dom första 12 tecknen i OTPn det är ID:t.
Gör ovan steg för dom användare som ska köra yubikey.
Steg 3: Konfigurera SSH pam.d för yubikey
Nu måste vi konfigurera SSH att använda yubikey PAM modul. Gå in i filen med valfri editor /etc/pam.d/sshd
Lägg till en ny rad i början av filen som ska likna nedan exempelrad.
Exempel (OBS! detta är en rad inte två så se till att det blir rätt i filen)
auth required pam_yubico.so id=2458 key=ure8aX7mdExlmO0q44idqEICIuE= url=http://api.yubico.com/wsapi/2.0/verify?id=%d&otp=%s
Notera att man måste byta ut key värdet alltså det efter key= och id= till det som motsvarar det som hör till din yubikey. För att skaffa ett yubikey id / key så går man in på nedan URL.
https://upgrade.yubico.com/getapikey/
Note:
I exemplet ovan använder jag required och det betyder att man måste logga in med yubikey OTP + lössenord alltså tvåstegsverifiering. Man kan använda sufficient istället då krävs bara att man anger yubikey OTP och inget lössenord krävs alltså envägsverifiering.
Steg 4: Konfigurera SSHd
Vi måste ändra tre värden i /etc/ssh/sshd_config se nedan
PermitEmptyPasswords no
ChallengeResponseAuthentication yes
UsePAM yes
Det finns dock några olika kombinationer för olika typer av inloggning se nedan.
Nedan två är tänkta att användas med sufficient för pam_yubikey från steg 3.
1: Envägsverifiering med yubikey med lössenord avstängt
PasswordAuthentication no
2: Envägsverifiering med yubikey ELLER lössenord
PasswordAuthentication yes
Detta kräver att man använder sig av required i pam_yubikey för sshd från steg 3.
3: Tvåstegsverifiering med yubikey OCH lössenord
PasswordAuthentication yes
Steg 5: Starta om SSHd
För att nu aktivera detta så måste vi starta om SSHd gör det med nedan kommando.
sudo service ssh restart
Steg 6: Testa löseningen
Nu återstår bara att testa om det fungerar som det ska. Anslut med ssh mot din server och se om det du konfigurerat fungerar se exempel nedan.
username1@host1:~$ ssh username2@host2
Yubikey for `username2′:
Password:
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.2.0-57-generic x86_64)
Last login: Tue Dec 10 13:20:39 2013 from host1
username2@host2:~$
Ovan ser man att man först får skicka in en Yubikey OTP och sedan även ange lössenord för username2 användaren.
Slutsats:
Nu om allt fungerar som det ska är nu tvåstegsverifiering aktiverat via SSH på din Ubuntu server. Undrar ni något eller har synpunkter så lämna en komentar eller maila mig.
Källor:
https://github.com/Yubico/yubico-pam/wiki/YubikeyAndSSHViaPAM
http://forum.yubico.com/viewtopic.php?t=822