Begrens OpenVPN-innlogginger til én gruppe med en PAM-policy
En dedikert PAM-tjeneste kan slippedu inn bare medlemmer av en VPN-gruppe uten å røre systemomfattende innloggingsregler. Pek auth-pam-pluginen på den, og test resultatene.
Hold hver konto i stand til å logge inn normalt, men la bare én gruppe bruke VPN. PAM kan uttrykke den forskjellen uten et ekstra passordlager, og OpenVPN-pluginen kan pekes på en tjeneste som bare inneholder kontrollene du har til hensikt. Kunsten er å bygge den tjenesten uten å arve en systemomfattende stabel ved et uhell.
Gjennomgangen her starter ved pluginens tjenestenavn, bygger en policy og tester deretter de tre utfallene som betyr noe: et medlem, en utenforstående med gyldig passord og en dårlig påloggingsdetalj.
Hvorfor en egen PAM-tjeneste
auth-pam-pluginen tar et tjenestenavn som argument. Det navnet velger en fil under /etc/pam.d, og stabelen i den filen er det som kjører under en VPN-innlogging. Hvis du gir det samme navnet som en systemomfattende innlogging bruker, arver du hver beslutning i den stabelen, inkludert de som ble lagt til senere av urelaterte grunner.
Opprett en dedikert tjeneste i stedet. Start fra en fungerende stabel som allerede autentiserer mot det tiltenkte backendet, som en lokal passordfil, SSSD eller en katalogtjeneste, og legg deretter til kvalifikasjonsregelen. Å kopiere to linjer inn i en tom fil er den vanlige feilen: passordutløp, kontolåsing og andre kontroller kan ligge i stabelen du ikke kopierte.
Å skille tjenesten begrenser også omfanget av skaden. En VPN-bare regel i en delt stabel kan nekte SSH- eller konsolltilgang for alle, noe som gjør en tilgangsendring til et avbrudd.
Skrive grupperegelen
Kvalifikasjonskontrollen hører til i konto-fasen, etter at påloggingsdetaljene er verifisert. En regel som account required pam_succeed_if.so user ingroup vpnusers lar behandlingen fortsette bare når den autentiserte brukeren er medlem av den gruppen.
Den linjen er et fragment, ikke en fullstendig tjeneste. Integrer den der hver aksepterte vei når den, og kontroller kontrollflaggene rundt den. En sufficient- eller hoppkontroll tidligere i stabelen kan avslutte behandlingen før regelen din kjører, noe som gjør begrensningen til et forslag.
Ikke legg til use_uid av vane. Uten den evaluerer modulen brukeren som autentiseres; med den evaluerer modulen kontoen som OpenVPN-prosessen kjører under, som vanligvis er root eller en tjenestekonto og derfor ikke personen som logger inn.
Gruppemedlemskap kommer fra systemets identitetsoppslag, ikke fra et navn du kjenner igjen. For katalogbrukere, bekreft at det samme backendet svarer på gruppespørringer for den brukeren, fordi en lokal gruppe med et kjent navn er et annet objekt enn kataloggruppen med samme navn.
Feller i rekkefølge og identitet
Plasser grupperegelen etter autentiseringsstabelen og etter hver kontroll som fortsatt må gjelde, men før eller ved siden av kontokontrollene du beholder. PAM evaluerer moduler i filrekkefølge, og kontrollverdien på hver linje avgjør om en feil er endelig.
Se opp for dupliserte stabler. Et vanlig mønster er en include som allerede inneholder en kontoregel, etterfulgt av din egen grupperegel, noe som gir to beslutninger der du forventet én. Les den inkluderte filen, ikke bare den du redigerte. En rask måte å se den effektive rekkefølgen på er å lese filen fra toppen og ned og notere hver kontrollverdi.
Hold de andre opptakskravene intakte. Et vellykket passord erstatter ikke sertifikatkontroller, en andre faktor eller autorisasjon etter tilkobling, og denne policyen er ikke en erstatning for noen av dem. Den avgjør bare om kontoen er kvalifisert til å bli vurdert for VPN-tilgang.
Teste medlemmer, utenforstående og feil passord
Test tre tilfeller før du anser policyen som ferdig. Et medlem kobler til. En gyldig konto utenfor gruppen autentiserer passordet sitt, men blir nektet VPN-tilgang. Et feil passord for en av kontoene avvises i autentiseringsfasen, ikke av grupperegelen.
Se den klient-synlige feilen og serverloggen sammen, fordi begge feilene kan se like ut for personen som kobler til. Forskjellen er viktig for support: en utenforstående med riktig passord trenger en gruppeendring, mens et feil passord krever tilbakestilling av påloggingsdetaljene.
Hold en andre sesjon åpen mens du redigerer PAM, og verifiser også vanlig SSH-innlogging etter endringen. Poenget med den dedikerte tjenesten er at systeminnloggingen skal være upåvirket, og den eneste måten å vite det på er å teste det.
Hvis noe går i stykker, gjenopprett den forrige tjenestefilen fra en kopi. Regelen du vil ha er enkel å formulere: medlemskap gjør en konto kvalifisert for VPN-tilgang, og alle andre påkrevde kontroller gjelder fortsatt.