PAM හරහා සත්‍යාපනය සාර්ථක විය හැක්කේ ඔබ සේවාදායකය අතින් ධාවනය කරන විටය, සහ systemd එම පැතිකඩම ආරම්භ කළ විට AUTH_FAILED සමඟ අසාර්ථක විය හැක. එම ධාවන අතර මුරපදය වෙනස් නොවේ; වෙනස් වන්නේ PAM වෙත ප්‍රශ්නය යොදන ක්‍රියාවලිය වටා ඇති සීමා කුලකයයි. PAM පිළිතුරු දෙන්නේ තමන්ගේම අක්තපත්‍ර වෙනස් කිරීමේ හැකියාව දෘඪ කළ unit එකක් ඉවත් කරන දෙයම වන සහායකයෙකු හරහාය. හැකියා ලැයිස්තුවක් ස්පර්ශ කිරීමට පෙර එම සහායකයා සහ ඔහුට අවශ්‍ය මායිම සොයා ගන්න.

unix_chkpwd යනු PAM ප්‍රශ්නයට පිළිතුරු දෙන ද්විමය ගොනුවයි

දේශීය මුරපද සත්‍යාපනය සමඟ, pam_unix කලාතුරකින් hash ගොනුව තමන්ම කියවයි. එය unix_chkpwd ධාවනය කරයි; බෙදාහැරීම් එය setuid root හෝ setgid shadow ලෙස ස්ථාපනය කරන්නේ /etc/shadow කියවීමට අයිතියක් නොමැති ක්‍රියාවලියක් වෙනුවෙන් එක් මුරපදයක් පරීක්ෂා කළ හැකි වන පරිදිය. එම අනන්‍යතාව ලබා ගැනීමේ හැකියාව ඉවත් කරන්න, සහායකයාට පරීක්ෂාව සම්පූර්ණ කළ නොහැකි බැවින් මොඩියුලය සාමාන්‍ය සත්‍යාපන අසාර්ථකත්වයක් ලබා දෙයි.

එවිට අසාර්ථකත්වය සේවාදායකයට පෙනෙන සෑම ලොගයකම අක්තපත්‍ර ගැටලුවක් ලෙස පෙනේ. එයයි උගුල: සේවාදායකය PAM එයට කී දේ වාර්තා කරයි, PAM වාර්තා කරන්නේ තොගය නැත කී බව පමණි. root ලෙස සහායකයා අතින් ධාවනය කිරීමද කිසිවක් ඔප්පු නොකරයි, මන්ද එය සේවාව කිසිදා භාවිත නොකරන වරප්‍රසාද මාර්ගයක් භාවිත කරයි. systemd සැබවින්ම පූරණය කළ unit එක කියවන්න, පසුව සිදු කළ උත්සාහය සඳහා පද්ධති ලොගය කියවන්න. එම දර්ශන දෙක sandbox ගැටලුව වැරදි මුරපද ගැටලුවෙන් වෙන් කරයි.

මුරපද ලොගය කියවීමට පෙර unit එක කියවන්න

ඇසුරුම් කළ unit එකක් ඔබ නොලියූ drop-in එකක් ගෙන යා හැක, සහ ඵලදායී වින්‍යාසය ඒකාබද්ධ ප්‍රතිඵලයයි. unit එක systemd දකින ආකාරයටම, සහායකයාට තමන්ම ඔසවා ගත හැකිද යන්න තීරණය කරන sandbox සැකසුම් සමඟ මුද්‍රණය කරන්න. මෙම අවස්ථාවේ කියවීම-පමණක් පරීක්ෂාව ප්‍රමාණවත්ය.

systemctl cat [email protected]
systemctl show [email protected] -p User -p Group -p CapabilityBoundingSet -p AmbientCapabilities -p NoNewPrivileges
journalctl -u [email protected] -b

පළමු විධානය unit එක සහ එහි drop-in කොහෙන් එනවාද පෙන්වයි, එය වැදගත් වන්නේ මාස ගණනකට පෙර එකතු කළ අභිබවා යාම එය පවතින්නේ ඇයි යන මතකයට වඩා දිගු කල් ජීවත් වන බැවිනි. දෙවැන්න ඊළඟ කොටස් දෙක රඳා පවතින sandbox අගයන් මුද්‍රණය කරයි.

ඔබ දකින දේ එම බෙදාහැරීම සහ අනුවාදයේ ක්‍රියාකාරී සත්කාරකයක් සමඟ සසඳන්න. User, CapabilityBoundingSet හෝ NoNewPrivileges හි වෙනසක් තහවුරු ඉඟියකි; ගද්‍ය විස්තරවල වෙනසක් නොවේ. කිසිවක් වෙනස් කිරීමට පෙර අගයන් ලියා තබන්න, මන්ද චලනය වන ඉලක්කයක් සමඟ පසුව කරන සංසන්දනය කිසිවක් ඔප්පු නොකරයි. සේවාව වරප්‍රසාද නොමැති ගිණුමක් ලෙස හිස් මායිම් කුලකයක් සමඟ ධාවනය වන්නේ නම්, සහායකයාට වැඩ කිරීමට පාහේ කිසිවක් නැත.

අක්තපත්‍ර පරිවර්තනය, ගොනු ප්‍රවේශය සහ ප්‍රතිපත්තිය මායිම් තුනකි

exec අතරතුර සිදුවන දෙයින් ආරම්භ කරන්න. setuid ද්විමය ගොනුවක් හෝ file capabilities සහිත ගොනුවක් අක්තපත්‍ර පරිවර්තනයක් ඇති කරයි, එබැවින් ලැබෙන අනන්‍යතාව අමතන්නාගේ අඛණ්ඩතාව නොවේ. මායිම් කුලකය එවැනි ද්විමය ගොනුවකට ලබාගත හැකි දේ සීමා කරයි, NoNewPrivileges setuid, setgid සහ file capabilities ලබා ගැනීම සම්පූර්ණයෙන් අවහිර කරයි. එම තුනෙන් ඕනෑම එකකට සහායකයා නතර කළ හැකි අතර සේවාවේ අනෙක් සෑම කාර්යයක්ම නොසෙල්වී පවතී.

ඊළඟට, පුළුල් අභිමත බයිපාසය පටු කියවීම් ප්‍රවේශයෙන් වෙන් කරන්න. CAP_DAC_OVERRIDE පාහේ සෑම තැනකම අභිමත පරීක්ෂණ මඟ හරියි, CAP_DAC_READ_SEARCH තමන්ගේම අමතර බලතල සමඟ කියවීම සහ නාමාවලි සංචාරය ආවරණය කරයි. ඒවා වෙනස් බලපෑම් පරාසයන් සහිත වෙනස් මෙවලම් වන අතර, කිසිවක් PAM ට shadow ගොනුව කියවීමට ඉඩ දෙන්න ලෙස ලිවීමේ ක්‍රමයක් නොවේ.

අවසානයේ, අනිවාර්ය ප්‍රතිපත්තිය මෙම ක්‍රියාවට ඉඩ දෙන්නේදැයි අසන්න. Linux හැකියාවක් SELinux අභිබවා නොයයි, එය තිබීම වර්ග බලාත්මක කිරීමේ රීතියක් ගැන කිසිවක් ඔප්පු නොකරයි. ගොනු ප්‍රවේශ ප්‍රතික්ෂේපය සහ හැකියා ප්‍රතික්ෂේපය වෙනස් සාක්ෂි ලෙස සලකන්න, මන්ද ඒවා වෙනස් අලුත්වැඩියා සහ බොහෝ විට වෙනස් හිමිකරුවන් නම් කරයි. denied යන එකම වචනය වෙනුවට වාර්තාවේ සෑම ක්ෂේත්‍රයක්ම කියවන්න. කුමන ක්‍රියාත්මක ගොනුව ක්‍රියාව කළේද, එය කුමන වසමක ධාවනය වූයේද, කුමන ආකාරයේ ඉලක්කයක් ස්පර්ශ කළේද, කුමන පන්තියේ වස්තුවක් සම්බන්ධ වූයේද සහ ප්‍රතිපත්තිය කුමන අවසරය ප්‍රතික්ෂේප කළේද - ඒ සෑම එකක්ම පිළිතුර වෙනස් ආකාරයකින් පටු කරයි.

ප්‍රතික්ෂේපය විගණන ලොගයෙන් ඇද ගන්න

enforcing ආකාරයේ සත්කාරකයක, විගණන ලකුණ ප්‍රතික්ෂේපයක් වාර්තා කරන එකම තැනය. මෑත සිදුවීම් විමසා ඒවා අසාර්ථක පිවිසුමේ කාල මුද්‍රාවට අනුව කියවන්න, ඔබ විමර්ශනය ආරම්භ කළ වේලාවට අනුව නොවේ.

ausearch -m AVC,USER_AVC -ts recent

හිස් ප්‍රතිඵලයක් නිර්දෝෂභාවයට සාක්ෂියක් නොවේ. එයින් අදහස් වන්නේ විගණනය එකතු නොකරන බව හෝ ඔබේ කවුළුව උත්සාහය මඟ හැරිය බවය, සහ ප්‍රතිපත්තිය බැහැර කිරීමට පෙර අවස්ථා දෙකම බැහැර කළ යුතුය.

Red Hat හි SELinux ගැටලු නිරාකරණ මාර්ගෝපදේශය ලේබල් සහ වින්‍යාස පරීක්ෂණ අවසර රීති ජනනය කිරීමට පෙර තබයි, එය මෙම ගැටලුවටද නිවැරදි අනුපිළිවෙලයි. වැරදි ලෙස ලේබල් කළ සහායක ද්විමය ගොනුව සහ ප්‍රතිපත්තියේ හිඩැස සමාන ප්‍රතික්ෂේප ඇති කරයි නමුත් වෙනස් අලුත්වැඩියා අවශ්‍ය වේ. ලේබල් දෝෂයකට අවසර රීතියක් ජනනය කිරීම දෝෂය සඟවා ඊළඟ පැකේජ යාවත්කාලීනයට එය නැවත ගෙන ඒමට ඉඩ දෙයි. ඕනෑම ප්‍රතිපත්තියක් ලිවීමට පෙර ස්ථාපිත සහායකයා මත ලේබලය තහවුරු කරන්න.

පිළිගත් එක් පිවිසුමක් සහ ප්‍රතික්ෂේප කළ එකක් සමඟ වෙනස ඔප්පු කරන්න

ඔබ ඔප්පු කළ මායිම පමණක් වෙනස් කරන්න, පසුව ප්‍රතිඵල දෙකම පරීක්ෂා කරන්න. සත්‍යාපනය විය යුතු ගිණුම සාර්ථක විය යුතුය, වැරදි මුරපදයක් ඇති ගිණුම තවමත් අසාර්ථක විය යුතුය. සෑම උත්සාහයක්ම සාර්ථක කරන වෙනසක් සත්‍යාපනය අලුත්වැඩියා කිරීම වෙනුවට ඉවත් කර ඇත.

සැබෑ සම්බන්ධතා උත්සාහයක් කර වහාම journal කියවන්න. අලුත්වැඩියාව ඔප්පු කරන පේළිය එම උත්සාහය සඳහා pam_unix(openvpn:auth) සටහනයි: එය සත්‍යාපනය සාර්ථක ලෙස සඳහන් කළ යුතුය, සහ කිසිදු AVC වාර්තාවක් එම තත්පරයම දරණු නොලැබේ.

journalctl -u [email protected] -n 30 --no-pager
ss -tnp | grep openvpn

ක්‍රියාකාරී උමං මාර්ගයකට නැවත සම්බන්ධ වීමද අවශ්‍යය, මන්ද sandbox වෙනස්කම් දෙවන සම්බන්ධතාව පළමු එකට වඩා බොහෝ විට බිඳ දමයි. නැවත සම්බන්ධ වීමෙන් පසු ස්ථාපිත සොකට් එක පරීක්ෂා කර එම unit එකම තවමත් එයට සේවය කරන බව තහවුරු කරන්න.

අදාළ ලිපි