Mitä rakennetaan?
- SSH + avain (suositus) + TOTP-koodi (Authenticator-app)
- Toteutus: PAM +
libpam-google-authenticator(tai vastaava) - Tavoite: brute force -yritykset kuolee nälkään, mutta ylläpito pysyy hallinnassa
0) Ennen kuin kosket mihinkään
- Varmista konsolipääsy: KVM / serial console / hallintapaneelin “console”.
- Ota varmuuskopiot (minimi):
sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F_%H%M%S)
sudo cp -a /etc/pam.d/sshd /etc/pam.d/sshd.bak.$(date +%F_%H%M%S)
1) Asennus
Debian/Ubuntu (tyypillinen):
sudo apt update
sudo apt install -y libpam-google-authenticator
Jos distro on eri, paketin nimi voi vaihdella. Idea pysyy: PAM-moduuli TOTP:lle.
2) Luo TOTP käyttäjälle
Aja google-authenticator sillä käyttäjällä, jolla kirjaudut sisään (yleensä oma admin-käyttäjä):
google-authenticator
- Skannaa QR-koodi Authenticator-appiin
- Tallenna emergency scratch codes turvalliseen paikkaan
3) Kytke PAM SSH:lle (hallittu tapa)
Muokkaa /etc/pam.d/sshd ja lisää rivi “auth”-osioon:
# /etc/pam.d/sshd
auth required pam_google_authenticator.so nullok
nullok sallii kirjautumisen myös käyttäjille, joilla ei ole vielä TOTP-secretiä asetettuna.
Tämä helpottaa siirtymää, mutta kannattaa poistaa kun MFA on kaikilla halutuilla käyttäjillä.
PasswordAuthentication no ja vaadi TOTP sen lisäksi.
4) Säädä sshd_config
Uudemmissa OpenSSH-versioissa suositus on käyttää KbdInteractiveAuthentication ja AuthenticationMethods.
Esimerkki “avain + TOTP”:
# /etc/ssh/sshd_config
PasswordAuthentication no
KbdInteractiveAuthentication yes
# vaadi: publickey + keyboard-interactive (TOTP)
AuthenticationMethods publickey,keyboard-interactive
Joissain ympäristöissä käytetään edelleen ChallengeResponseAuthentication. Nimeäminen riippuu versiosta,
mutta idea on sama: TOTP tulee “keyboard-interactive” -polun kautta.
5) Testaa turvallisesti
- Pidä nykyinen SSH-istunto auki.
- Tarkista konfig ja reload:
sudo sshd -t
sudo systemctl reload ssh
# tai: sudo systemctl reload sshd
- Avaa uusi terminaali ja testaa kirjautuminen.
- Varmista: avain → TOTP-koodi.
Palautus ja “unohdin puhelimen” -tilanne
- Käytä emergency scratch code jos tallensit ne.
- Poista MFA väliaikaisesti: kommentoi PAM-rivi ja reload (konsolin kautta).
- Nollaa käyttäjän secret: poista
~/.google_authenticatorja ajagoogle-authenticatoruudelleen.
# Esimerkki (varovasti):
rm -f ~/.google_authenticator
google-authenticator
Yhteenveto
- MFA SSH:lle onnistuu PAM:lla ja TOTP:lla.
- Varmista palautusreitti ennen käyttöönottoa.
- Testaa uudessa sessiossa, pidä vanha auki.
Turva ei ole “lisäominaisuus”. Se on se osa, joka estää sinua tekemästä asiakkaan ongelmista omia ongelmia.