ටර්මිනලයේ root, SELinux යටතේ ප්රතික්ෂේප: hook ඇයි අසාර්ථක වන්නේ
අතින් පරිපූර්ණව ක්රියා කරන hook එකක් සේවාව තුළ ප්රතික්ෂේප විය හැක. සංස්කරණයට පෙර ක්රියාවලියේ වසම, ගොනුවේ ලේබලය සහ ප්රතික්ෂේප වූ අවසරය සසඳන්න.
ඔබ up ස්ක්රිප්ටය root ලෙස ධාවනය කරයි, එය සම්පූර්ණ වේ, සේවාව එය අමතන විට එම ස්ක්රිප්ටයම අසාර්ථක වේ. ගොනු අවසරවල කිසිවක් වෙනස් වී නැත, එබැවින් ඊළඟ ස්වාභාවික පියවර වන්නේ ඒවා නැවත ලිහිල් කිරීමයි, එය කිසිවක් නිවැරදි නොකරයි. SELinux සත්කාරකයක තීරණාත්මක සාධකය බොහෝ විට ක්රියාවලිය කවුද යන්න නොව එය කුමන වසමක ධාවනය වේද යන්නයි, සීමිත වසමක් තුළ root ද සීමිතවම පවතී.
එකම විධානය, වෙනස් ආරක්ෂක වසම් දෙකක්
වර්ග බලාත්මක කිරීම මූල වසම, ඉලක්ක ලේබලය සහ ඉල්ලා සිටින ක්රියාව එකට ඇගයයි. ඔබේ ටර්මිනල සැසිය අසීමිත හෝ පරිපාලන වසමක ධාවනය වන අතර, ඩේමන් එහි ඒකකයට පවරා ඇති වසමේ ධාවනය වේ. එබැවින් සමාන විධාන වෙනස් තීරණ ලබා දෙන අතර, මෙම වෙනස ප්රතිපත්තියේ දෝෂයක් නොව චේතනිකය.
එබැවින් ධාවන දෙක සැසඳීම ඔවුන්ගේ සන්දර්භ සසඳන්නේ නම් පමණක් ප්රයෝජනවත් වේ. එකම විධානය shell එකෙන් සහ hook එකෙන් ධාවනය කරන්න; shell අනුවාදය බයිනරිය පවතින බවත් තර්ක නිවැරදි බවත් ඔප්පු කරයි, නමුත් සේවාවට එය ධාවනය කිරීමට අවසර තිබේද යන්න ගැන කිසිවක් ඔප්පු නොකරයි. ආකාර දෙකෙන්ම ධාවනය කර පිටවීමේ කේත පමණක් නොව වසම් සසඳන්න. එම සැසඳීමයි අපැහැදිලි අවසර පැමිණිල්ලක් එක් වසමක් සහ එක් ලේබලයක් ගැන නිශ්චිත ප්රශ්නයක් බවට හරවන්නේ.
මෙම දෝෂයේ සම්භාව්ය ස්වරූපය වන්නේ බාහිර මෙවලමක් අමතන සහායකයකි. hook එකටම අවසර තිබිය හැකි නමුත්, එය අමතන මෙවලම සේවා වසමට ධාවනය කළ නොහැකි ලේබලයක් දරයි, නැතහොත් ලේබලය තහනම් කරන නාමාවලියකට ලියයි.
hook දෝෂය අසල AVC වාර්තාව කියවන්න
AVC ප්රතික්ෂේපය නඩුව තීරණය කරන ක්ෂේත්ර නම් කරයි: ක්රියාවලියේ මූල සන්දර්භය, වස්තුවේ ඉලක්ක සන්දර්භය, වස්තු පන්තිය සහ ප්රතික්ෂේප වූ නිශ්චිත අවසරය. න්යායක් ගොඩනැගීමට පෙර හතරම කියවන්න, මන්ද ක්රියාත්මක කිරීමේ ප්රතික්ෂේපය සහ ලිවීමේ ප්රතික්ෂේපය සම්පූර්ණයෙන් වෙනස් අලුත්වැඩියා ඇති බැවිනි.
ausearch -m AVC,USER_AVC -ts recent
ls -Z /usr/local/sbin/vpn-up.sh
ps -eZ | grep openvpn
මූල සන්දර්භය සේවාව සැබවින්ම ධාවනය වන වසමට ගැළපිය යුතු අතර, ඉලක්ක සන්දර්භය ක්රියාව ස්පර්ශ කළ ගොනුවේ හෝ නාමාවලියේ ලේබලයට ගැළපිය යුතුය. ඔබ හඹා යන දෝෂයට ඉන් එකක් හෝ නොගැළපේ නම්, ඔබ වෙනත් සිදුවීමක් කියවමින් සිටී.
වාර්තාව අසල ප්රතිපත්ති අනුවාදය සහ ධාවනය කළ හැකි ගොනුවේ නිශ්චිත මාර්ගය සටහන් කරන්න. එක් බෙදාහැරීමක ප්රතිපත්තියේ පෙනෙන වසම් නාමය එම ස්ථාපනය ගැන සාක්ෂියකි, තවත් ගොඩනැගීමක් එම නීතිම ලබා දෙන බවට සහතිකයක් නොවේ. එම සන්දර්භයයි තවත් කෙනෙකුට ඔබේ නිගමනය ඔහුගේම සත්කාරකයේ ප්රතිනිර්මාණය කිරීමට ඉඩ දෙන්නේ. එය නොමැතිව වාර්තාව සාක්ෂියක් වෙනුවට ජනකතාවක් ලෙස කියවේ.
ලේබලය, වින්යාසය හෝ ප්රතිපත්තිය: අලුත්වැඩියා තුනක්
පළමු අලුත්වැඩියාව වන්නේ ගොනුවේ ස්ථාපිත ස්ථානයට නොගැළපෙන ලේබලයයි. cp සමඟ ස්ථානයට පිටපත් කළ හෝ සංස්කාරකයකින් ලියූ ස්ක්රිප්ටයකට සේවා වසමට භාවිත කළ නොහැකි පෙරනිමි ලේබලයක් තිබිය හැක, අපේක්ෂිත සන්දර්භය ප්රතිස්ථාපනය කිරීමෙන් ප්රතිපත්තිය ස්පර්ශ නොකර එය නිවැරදි වේ.
දෙවැන්න වින්යාසයයි. බෙදාහැරීම ක්රියාව ධාවනය කිරීමට ආධාරක ක්රමයක්, සහායකයා සඳහා ලේඛනගත නාමාවලියක් හෝ දැනටමත් එයට අවසර දෙන යාවත්කාලීන ප්රතිපත්ති පැකේජයක් ලබා දිය හැක. ඔබේ වින්යාසය ආධාරක එකට වෙනස් කිරීම ප්රතිපත්තියක් ලිවීමට වඩා ලාභදායී වන අතර යාවත්කාලීනවලට ඔරොත්තු දෙයි.
තෙවැන්න සැබවින්ම නොමැති නීතියක් වන අතර, එය අවසාන උපාය විය යුතුය. විගණන මෙවලම් සමඟ අපේක්ෂකයක් ජනනය කරන්න, එය සැබවින්ම අවසර දෙන දේ කියවන්න, ඔබ නිරීක්ෂණය කළ ක්රියාවට සහ වසමට එය සීමා කරන්න, නිෂ්පාදනයට ළං වීමට පෙර වෙනත් අයෙකුගෙන් එය සමාලෝචනය කරවන්න.
පැරණි allow මොඩියුලය පිළිතුර නොවන්නේ ඇයි
මෙම දෝෂය සඳහා සෙවුම් ප්රතිඵල සූදානම් මොඩියුලවලින් පිරී ඇත, බොහෝ විට hook තවදුරටත් අමතන්නේ නැති මෙවලමක් සඳහා. එකක් ස්ථාපනය කිරීම ඔබේ ප්රතික්ෂේපයට කිසිදු සම්බන්ධයක් නැති අවසර ලබා දෙන අතර, ස්ථිර සිදුරක් එකතු කරමින් සැබෑ නොගැළපීම එහි තැනම තබයි.
එය ඊළඟ අසාර්ථකත්වය ද සඟවයි. පුළුල් ක්රියා පන්තියකට අවසර දෙන මොඩියුලයක් මෙම දෝෂය අතුරුදහන් කර ඊළඟ එක ආරෝපණය කිරීම වඩාත් අපහසු දෙයක් බවට හරවයි. පසුව මොඩියුලය ඉවත් කිරීම ද කිසිවෙකු කාලසටහන්ගත කිරීමට නොකැමති වෙනසකි, එබැවින් කෙටි මාර්ගය ස්ථිර වීමට නැඹුරු වේ.
විනයගත සැසඳීම වන්නේ ඔබට කියවිය හැකි ප්රතික්ෂේපය සහ ඔබ යෝජනා කරන වෙනස අතරය. Red Hat හි SELinux ගැටලු විසඳීමේ මාර්ගෝපදේශය ලේබල්කරණ සහ වින්යාස පරීක්ෂණ ජනනය කළ ප්රතිපත්තියට පෙර තබන්නේ හරියටම මෙම හේතුව නිසාය. වාර්තාවේ අනුරූප ප්රතික්ෂේපයක් නොමැති නම්, SELinux බොහෝ විට ඔබේ ගැටලුව නොවේ, සහ මාර්ග, sandbox හෝ අවසර ගැටලු තවමත් විවෘතය.