2026. gada 7. jūlijs

Divfaktoru autentifikācija Linux SSH un sudo ar pam_radius — apstiprinājums tālrunī

Apstiprinājums tālrunī Linux SSH, sudo un su pieteikšanās brīdī ar pam_radius un Notakey auth-proxy, ar drošu lokālo rezervi, lai nezaudētu piekļuvi.

Tas pats Notakey auth-proxy, kas jau aizsargā jūsu VPN un MikroTik administratora pieteikšanos, var aizsargāt arī pieteikšanos Linux serveros. Linux PAM stekā ir pieejams standarta RADIUS modulis: savienojiet to ar proxy, un SSH, sudo un su līdzās parolei prasīs arī apstiprinājumu tālrunī.

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

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

Šī rokasgrāmata paredzēta Debian/Ubuntu (libpam-radius-auth); RHEL saimes distributīvos modulis pieejams kā pam_radius (EPEL), un PAM konfigurācijas faili atrodas tajā pašā /etc/pam.d/ struktūrā.

Priekšnosacījumi

  • Ierīkots auth-proxy RADIUS servera priekšā, tieši tā, kā aprakstīts VPN rokasgrāmatas 1.–3. solī.
  • Vienāds lietotājvārds lejupējā RADIUS serverī, Notakey servisā (ar reģistrētu tālruni) un pašā Linux serverī. PAM lietotāju tikai autentificē: konts, kurā pieteikties, lietotājam joprojām ir vajadzīgs lokāli vai direktorijā.
  • Linux serverim jāspēj sasniegt proxy pa UDP portu 1812. Parole starp tiem tiek pārraidīta PAP veidā, tāpēc turiet šo savienojumu pārvaldības tīklā vai palaidiet konteinerizēto proxy pašā serverī.

0. solis — vispirms nodrošiniet rezerves piekļuvi

Pirms ķeraties pie PAM rediģēšanas, pārliecinieties, ka darbojas tīri lokāla pieteikšanās: piešķiriet root kontam (vai īpašam avārijas administratoram) spēcīgu lokālu paroli un pārbaudiet to konsolē. Tālāk aprakstītā konfigurācija vienmēr atkāpjas uz lokālajām parolēm, tāpēc tieši šis konts ļaus jums tikt pie servera, ja proxy, RADIUS serveris vai tīkls kādreiz nedarbosies. Izdariet to tagad, nevis tad, kad kaut kas jau būs salūzis.

1. solis — instalējiet moduli

sudo apt-get install libpam-radius-auth

2. solis — savienojiet moduli ar proxy

Rediģējiet /etc/pam_radius_auth.conf un pievienojiet vienu rindiņu: proxy adresi, koplietoto slepeno atslēgu (tā pati, kas proxy vpn_secret_in) un noildzi sekundēs:

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

Pēc tam ierobežojiet piekļuvi failam, jo tajā glabājas slepenā atslēga:

sudo chmod 0600 /etc/pam_radius_auth.conf

Noildze ir tās pašas lamatas, kas visos citos šīs sērijas rakstos. Moduļa noklusējuma vērtība ir 3 sekundes: paroles pārbaudei pietiekami, bet cilvēka apstiprinājumam bezcerīgi maz. Iestatiet vismaz proxy vpn_message_ttl vērtību (30 s); 60 sekundes dod ērtu rezervi.

3. solis — iespējojiet moduli PAM konfigurācijā

Katrā ieejas punktā, ko vēlaties aizsargāt, pievienojiet vienu rindiņu tieši virs rindiņas @include common-auth. SSH gadījumā:

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

sufficient nozīmē: ja RADIUS atbild ar Access-Accept (parole pārbaudīta lejupējā serverī un push apstiprināts), pieteikšanās uzreiz izdodas. Ja ne, PAM turpina ar parasto lokālās paroles pārbaudi, kas seko zemāk.

Pēc vajadzības to pašu rindiņu pievienojiet arī citos failos:

  • /etc/pam.d/login: pieteikšanās konsolē
  • /etc/pam.d/sudo: apstiprinājums tālrunī būs vajadzīgs katrai sudo komandai (spēcīga aizsardzība, taču pieprasījumu ir daudz; situāciju atvieglo sudo paroles kešatmiņa)
  • /etc/pam.d/su: lietotāja maiņa

Visbeidzot rediģējiet /etc/pam.d/common-auth un esošajai pam_unix.so rindiņai pievienojiet try_first_pass:

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

(Pārējās šīs rindiņas opcijas dažādās versijās atšķiras; jāpievieno ir tikai try_first_pass.) Bez šīs opcijas lietotājam, kurš nonāk līdz lokālajai autentifikācijai, parole jāievada vēlreiz; ar to jau ievadītā parole klusējot tiek izmantota atkārtoti.

4. solis — pārbaudiet, vai sshd tiešām izmanto PAM

Failā /etc/ssh/sshd_config PAM balstītai autentifikācijai nepieciešams:

UsePAM yes
KbdInteractiveAuthentication yes

(abas ir Debian/Ubuntu noklusējuma vērtības). Ņemiet vērā: SSH publiskās atslēgas pieteikšanās PAM autentifikācijas fāzi apiet pilnībā, tāpēc pieteikšanās ar atslēgu push paziņojumu neizraisīs. Ja vēlaties prasīt gan atslēgu, gan push apstiprinājumu, iestatiet AuthenticationMethods publickey,keyboard-interactive, taču šo variantu pirms ieviešanas izmēģiniet atsevišķi.

5. solis — izveidojiet lietotājus, kas piesakās tikai ar push apstiprinājumu

Šis paņēmiens padara visu uzstādījumu īpaši tīru: veidojiet lietotājus bez lokālās paroles.

sudo useradd -m -G sudo john

Pēc tam passwd neizpildiet: konta lokālā parole paliek bloķēta. Šim lietotājam tagad ir tieši viens veids, kā pieteikties: RADIUS caur proxy, tātad parole un apstiprinājums tālrunī. Lokāli nav nekā, ko uzlauzt ar brute-force metodi. Vienīgais konts ar tīri lokālu paroli paliek 0. solī izveidotais avārijas administrators.

Pārbaudiet darbību, piesardzīgi

Neaizveriet esošo sesiju un no cita termināļa pieslēdzieties ar SSH, izmantojot RADIUS lietotājvārdu:

  • Paroles pieprasījums izskatās kā ierasts; pēc paroles ievadīšanas sesija brīdi gaida, jo tobrīd proxy tur RADIUS apmaiņu atvērtu.
  • Tālrunī pienāk push paziņojums. Apstiprināt → shell. Noraidīt vai ignorēt → pēc noildzes pieteikšanās neizdodas.
  • Pārliecinieties, ka avārijas administrators joprojām var pieteikties ar savu lokālo paroli.

Sākotnējo sesiju aizveriet tikai tad, kad abas pārbaudes izdevušās.

Problēmu novēršana

  • Pieteikšanās neizdodas uzreiz, bez push paziņojuma. Noildze failā /etc/pam_radius_auth.conf joprojām ir noklusējuma 3 sekundes, vai arī slepenā atslēga nesakrīt ar proxy vpn_secret_in.
  • Push paziņojuma nav, bet sesija gaida. Lietotājvārds RADIUS serverī un Notakey servisā nesakrīt, vai arī tālrunis šajā lietotnē nav reģistrēts.
  • Parole tiek prasīta divreiz. common-auth failā pam_unix rindiņai trūkst try_first_pass.
  • Pieteikšanās ar SSH atslēgu push paziņojumu nesaņem. Tā tam arī jābūt: publiskās atslēgas autentifikācija PAM autentifikācijas fāzi apiet (skatiet 4. soli).

Kur tas iederas

Ar vienu proxy un vienu RADIUS serveri apstiprinājumu tālrunī nu prasa gan VPN, gan maršrutētāja administratora piekļuve, gan visi jūsu Linux serveri. Tam pašam uzstādījumam var pieslēgt ikvienu sistēmu, kas atbalsta RADIUS vai PAM.

Saistītās rokasgrāmatas

← Visi raksti

Pirmā pieteikšanās bez paroles — jau šonedēļ

30 minūšu saruna ar inženieri, nevis pārdošanas prezentācija. Kopīgi izplānosim, kā jūsu VPN, SSO vai Windows vidē palaist strādājošu pilotprojektu.