Limitahan ang mga pag-login sa OpenVPN sa iisang grupo gamit ang patakarang PAM
Ang nakalaang serbisyong PAM ay maaaring tumanggap lamang ng mga miyembro ng grupong VPN nang hindi hinahawakan ang mga tuntunin ng pag-login sa buong sistema. Ituro ang plugin na auth-pam dito at subukan ang mga resulta.
Panatilihing nakakapag-login nang normal ang bawat account, ngunit payagan lamang ang isang grupo na gumamit ng VPN. Maaaring ipahayag ng PAM ang pagkakaibang iyon nang walang pangalawang imbakan ng password, at ang plugin ng OpenVPN ay maaaring ituro sa isang serbisyong naglalaman lamang ng mga pagsusuring nilalayon mo. Ang daya ay buuin ang serbisyong iyon nang hindi aksidenteng namamana ang isang stack sa buong sistema.
Ang paglalakbay dito ay nagsisimula sa pangalan ng serbisyo ng plugin, bumubuo ng patakaran, at pagkatapos ay sinusubukan ang tatlong resultang mahalaga: isang miyembro, isang tagalabas na may wastong password, at masamang kredensyal.
Bakit hiwalay na serbisyong PAM
Kinukuha ng plugin na auth-pam ang pangalan ng serbisyo bilang argumento nito. Pinipili ng pangalang iyon ang isang file sa ilalim ng /etc/pam.d, at ang stack sa file na iyon ang tumatakbo sa panahon ng pag-login sa VPN. Kung ipapasa mo ang parehong pangalan na ginagamit ng pag-login sa buong sistema, mamanahin mo ang bawat desisyon sa stack na iyon, kabilang ang mga idinagdag mamaya dahil sa walang kaugnayang dahilan.
Gumawa ng nakalaang serbisyo sa halip. Magsimula sa gumaganang stack na nagpapatunay na laban sa nilalayong backend, tulad ng lokal na file ng password, SSSD, o serbisyong direktoryo, pagkatapos ay idagdag ang tuntunin ng pagiging kwalipikado. Ang pagkopya ng dalawang linya sa isang walang laman na file ang karaniwang pagkakamali: ang pag-expire ng password, pag-lock ng account, at iba pang pagsusuri ay maaaring nasa stack na hindi mo kinopya.
Nililimitahan din ng paghihiwalay ng serbisyo ang saklaw ng pinsala. Ang tuntuning para sa VPN lamang sa isang pinagsasaluhang stack ay maaaring tumanggi sa pag-access ng SSH o console para sa lahat, na ginagawang pagkagambala ang pagbabago sa pag-access.
Pagsulat ng tuntunin ng grupo
Ang pagsusuri ng pagiging kwalipikado ay kabilang sa yugto ng account, pagkatapos mapatunayan ang kredensyal. Ang tuntunin tulad ng account required pam_succeed_if.so user ingroup vpnusers ay nagpapahintulot na magpatuloy ang pagproseso lamang kapag ang napatunayang user ay miyembro ng grupong iyon.
Ang linyang iyon ay isang piraso, hindi isang kumpletong serbisyo. Isama ito kung saan umaabot ang bawat tinatanggap na landas, at suriin ang mga flag ng kontrol sa paligid nito. Ang kontrol na sufficient o pagtalon nang mas maaga sa stack ay maaaring tapusin ang pagproseso bago tumakbo ang iyong tuntunin, na ginagawang mungkahi lamang ang paghihigpit.
Huwag idagdag ang use_uid dahil sa ugali. Kung wala ito, sinusuri ng module ang user na pinapatunayan; kung mayroon ito, sinusuri ng module ang account kung saan tumatakbo ang proseso ng OpenVPN, na karaniwang root o account ng serbisyo at kaya hindi ang taong nag-login.
Ang pagiging miyembro ng grupo ay nagmumula sa resolusyon ng pagkakakilanlan ng sistema, hindi sa pangalang kinikilala mo. Para sa mga user ng direktoryo, tiyakin na ang parehong backend ay sumasagot sa mga query ng grupo para sa user na iyon, dahil ang lokal na grupo na may pamilyar na pangalan ay ibang bagay kaysa sa grupong direktoryo na may parehong pangalan.
Mga bitag ng pagkakasunod-sunod at pagkakakilanlan
Ilagay ang tuntunin ng grupo pagkatapos ng stack ng pagpapatunay at pagkatapos ng bawat pagsusuring dapat pa ring umiral, ngunit bago o katabi ng mga pagsusuri ng account na pinapanatili mo. Sinusuri ng PAM ang mga module sa pagkakasunod-sunod ng file, at ang halaga ng kontrol sa bawat linya ang nagpapasya kung ang kabiguan ay pangwakas.
Mag-ingat sa mga doble na stack. Ang karaniwang pattern ay isang include na mayroon nang tuntunin ng account, na sinusundan ng sarili mong tuntunin ng grupo, na gumagawa ng dalawang desisyon kung saan isa lang ang inaasahan mo. Basahin ang kasamang file, hindi lamang ang file na inedit mo. Ang mabilis na paraan upang makita ang epektibong pagkakasunod-sunod ay basahin ang file mula sa itaas pababa at itala ang bawat halaga ng kontrol.
Panatilihing buo ang iba pang mga kinakailangan sa pagpasok. Ang matagumpay na password ay hindi pumapalit sa mga pagsusuri ng sertipiko, pangalawang salik, o awtorisasyon pagkatapos ng koneksyon, at ang patakarang ito ay hindi kapalit ng alinman sa mga iyon. Nagpapasya lamang ito kung ang account ay karapat-dapat na isaalang-alang para sa pag-access sa VPN.
Pagsubok sa mga miyembro, tagalabas at maling password
Subukan ang tatlong kaso bago mo ituring na tapos ang patakaran. Ang isang miyembro ay kumokonekta nang matagumpay. Ang isang wastong account sa labas ng grupo ay nagpapatunay ng password nito ngunit tinatanggihan ang pag-access sa VPN. Ang maling password para sa alinmang account ay tinatanggihan sa yugto ng pagpapatunay, hindi ng tuntunin ng grupo.
Tingnan nang sabay ang error na nakikita ng kliyente at ang log ng server, dahil ang dalawang kabiguan ay maaaring magmukhang pareho sa taong kumokonekta. Mahalaga ang pagkakaiba para sa suporta: ang tagalabas na may tamang password ay nangangailangan ng pagbabago ng grupo, samantalang ang maling password ay nangangailangan ng pag-reset ng kredensyal.
Panatilihing bukas ang pangalawang sesyon habang ine-edit ang PAM, at tiyakin din ang ordinaryong pag-login sa SSH pagkatapos ng pagbabago. Ang punto ng nakalaang serbisyo ay dapat manatiling hindi naaapektuhan ang pag-login sa sistema, at ang tanging paraan upang malaman ito ay subukan ito.
Kung may masira, ibalik ang dating file ng serbisyo mula sa isang kopya. Ang tuntuning gusto mo ay madaling sabihin: ginagawang kwalipikado ng pagiging miyembro ang isang account para sa pag-access sa VPN, at nalalapat pa rin ang bawat iba pang kinakailangang pagsusuri.