2026. július 7.

Linux SSH 2FA pam_radius-szal: telefonos jóváhagyás SSH-hoz és sudo-hoz

Telefonos jóváhagyásos 2FA Linux SSH-hoz, sudo-hoz és su-hoz pam_radius-szal és a Notakey auth-proxyval, helyi tartalékkal, hogy sose zárja ki magát.

Ugyanaz a Notakey auth-proxy, amely már a VPN-t és a MikroTik admin-bejelentkezést is védi, a Linux-bejelentkezésekre is kiterjeszthető. A Linux PAM-rendszere tartalmaz egy szabványos RADIUS-modult: irányítsa a proxyra, és az SSH, a sudo és a su a jelszó mellett telefonos jóváhagyást is megkövetel.

sshd / sudo ──PAM──▶ pam_radius ──RADIUS──▶ Notakey auth-proxy ──▶ your RADIUS server

                                                    └──▶ push ──▶ user's phone

Ez az útmutató Debian/Ubuntu rendszerekre készült (libpam-radius-auth); a RHEL-családba tartozó disztribúciókon a modul pam_radius néven érhető el (EPEL), a PAM-fájlok pedig ugyanabban a /etc/pam.d/ struktúrában találhatók.

Előfeltételek

  • Működő auth-proxy egy RADIUS-szerver előtt, pontosan úgy beállítva, ahogy a VPN-útmutató 1–3. lépése leírja.
  • Ugyanaz a felhasználónév a mögöttes RADIUS-szerveren, a Notakey szolgáltatásban (regisztrált telefonnal) és fiókként a Linux-gépen. A PAM csak hitelesít: a felhasználónak továbbra is kell egy helyi (vagy címtárbeli) fiók, amelybe bejelentkezhet.
  • A Linux-gép érje el a proxyt az UDP 1812-es porton. A jelszó közöttük PAP-ként utazik, ezért tartsa ezt menedzsmenthálózaton, vagy futtassa a dockeres proxyt magán a gépen.

0. lépés: Először gondoskodjon vészkijáratról

Mielőtt a PAM-hoz nyúlna, győződjön meg róla, hogy a tisztán helyi bejelentkezés működik: adjon a rootnak (vagy egy erre a célra fenntartott vészhelyzeti admin fióknak) erős helyi jelszót, és próbálja ki a konzolon. Az alábbi konfiguráció mindig visszavált a helyi jelszavakra, így ez a fiók lesz a belépési útja, ha a proxy, a RADIUS-szerver vagy a hálózat valaha leáll. Ezt tegye meg legelőször, ne akkor, amikor már baj van.

1. lépés: Telepítse a modult

sudo apt-get install libpam-radius-auth

2. lépés: Irányítsa a proxyra

Szerkessze a /etc/pam_radius_auth.conf fájlt, és vegyen fel egyetlen sort: a proxy címét, a megosztott titkot (a proxy vpn_secret_in értékének párját) és az időtúllépést másodpercben:

# server[:port]    shared_secret            timeout (s)
10.0.1.20          secret_to_radius_server  60

Ezután korlátozza a fájl jogosultságait, mivel a titkot tartalmazza:

sudo chmod 0600 /etc/pam_radius_auth.conf

Az időtúllépés ugyanaz a csapda, mint a sorozat minden más részében. A modul alapértéke 3 másodperc: jelszóellenőrzéshez elegendő, emberi jóváhagyáshoz reménytelen. Állítsa legalább a proxy vpn_message_ttl értékére (30 mp); a 60 kényelmes ráhagyást ad.

3. lépés: Engedélyezze a PAM-ban

Minden védendő belépési ponthoz vegyen fel egy sort közvetlenül a @include common-auth sor fölé. SSH esetén:

sudo nano /etc/pam.d/sshd
auth sufficient pam_radius_auth.so
@include common-auth

A sufficient jelentése: ha a RADIUS Access-Accept választ ad (a jelszót a mögöttes szerver ellenőrizte, és az értesítést jóváhagyták), a bejelentkezés azonnal sikeres. Ha nem, a PAM továbblép az alatta lévő szokásos helyi jelszóellenőrzésre.

Igény szerint vegye fel ugyanezt a sort az alábbiak bármelyikébe:

  • /etc/pam.d/login – konzolos bejelentkezések
  • /etc/pam.d/sudo – minden sudo a telefonhoz fordul (erős védelem, de sok értesítéssel jár; a sudo hitelesítés-gyorsítótárazása elviselhetővé teszi)
  • /etc/pam.d/su – felhasználóváltás

Végül szerkessze a /etc/pam.d/common-auth fájlt, és fűzze hozzá a try_first_pass opciót a meglévő pam_unix.so sorhoz:

auth    [success=1 default=ignore]      pam_unix.so nullok_secure try_first_pass

(A sor többi opciója kiadásonként eltérhet; egyedül a try_first_pass az újdonság.) Enélkül a helyi hitelesítésre visszaeső felhasználótól a rendszer másodszor is bekéri a jelszót; ezzel az opcióval viszont a már beírt jelszót csendben újra felhasználja.

4. lépés: Ellenőrizze, hogy az sshd valóban használja-e a PAM-ot

Az /etc/ssh/sshd_config fájlban a PAM-alapú hitelesítéshez ez szükséges:

UsePAM yes
KbdInteractiveAuthentication yes

(mindkettő a Debian/Ubuntu alapértelmezése). Egy fontos tudnivaló: az SSH nyilvános kulcsos bejelentkezései teljesen kihagyják a PAM hitelesítési fázisát, vagyis kulcsalapú bejelentkezés nem vált ki push értesítést. Ha kulcsot és push-t is szeretne, állítsa be az AuthenticationMethods publickey,keyboard-interactive opciót, de ezt a változatot élesítés előtt külön tesztelje.

5. lépés: Hozzon létre csak push értesítéssel belépő felhasználókat

Íme a trükk, amelytől a felállás igazán letisztult lesz: hozzon létre felhasználókat helyi jelszó nélkül.

sudo useradd -m -G sudo john

Utána nincs passwd: a fiók helyi jelszava zárolva marad. Ennek a felhasználónak ezzel pontosan egy belépési útja van: a RADIUS a proxyn keresztül, vagyis jelszó és telefonos jóváhagyás. Helyben nincs mit nyers erővel feltörni. Egyedül a 0. lépésben létrehozott vészhelyzeti admin marad tisztán helyi jelszavas fiók.

Tesztelés – óvatosan

Hagyja nyitva a működő munkamenetét, és jelentkezzen be SSH-val egy második terminálból egy RADIUS-felhasználónévvel:

  • A jelszókérés a megszokott módon viselkedik; a jelszó beírása után a munkamenet várakozik, mert ilyenkor a proxy tartja nyitva a folyamatot.
  • A push értesítés megérkezik a telefonra. Jóváhagyás → shell. Elutasítás vagy figyelmen kívül hagyás → a bejelentkezés az időtúllépés után meghiúsul.
  • Győződjön meg róla, hogy a vészhelyzeti fiók továbbra is be tud lépni a helyi jelszavával.

Az eredeti munkamenetet csak azután zárja be, hogy mindkét ellenőrzés sikerült.

Hibaelhárítás

  • A bejelentkezés azonnal meghiúsul, push nélkül: a /etc/pam_radius_auth.conf időtúllépése még a 3 másodperces alapértéken áll, vagy a titok nem egyezik a proxy vpn_secret_in értékével.
  • Nincs push, de a várakozás megtörténik: a felhasználónév eltér a RADIUS és a Notakey szolgáltatás között, vagy a telefon nincs regisztrálva ehhez az alkalmazáshoz.
  • Kétszer kéri a jelszót: a try_first_pass hiányzik a common-auth fájl pam_unix sorából.
  • Kulcsalapú SSH-bejelentkezésnél nincs push: ez a normális működés; a nyilvános kulcsos hitelesítés megkerüli a PAM hitelesítési fázisát (lásd a 4. lépést).

Hogyan illeszkedik az összképbe

Egy proxy, egy RADIUS-szerver – és mostantól a VPN, a router adminfelülete és a teljes Linux-géppark is telefonos jóváhagyást követel. Bármi, ami tud RADIUS-t vagy PAM-ot, csatlakozhat ugyanehhez a felálláshoz.

Kapcsolódó útmutatók

← Minden bejegyzés

Az első jelszó nélküli bejelentkezés már ezen a héten

30 perces beszélgetés egy mérnökkel – nem értékesítési prezentáció. Közösen megtervezzük, hogyan indulhat el egy működő pilotprojekt az Ön VPN-, SSO- vagy Windows-környezetében.