Sama Notakey auth-proxy, mis kaitseb juba teie
VPN-i ja
MikroTiku halduri sisselogimist, suudab
kaitsta ka Linuxi sisselogimisi. Linuxi PAM-pinuga on kaasas standardne
RADIUS-moodul: suunake see proksi poole ning SSH, sudo ja su nõuavad
lisaks paroolile ka kinnitust telefonis.
sshd / sudo ──PAM──▶ pam_radius ──RADIUS──▶ Notakey auth-proxy ──▶ your RADIUS server
│
└──▶ push ──▶ user's phone
See juhend on mõeldud Debianile/Ubuntule (libpam-radius-auth); RHEL-i
perekonna distributsioonides kannab pakett nime pam_radius (EPEL) ja PAM-i
failid paiknevad samamoodi kataloogis /etc/pam.d/.
Eeldused
- Töötav auth-proxy RADIUS-serveri ees, seadistatud täpselt nii, nagu kirjeldatud VPN-i juhendi sammudes 1–3.
- Sama kasutajanimi nii taustal olevas RADIUS-serveris, Notakey teenuses (registreeritud telefoniga) kui ka kontona Linuxi masinas. PAM ainult autendib; sisselogimiseks vajab kasutaja endiselt kohalikku (või kataloogiteenuse) kontot.
- Linuxi masin peab proksini jõudma UDP pordil 1812. Parool liigub nende vahel PAP-kujul, seega hoidke see liiklus haldusvõrgus või käivitage dokkeriseeritud proksi otse samas masinas.
Samm 0 – seadistage kõigepealt varuväljapääs
Enne PAM-i puutumist veenduge, et puhtalt kohalik sisselogimine töötab: andke root-kasutajale (või spetsiaalsele hädaolukorra halduskontole) tugev kohalik parool ja kontrollige seda konsoolist. Allolev seadistus langeb alati tagasi kohalikele paroolidele, seega on see konto teie sissepääs, kui proksi, RADIUS-server või võrk peaks kunagi maas olema. Tehke see kõigepealt, mitte alles pärast seda, kui midagi on juba katki.
Samm 1 – paigaldage moodul
sudo apt-get install libpam-radius-auth
Samm 2 – suunake see proksi poole
Avage /etc/pam_radius_auth.conf ja lisage üks rida: proksi aadress,
jagatud saladus (peab kattuma proksi seadega vpn_secret_in) ja ajalimiit
sekundites:
# server[:port] shared_secret timeout (s)
10.0.1.20 secret_to_radius_server 60
Seejärel piirake faili õigusi, sest see sisaldab saladust:
sudo chmod 0600 /etc/pam_radius_auth.conf
Ajalimiit on seesama lõks nagu mujalgi selles sarjas. Mooduli
vaikeväärtus on 3 sekundit: paroolikontrolliks piisav, inimese antava
kinnituse jaoks lootusetu. Seadke see vähemalt proksi vpn_message_ttl
väärtuseni (30 s); 60 jätab mugava varu.
Samm 3 – lülitage moodul PAM-is sisse
Lisage igasse sissepääsupunkti, mida soovite kaitsta, üks rida vahetult
enne rida @include common-auth. SSH puhul:
sudo nano /etc/pam.d/sshd
auth sufficient pam_radius_auth.so
@include common-auth
sufficient tähendab: kui RADIUS vastab Access-Accept (parool on taustal
kontrollitud ja tõuketeade kinnitatud), õnnestub sisselogimine kohe. Kui
mitte, liigub PAM edasi allpool oleva tavalise kohaliku paroolikontrolli
juurde.
Sama rea võite soovi korral lisada ka järgmistesse failidesse:
/etc/pam.d/loginkonsoolist sisselogimiste jaoks/etc/pam.d/sudo– igasudoküsib kinnitust telefonist (tugev, kuid jutukas; sudo volituste vahemälu hoiab selle talutavana)/etc/pam.d/sukasutaja vahetamiseks
Lõpuks avage /etc/pam.d/common-auth ja lisage olemasolevale pam_unix.so
reale try_first_pass:
auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
(Selle rea muud valikud erinevad väljalasketi; lisandub ainult
try_first_pass.) Ilma selleta küsitakse kohalikule autentimisele tagasi
langevalt kasutajalt parooli teist korda; sellega kasutatakse juba sisestatud
parooli märkamatult uuesti.
Samm 4 – veenduge, et sshd tõesti kasutab PAM-i
PAM-il põhinev autentimine eeldab failis /etc/ssh/sshd_config järgmist:
UsePAM yes
KbdInteractiveAuthentication yes
(mõlemad on Debianis/Ubuntus vaikimisi nii). Üks asi, mida teada: SSH
avaliku võtmega sisselogimised jätavad PAM-i autentimisfaasi täielikult
vahele: võtmepõhine sisselogimine tõuketeadet ei käivita. Kui soovite
võtit ja tõuketeadet koos, määrake
AuthenticationMethods publickey,keyboard-interactive, kuid katsetage seda
varianti enne kasutuselevõttu eraldi.
Samm 5 – looge ainult tõuketeatega kasutajad
Siin on nipp, mis teeb lahenduse puhtaks: looge kasutajad ilma kohaliku paroolita.
sudo useradd -m -G sudo john
Ärge käivitage pärast seda passwd: konto kohalik parool jääb lukku. Sellel
kasutajal on nüüd täpselt üks sissepääs: RADIUS läbi proksi ehk parool ja
kinnitus telefonis. Kohapeal pole midagi, mida jõurünnakuga murda. Sammus 0
loodud hädaolukorra halduskonto jääb ainsaks puhtalt kohaliku parooliga
kontoks.
Katsetage, ettevaatlikult
Hoidke oma töötav seanss lahti ja logige SSH kaudu sisse teisest terminalist RADIUS-e kasutajanimega:
- Parooliviip käitub tavapäraselt; pärast parooli sisestamist jääb seanss ootele: see on proksi, mis hoiab vahetust avatuna.
- Tõuketeade jõuab telefoni. Kinnitage → saate käsurea. Keelake või ignoreerige → sisselogimine ebaõnnestub pärast ajalimiidi täitumist.
- Veenduge, et hädaolukorra konto pääseb endiselt sisse oma kohaliku parooliga.
Sulgege algne seanss alles siis, kui mõlemad kontrollid on läbitud.
Veaotsing
- Sisselogimine ebaõnnestub hetkega, tõuketeadet ei tule. Ajalimiit
failis
/etc/pam_radius_auth.confon ikka veel 3-sekundilisel vaikeväärtusel või saladus ei kattu proksi seadegavpn_secret_in. - Tõuketeadet ei tule, kuid ootamine toimub. Kasutajanimi erineb RADIUS-e ja Notakey teenuse vahel või pole telefon selle rakenduse jaoks registreeritud.
- Parooli küsitakse kaks korda. Failis
common-authpuudubpam_unixrealttry_first_pass. - Võtmepõhised SSH sisselogimised tõuketeadet ei saa. See on ootuspärane; avaliku võtmega autentimine möödub PAM-i autentimisfaasist (vt samm 4).
Kuidas see tervikusse sobitub
Ühe proksi ja ühe RADIUS-serveriga nõuavad kinnitust telefonis nüüd nii VPN, ruuteri haldusliides kui ka teie Linuxi masinapark. Sama lahendusega saab liita kõik, mis räägib RADIUS-t või PAM-i.
Seotud juhendid
- VPN-i 2FA RADIUS-e abil – täielik auth-proxy seadistus: proksi seadistus, millele see juhend toetub
- MikroTiku ruuteri sisselogimise 2FA: sama muster ruuteri enda WinBoxi/SSH sisselogimise jaoks