Begræns OpenVPN-logins til én gruppe med en PAM-politik
En dedikeret PAM-tjeneste kan kun lukke medlemmer af en VPN-gruppe ind uden at røre systemdækkende loginregler. Peg auth-pam-pluginet på den, og test resultaterne.
Hold hver konto i stand til at logge ind normalt, men lad kun én gruppe bruge VPN. PAM kan udtrykke den forskel uden et ekstra adgangskodelager, og OpenVPN-pluginet kan peges på en tjeneste, der kun indeholder de kontroller, du har til hensigt. Kunsten er at bygge den tjeneste uden ved et uheld at arve en systemdækkende stak.
Gennemgangen her starter ved pluginets tjenestenavn, bygger en politik og tester derefter de tre udfald, der betyder noget: et medlem, en udenforstående med en gyldig adgangskode og en dårlig legitimationsoplysning.
Hvorfor en separat PAM-tjeneste
auth-pam-pluginet tager et tjenestenavn som sit argument. Det navn vælger en fil under /etc/pam.d, og stakken i den fil er det, der kører under et VPN-login. Hvis du giver det samme navn, som et systemdækkende login bruger, arver du hver beslutning i den stak, inklusive dem, der senere er tilføjet af urelaterede årsager.
Opret i stedet en dedikeret tjeneste. Start fra en fungerende stak, der allerede autentificerer mod det tilsigtede backend, såsom en lokal adgangskodefil, SSSD eller en katalogtjeneste, og tilføj derefter kvalifikationsreglen. At kopiere to linjer ind i en tom fil er den almindelige fejl: adgangskodeudløb, kontolåsning og andre kontroller kan ligge i den stak, du ikke kopierede.
At adskille tjenesten begrænser også skadens omfang. En VPN-only-regel i en delt stak kan nægte SSH- eller konsoladgang for alle, hvilket gør en adgangsændring til et nedbrud.
At skrive grupperegelen
Kvalifikationskontrollen hører til i konto-fasen, efter at legitimationsoplysningen er verificeret. En regel som account required pam_succeed_if.so user ingroup vpnusers tillader kun behandlingen at fortsætte, når den autentificerede bruger er medlem af den gruppe.
Den linje er et fragment, ikke en komplet tjeneste. Integrer den, hvor hver accepteret vej når den, og kontroller kontrolflagene omkring den. En sufficient- eller springkontrol tidligere i stakken kan afslutte behandlingen, før din regel kører, hvilket gør begrænsningen til en anbefaling.
Tilføj ikke use_uid af vane. Uden den evaluerer modulet den bruger, der autentificeres; med den evaluerer modulet den konto, som OpenVPN-processen kører under, hvilket normalt er root eller en tjenestekonto og derfor ikke den person, der logger ind.
Gruppemedlemskab kommer fra systemets identitetsopløsning, ikke fra et navn, du genkender. For katalogbrugere skal du bekræfte, at det samme backend svarer på gruppeforespørgsler for den bruger, fordi en lokal gruppe med et velkendt navn er et andet objekt end kataloggruppen med samme navn.
Fælder i rækkefølge og identitet
Anbring grupperegelen efter autentificeringsstakken og efter enhver kontrol, der stadig skal gælde, men før eller ved siden af de kontokontroller, du beholder. PAM evaluerer moduler i filrækkefølge, og kontrolværdien på hver linje afgør, om en fejl er endelig.
Vær opmærksom på dublerede stakke. Et almindeligt mønster er et include, der allerede indeholder en kontoregel, efterfulgt af din egen grupperegel, hvilket giver to beslutninger, hvor du forventede én. Læs den inkluderede fil, ikke kun den, du redigerede. En hurtig måde at se den effektive rækkefølge på er at læse filen fra top til bund og notere hver kontrolværdi.
Hold de øvrige adgangskrav intakte. En vellykket adgangskode erstatter ikke certifikatkontroller, en anden faktor eller autorisation efter forbindelse, og denne politik er ikke en erstatning for nogen af dem. Den afgør kun, om kontoen er kvalificeret til at blive overvejet til VPN-adgang.
Test af medlemmer, udenforstående og dårlige adgangskoder
Test tre tilfælde, før du anser politikken for færdig. Et medlem forbinder med succes. En gyldig konto uden for gruppen autentificerer sin adgangskode, men nægtes VPN-adgang. En forkert adgangskode for en af kontoene afvises i autentificeringsfasen, ikke af grupperegelen.
Se den klient-synlige fejl og serverloggen sammen, fordi begge fejl kan se ens ud for den person, der forbinder. Forskellen er vigtig for support: en udenforstående med korrekt adgangskode har brug for en gruppeændring, mens en forkert adgangskode kræver en nulstilling af legitimationsoplysningerne.
Hold en anden session åben, mens du redigerer PAM, og verificér også almindeligt SSH-login efter ændringen. Pointen med den dedikerede tjeneste er, at systemlogin skal være upåvirket, og den eneste måde at vide det på er at teste det.
Hvis noget går i stykker, gendan den tidligere tjenestefil fra en kopi. Reglen, du ønsker, er enkel at formulere: medlemskab gør en konto kvalificeret til VPN-adgang, og alle andre påkrævede kontroller gælder stadig.