OpenVPN PAM: login ఆర్గ్యుమెంట్ ఒక సేవ, వినియోగదారు కాదు
auth-pam ప్లగిన్ మార్గం తర్వాత వచ్చే పదం PAM స్టాక్ను ఎంచుకుంటుంది. ఆ స్టాక్ను చదవండి, దాని ఖాతా మూలాన్ని కనుగొనండి, ఆపై ప్రొఫైళ్లను సవరించే ముందు pamtesterతో పరీక్షించండి.
సర్వర్లో వినియోగదారుని జోడించారు, పాస్వర్డ్ సరిగ్గా టైప్ చేశారు, అయినా కనెక్షన్ ఇప్పటికీ AUTH_FAILED తో ముగుస్తుంది. సాధారణంగా కారణాన్ని ప్లగిన్ లైనే వివరిస్తుంది: ప్లగిన్ మార్గం తర్వాత వచ్చే పదం PAM సేవా పేరు, ఏ మాడ్యూల్ సమూహం ప్రశ్నకు సమాధానం ఇస్తుందో అదే నిర్ణయిస్తుంది. అది వినియోగదారు పేరు కాదు, OpenVPN తానే చదివే పాస్వర్డ్ ఫైల్కు సూచిక కూడా కాదు.
రెండవ పదం ఏమి ఎంచుకుంటుంది
కాన్ఫిగరేషన్ లైన్ ఒక ప్లగిన్ మార్గాన్ని మరియు ఒక ఆర్గ్యుమెంట్ను తీసుకుంటుంది:
plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so openvpnఆ ఆర్గ్యుమెంట్ సేవా పేరుగా PAM లైబ్రరీకి అందించబడుతుంది, అందుకే /etc/pam.d/openvpn లోని స్టాక్ అమలవుతుంది. అక్కడ login రాస్తే దాని బదులు ఇంటరాక్టివ్ లాగిన్ విధానం వర్తిస్తుంది, మీ పంపిణీలో ఆ విధానం కలిగించే మాడ్యూల్స్తో సహా.
ఇన్స్టాల్ అయిన ప్యాకేజీ ఇచ్చే ప్లగిన్ మార్గాన్ని ఉపయోగించండి, మరో హోస్ట్ నుండి కాపీ చేసిన మార్గాన్ని కాదు. ఫైల్ పేరు మరియు డైరెక్టరీ పంపిణీల మధ్య భిన్నంగా ఉంటాయి, తప్పు మార్గం ప్రామాణీకరణ సమయంలో కాదు, ప్రారంభంలోనే ప్లగిన్ లోడ్ లోపంతో విఫలమవుతుంది.
స్టాక్ నిజానికి ఖాతాలను ఎక్కడి నుండి చదువుతుంది
PAM ఒక డిస్పాచర్. సేవా ఫైల్ మాడ్యూల్స్ను క్రమంగా జాబితా చేస్తుంది, సమాధానం ఇవ్వగల మొదటిదే ఫలితాన్ని నిర్ణయిస్తుంది. pam_unix ను పిలిచే స్టాక్ స్థానిక ఖాతాలను చదువుతుంది; LDAP లేదా RADIUS మాడ్యూల్ను పిలిచే స్టాక్ ఆధారాలను పూర్తిగా మరో చోటికి పంపుతుంది.
సేవా పేరు పరిష్కరించే ఫైల్ను, అది చేర్చే ప్రతిదానితో సహా చదవండి:
cat /etc/pam.d/openvpn
grep -H pam_ /etc/pam.d/openvpn /etc/pam.d/common-authస్టాక్ నిర్ణయాన్ని డైరెక్టరీకి అప్పగిస్తే, స్థానిక ఖాతా జోడించడం ఏమీ మార్చదు. అది స్థానిక ఖాతాలను చదివితే, డైరెక్టరీలో వినియోగదారుని సృష్టించడం కూడా ఏమీ మార్చదు. స్టాక్ వెతికే చోట ఖాతా ఉండాలి, ఇలాంటి నివేదికల చాలావరకు మొత్తం నిర్ధారణ ఇదే.
ఒక ప్రయత్నం, రెండు లాగ్లు
ఒక విఫలమైన కనెక్షన్ను రెండు వైపులా కలిపి చూడండి. OpenVPN లాగ్ ప్లగిన్ ఫలితాన్ని మరియు క్లయింట్ తిరస్కారాన్ని చూపుతుంది; సిస్టమ్ ప్రామాణీకరణ లాగ్ ఏ మాడ్యూల్ అమలైంది, ఏమి నిర్ణయించింది అని చూపుతుంది. రెండింటినీ ఒకే సమయ విండోలో చదవడమే తప్పిపోయిన సేవా ఫైల్ను బ్యాకెండ్ సమయాతీతం నుండి వేరు చేస్తుంది. ప్రామాణీకరణ లాగ్లో ఖాళీ ఉంటే స్టాక్కు అసలు చేరలేదని అర్థం.
journalctl -u openvpn-server@server --since "-2 min"
journalctl -t sshd -t sudo --since "-2 min"VPN మరియు స్టాక్ను ఒకేసారి డీబగ్ చేయకుండా ఉండటానికి, PAM మాట్లాడే సాధనంతో సేవను నేరుగా పరీక్షించండి. అదే సేవా పేరు మరియు ఖాతాతో నేరుగా పరీక్ష విజయవంతమైతే, సమస్య ఖాతాలో కాదు, డెమన్ ఆధారాలను ఎలా పంపుతుంది అనే దానికి పరిమితమవుతుంది.
pamtester openvpn alice authenticateకన్సోల్లో పనిచేసే అదే ఆధారాలతో నేరుగా పరీక్ష విఫలమైతే, స్టాక్ మీరు ఊహించిన ఖాతా మూలాన్ని చదవడం లేదు. అది విజయవంతమైతే, ప్లగిన్ నిర్వహించే సంభాషణను మరియు క్లయింట్ నిజంగా ఏమి పంపిందో చూడండి. ఉద్దేశపూర్వకంగా తప్పు పాస్వర్డ్తో కూడా ఒకసారి అమలు చేయండి, తిరస్కారానికి మరియు మాడ్యూల్ లోపానికి మధ్య వ్యత్యాసం కనిపిస్తుంది. ఆ రెండు ఫలితాలు VPN లాగ్లో ఒకేలా కనిపిస్తాయి, ఇక్కడ పూర్తిగా భిన్నం.
ప్రత్యేక సేవ login సవరణ కంటే మెరుగు
VPN అవసరాలు ఇంటరాక్టివ్ లాగిన్ నుండి భిన్నంగా ఉన్నప్పుడు, సాధారణంగా భిన్నంగా ఉంటాయి, దానికి దాని స్వంత సేవా ఫైల్ ఇవ్వండి. login లేదా common-auth సవరించడం వాటిని చేర్చే ప్రతి ప్రోగ్రామ్ విధానాన్ని మారుస్తుంది, దీనితో సంబంధం లేని లాగిన్ సమస్యను డీబగ్ చేసే తదుపరి వ్యక్తి మీ మార్పును పొందుతాడు.
అవసరమైన మాడ్యూల్స్ను చిన్న సేవా ఫైల్లోకి కాపీ చేయండి, క్రమాన్ని స్పష్టంగా ఉంచండి, యజమాని ఎవరో గుర్తించండి. పాస్వర్డ్ రీసెట్ ఫలితం ఇవ్వనట్టు కనిపించినప్పుడు తనిఖీ చేయవలసినది అదే ఫైల్.
క్లయింట్ ఏమి పంపుతుంది, ఏమి పంపదు
క్లయింట్ వినియోగదారు పేరు మరియు పాస్వర్డ్ను తనకు మద్దతున్న ప్రాంప్ట్ లేదా ఫైల్ ద్వారా అందిస్తుంది. సర్వర్ ప్లగిన్ ఆ విలువలను PAM సంభాషణలోకి పంపుతుంది; అవి సర్వర్ కాన్ఫిగరేషన్ నుండి చదవదు. పాస్వర్డ్ను నిర్వచించినట్టు కనిపించే సర్వర్ వైపు లైన్ అలా చేయదు, ఏ ప్రొఫైల్ సవరణా ఖాతాను సృష్టించదు.
వినియోగదారు పేరు మరియు పాస్వర్డ్ క్లయింట్ ధృవపత్రాలతో కలిసి ఉండవచ్చు, PAM ప్రారంభించడం ధృవపత్రాలను నిర్ధారించడం ఆపే కారణం కాదు. అమరిక ఉద్దేశించిన పొరలను ఉంచి ఖాతా మూలాన్ని మాత్రమే సరిచేయండి.
ఆమోదం రెండు వైపులది: ఉద్దేశించిన ఖాతా విజయవంతమవుతుంది, తిరస్కరించవలసిన ఖాతా ఇప్పటికీ విఫలమవుతుంది. auth-pam ప్లగిన్ README సేవా ఆర్గ్యుమెంట్ను మరియు అది ముందుంచగల బ్యాకెండ్లను వివరిస్తుంది, మీరు నిర్మించబోయే అమరికను నిర్ధారించవలసిన చోటు అదే.