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 katraisudokomandai (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.confjoprojām ir noklusējuma 3 sekundes, vai arī slepenā atslēga nesakrīt ar proxyvpn_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-authfailāpam_unixrindiņai trūksttry_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
- VPN 2FA ar RADIUS — pilna auth-proxy uzstādīšana: proxy konfigurācija, uz kuras balstās šī rokasgrāmata
- MikroTik maršrutētāja pieteikšanās 2FA: tas pats modelis paša maršrutētāja WinBox/SSH pieteikšanās aizsardzībai