Käyttäjä lisättiin palvelimelle, salasana kirjoitettiin oikein, ja yhteys päättyy silti AUTH_FAILED-virheeseen. Liitännäisen rivi selittää yleensä miksi: liitännäisen polun jälkeinen sana on PAM-palvelun nimi, ja se päättää, mikä moduulipino vastaa kysymykseen. Se ei ole käyttäjänimi eikä osoitin salasanatiedostoon, jonka OpenVPN lukee itse.

Mitä toinen sana valitsee

Määritysrivi ottaa liitännäisen polun ja yhden argumentin:

plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn

Tämä argumentti välitetään PAM-kirjastolle palvelun nimenä, jolloin suoritetaan polun /etc/pam.d/openvpn pino. Jos kirjoitat siihen login, saat sen sijaan interaktiivisen kirjautumiskäytännön, niine moduuleineen, joita kyseinen käytäntö sattuu jakelussasi sisältämään.

Käytä asennetun paketin tarjoamaa liitännäispolkua äläkä toisesta koneesta kopioitua polkua. Tiedostonimi ja hakemisto vaihtelevat jakeluittain, ja väärä polku epäonnistuu käynnistyksessä liitännäisen latausvirheeseen, ei todennuksessa.

Mistä pino todella lukee tilit

PAM on välittäjä. Palvelutiedosto luettelee moduulit järjestyksessä, ja ensimmäinen, joka voi vastata, ratkaisee tuloksen. Pino, joka kutsuu moduulia pam_unix, lukee paikallisia tilejä; pino, joka kutsuu LDAP- tai RADIUS-moduulia, lähettää tunnistetiedot aivan muualle.

Lue tiedosto, johon palvelun nimi ratkeaa, mukaan lukien kaikki sen sisältämä:

cat /etc/pam.d/openvpn
grep -H pam_ /etc/pam.d/openvpn /etc/pam.d/common-auth

Jos pino delegoi hakemistolle, paikallisen tilin lisääminen ei muuta mitään. Jos se lukee paikallisia tilejä, käyttäjän luominen hakemistoon ei muuta mitään sekään. Tilin on oltava siellä, minne pino katsoo, ja siinä on koko diagnoosi useimmissa näistä raporteista.

Yksi yritys, kaksi lokia

Korreloi yksi epäonnistunut yhteys molemmilla puolilla. OpenVPN-loki näyttää liitännäisen tuloksen ja asiakkaan hylkäyksen; järjestelmän todennusloki näyttää, mikä moduuli ajettiin ja mitä se päätti. Niiden lukeminen samassa aikaikkunassa erottaa puuttuvan palvelutiedoston backendin aikakatkaisusta. Aukko todennuslokissa tarkoittaa, ettei pintaan päästy lainkaan.

journalctl -u openvpn-server@server --since "-2 min"
journalctl -t sshd -t sudo --since "-2 min"

Testaa palvelua suoraan PAM:ia puhuvalla työkalulla, jotta et etsi vikaa yhtä aikaa VPN:stä ja pinosta. Onnistunut suora testi samalla palvelunimellä ja tilillä rajaa ongelman siihen, miten daemon välittää tunnistetiedot, ei itse tilin.

pamtester openvpn alice authenticate

Jos suora testi epäonnistuu samoilla tunnistetiedoilla, jotka toimivat konsolissa, pino ei lue olettamaasi tililähdettä. Jos se onnistuu, katso keskustelua, jonka liitännäinen käy, ja sitä, mitä asiakas todella lähetti. Aja se myös kerran tahallaan väärällä salasanalla, jotta näet eron hylkäyksen ja moduulivirheen välillä. Nämä kaksi tulosta näyttävät VPN-lokissa samoilta ja täällä täysin erilaisilta.

Erillinen palvelu on parempi kuin kirjautumisen muokkaaminen

Anna VPN:lle oma palvelutiedosto, kun sen vaatimukset poikkeavat interaktiivisesta kirjautumisesta, kuten yleensä käy. Tiedoston login tai common-auth muokkaaminen muuttaa käytäntöä jokaiselle ohjelmalle, joka ne sisältää, ja seuraava henkilö, joka selvittää siihen liittymätöntä kirjautumisongelmaa, perii muutoksesi.

Kopioi tarvitsemasi moduulit pieneen palvelutiedostoon, pidä järjestys selvänä ja kirjaa, kuka sen omistaa. Tämä tiedosto on se, mitä tarkistetaan, kun salasanan palautus näyttää olevan vailla vaikutusta.

Mitä asiakas lähettää ja mitä ei

Asiakas toimittaa käyttäjänimen ja salasanan tuetun kehotteensa tai tiedostonsa kautta. Palvelimen liitännäinen välittää nämä arvot PAM-keskusteluun; se ei lue niitä palvelimen määrityksistä. Palvelinpuolen rivi, joka näyttää määrittelevän salasanan, ei tee niin, eikä mikään profiilin muokkaus luo tiliä.

Käyttäjänimi ja salasana voivat esiintyä asiakasvarmenteiden rinnalla, eikä PAM:in käyttöönotto ole syy lopettaa varmenteiden tarkistamista. Säilytä kerrokset, jotka käyttöönotto oli tarkoittanut, ja korjaa vain tililähde.

Hyväksyntä on kaksipuolinen: aiottu tili onnistuu, ja tili, joka pitäisi hylätä, epäonnistuu edelleen. Tiedosto auth-pam-liitännäisen README kuvaa palveluargumentin ja taustajärjestelmät, joita se voi palvella, ja siinä on paikka vahvistaa järjestely, jota yrität rakentaa.

Aiheeseen liittyvät artikkelit