Inrichten van Two Factor Auth op Ubuntu middels Google OTP. (One Time Password)
Daarnaast ingebouwd in een hardened configuratie.
Specifiek om het volgende te kunnen:
- root kan alleen vanaf een specifiek ip-adres inloggen en alleen met certificaat.
- andere users kunnen vanaf dit specifieke ip-adres inloggen met gebruikersnaam en certificaat.
- andere users moeten vanaf een willekeurig ip-adres inloggen met certificaat en OTP.
Uitvoering
Installatie Google Authenticator
**Zorg ervoor dat NTP client actief is voor de juiste tijd op het systeem!!
apt-get install libpam0g-dev libqrencode3
cd ~
wget https://google-authenticator.googlecode.com/files/libpam-google-authenticator-1.0-source.tar.bz2
tar jvxf libpam-google-authenticator-1.0-source.tar.bz2
cd libpam-google-authenticator-1.0/
make
make install
Aanmaken code
Login als de gebruiker waarvoor je de code wil gaan instellen. Voor de root user doen we dit dus niet!!
Geef het volgende commando:
google-authenticator
Beantwoord alle vragen met "y"

Open de Google Authenticator App (of een andere authenticator app, Authy?) op je telefoon en scan de QR code. De App zal dan de OTP toevoegen aan de app.

Noteer daarnaast de URL, secret key, verification code en de emergency scratch codes. (liefst in Keepass of een andere password kluis)
Neem Google OTP in de configuratie op
Bewerk PAM
nano /etc/pam.d/sshd
Vervang de regel
@include common-auth
door het volgende codeblok
#Disabled Common Auth
#@include common-auth
#Google Authenticator
auth sufficient pam_google_authenticator.so
Bewerk SSHD configuratie
Open de SSHD configuratie
nano /etc/ssh/sshd_config
Om uberhaupt logins van root te limiteren tot een bepaald adres en andere logins toe te staan vanaf waar dan ook de volgende regel aan het begin opnemen. 8.8.8.8 door het gewenste adres vervangen.
AllowUsers [email protected] username@*
Alleen publickey auth voor root
PermitRootLogin without-password
Voor de volledigheid de volgende opties als volgt zetten
PubkeyAuthentication yes
ChallengeResponseAuthentication yes
PasswordAuthentication no
UsePAM yes
Dan onderaan de file het volgende toevoegen. Hiermee zorgen we er voor dat als je inlogt vanaf een onbekend IP je via publickey auth en OTP moet inloggen. Vanaf een bekend IP is het alleen publickey auth.
AuthenticationMethods publickey,keyboard-interactive
Match Address 8.8.8.8/32
AuthenticationMethods publickey
Herstart hierna ssh, maar hou 1 sessie open totdat je alles getest hebt met inloggen. (Tenzij je ook console access hebt)
service ssh restart
Mocht je meerdere ip-adressen toevoegen dan kan dat door het subnet uit te breiden en indien het niet in hetzelfde subnet zit voor elk ip-adres/subnet de volgende sectie nogmaals toevoegen.
Match Address 8.8.4.4/32
AuthenticationMethods publickey
Bronnen
Dit document is samengesteld a.d.h.v. de volgende pagina en daarnaast eigen variatie in de sshd config.
De afbeeldingen komen ook van de volgende pagina.