Tas pats Notakey auth-proxy, kuris jau saugo jūsų
VPN ir
MikroTik administratoriaus prisijungimą,
gali apsaugoti ir prisijungimus prie Linux. Linux PAM posistemėje yra
standartinis RADIUS modulis: nukreipkite jį į proxy, ir SSH, sudo bei su
greta slaptažodžio reikalaus dar ir patvirtinimo telefone.
sshd / sudo ──PAM──▶ pam_radius ──RADIUS──▶ Notakey auth-proxy ──▶ your RADIUS server
│
└──▶ push ──▶ user's phone
Šis vadovas skirtas Debian/Ubuntu (libpam-radius-auth); RHEL šeimos
distribucijose modulis platinamas pavadinimu pam_radius (EPEL), o PAM failai
išdėstyti toje pačioje /etc/pam.d/ struktūroje.
Reikalavimai
- Veikiantis auth-proxy prieš RADIUS serverį, sukonfigūruotas lygiai taip, kaip VPN vadovo 1–3 žingsniuose.
- Tas pats naudotojo vardas galiniame RADIUS serveryje, Notakey servise (su užregistruotu telefonu) ir kaip paskyra Linux kompiuteryje. PAM tik autentifikuoja; naudotojui vis tiek reikia vietinės (arba katalogo) paskyros, prie kurios jungiamasi.
- Linux kompiuteris turi pasiekti proxy UDP 1812 prievadu. Slaptažodis tarp jų keliauja PAP formatu, todėl laikykite šį ryšį valdymo tinkle arba paleiskite dokerizuotą proxy pačiame kompiuteryje.
0 žingsnis. Pirmiausia pasiruoškite avarinį išėjimą
Prieš liesdami PAM įsitikinkite, kad veikia grynai vietinis prisijungimas: suteikite root (arba specialiai avarinei administratoriaus paskyrai) stiprų vietinį slaptažodį ir patikrinkite jį konsolėje. Toliau aprašyta konfigūracija visada grįžta prie vietinių slaptažodžių, todėl ši paskyra – jūsų kelias vidun, jei proxy, RADIUS serveris ar tinklas kada nors neveiktų. Padarykite tai iš anksto, o ne tada, kai kas nors jau sugedo.
1 žingsnis. Įdiekite modulį
sudo apt-get install libpam-radius-auth
2 žingsnis. Nukreipkite jį į proxy
Atverkite /etc/pam_radius_auth.conf ir pridėkite vieną eilutę: proxy
adresą, bendrąjį slaptažodį (jis turi sutapti su proxy vpn_secret_in) ir
skirtąjį laiką sekundėmis:
# server[:port] shared_secret timeout (s)
10.0.1.20 secret_to_radius_server 60
Tada apribokite prieigą prie failo, nes jame saugomas slaptažodis:
sudo chmod 0600 /etc/pam_radius_auth.conf
Skirtasis laikas – tie patys spąstai kaip ir visur kitur šioje serijoje.
Numatytoji modulio reikšmė yra 3 sekundės: pakanka slaptažodžio patikrai, bet
beviltiškai maža, kai patvirtinti turi žmogus. Nustatykite bent proxy
vpn_message_ttl reikšmę (30 s); 60 sekundžių suteikia patogią atsargą.
3 žingsnis. Įjunkite jį PAM konfigūracijoje
Kiekvienam prisijungimo taškui, kurį norite apsaugoti, pridėkite vieną eilutę
iš karto virš @include common-auth eilutės. SSH atveju:
sudo nano /etc/pam.d/sshd
auth sufficient pam_radius_auth.so
@include common-auth
sufficient reiškia: jei RADIUS atsako Access-Accept (slaptažodis
patikrintas galiniame serveryje ir push pranešimas patvirtintas),
prisijungimas iš karto pavyksta. Jei ne, PAM pereina prie žemiau esančios
įprastos vietinio slaptažodžio patikros.
Tą pačią eilutę pagal poreikį pridėkite ir čia:
/etc/pam.d/login– prisijungimai konsolėje/etc/pam.d/sudo– kiekvienassudoklaus telefono (saugu, bet dažnoka; padėtį gelbsti sudo prisijungimo duomenų podėlis)/etc/pam.d/su– naudotojo keitimas
Galiausiai atverkite /etc/pam.d/common-auth ir prie esamos pam_unix.so
eilutės pridėkite try_first_pass:
auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
(Kitos šios eilutės parinktys skirtingose laidose skiriasi; pridedama tik
try_first_pass.) Be jos naudotojo, grįžtančio prie vietinio
autentifikavimo, slaptažodžio klausiama antrą kartą; su ja jau įvestas
slaptažodis panaudojamas tyliai.
4 žingsnis. Patikrinkite, ar sshd tikrai naudoja PAM
/etc/ssh/sshd_config faile PAM pagrįstam autentifikavimui reikia:
UsePAM yes
KbdInteractiveAuthentication yes
(abi reikšmės Debian/Ubuntu sistemose yra numatytosios). Svarbu žinoti:
SSH prisijungimai viešuoju raktu PAM autentifikavimo fazę aplenkia
visiškai: prisijungimas raktu push pranešimo nesukels. Jei norite rakto
ir push pranešimo kartu, nustatykite
AuthenticationMethods publickey,keyboard-interactive, bet šį variantą
prieš diegdami išbandykite atskirai.
5 žingsnis. Sukurkite naudotojus, prisijungiančius tik su push patvirtinimu
Štai gudrybė, dėl kurios ši sąranka tokia tvarkinga: kurkite naudotojus be vietinio slaptažodžio.
sudo useradd -m -G sudo john
Jokio passwd po to: paskyros vietinis slaptažodis lieka užrakintas. Šiam
naudotojui lieka lygiai vienas kelias vidun: RADIUS per proxy, tai yra
slaptažodis ir patvirtinimas telefone. Vietinėje sistemoje nėra ko
atspėlioti perrinkimo atakomis. Jūsų avarinė administratoriaus paskyra iš
0 žingsnio lieka vienintelė su grynai vietiniu slaptažodžiu.
Išbandykite atsargiai
Palikite veikiančią sesiją atvirą ir junkitės per SSH iš antro terminalo su RADIUS naudotojo vardu:
- Slaptažodžio užklausa elgiasi įprastai; jį įvedus sesija laukia: tai proxy laiko mainus atvirus.
- Į telefoną atkeliauja push pranešimas. Patvirtinus → gaunate terminalą. Atmetus arba ignoruojant → pasibaigus skirtajam laikui prisijungimas nepavyksta.
- Įsitikinkite, kad avarinė paskyra vis dar prisijungia su savo vietiniu slaptažodžiu.
Pradinę sesiją uždarykite tik tada, kai pavyksta abi patikros.
Trikčių šalinimas
- Prisijungimas nepavyksta akimirksniu, push pranešimo nėra.
/etc/pam_radius_auth.conffaile skirtasis laikas vis dar numatytosios 3 sekundės arba slaptažodis nesutampa su proxyvpn_secret_in. - Push pranešimo nėra, bet laukiama. Naudotojo vardas nesutampa tarp RADIUS ir Notakey serviso arba telefonas neužregistruotas šioje aplikacijoje.
- Slaptažodžio klausiama du kartus.
common-authfailepam_unixeilutėje trūkstatry_first_pass. - SSH prisijungimai raktu negauna push pranešimo. Taip ir turi būti; autentifikavimas viešuoju raktu aplenkia PAM autentifikavimo fazę (žr. 4 žingsnį).
Bendras vaizdas
Vienas proxy, vienas RADIUS serveris – ir dabar VPN, maršrutizatoriaus valdymo plokštuma ir visas jūsų Linux parkas reikalauja patvirtinimo telefone. Prie tos pačios sąrankos gali prisijungti bet kas, kas kalba RADIUS ar PAM.
Susiję vadovai
- VPN 2FA su RADIUS – išsami auth-proxy sąranka: proxy konfigūracija, kuria remiasi šis vadovas
- MikroTik maršrutizatoriaus prisijungimo 2FA: tas pats modelis paties maršrutizatoriaus WinBox/SSH prisijungimui