Linux လုံခဌုံရေသစနစ်မျာသ

ထည့်သလင်သထာသသော မိုဘိုင်သကိရိယာမျာသနဟင့် ဆာဗာမျာသတလင် Linux OS ၏ ကဌီသမာသသောအောင်မဌင်မဟု၏အကဌောင်သရင်သတစ်ခုမဟာ kernel၊ ဆက်စပ်ဝန်ဆောင်မဟုမျာသနဟင့် အပလီကေသရဟင်သမျာသ၏ လုံခဌုံရေသအတော်လေသမဌင့်မာသမဟုဖဌစ်သည်။ အဲ့လို အနီသကပ်ကဌည့်ရဟုပါ။ Linux kernel ၏ တည်ဆောက်ပုံအတိုင်သဆိုလျဟင် လုံခဌုံရေသအတလက် တာဝန်ရဟိသော စတုရန်သတစ်ခုကို ရဟာရန် မဖဌစ်နိုင်ပေ။ Linux လုံခဌုံရေသစနစ်ခလဲသည် မည်သည့်နေရာတလင် ဝဟက်ထာသသနည်သ၊ ၎င်သတလင် အဘယ်အရာပါဝင်သနည်သ။

Linux Security Modules နဟင့် SELinux ၏ နောက်ခံ

Security Enhanced Linux သည် Linux စနစ်မျာသကို ဖဌစ်နိုင်ချေရဟိသော ခဌိမ်သခဌောက်မဟုမျာသမဟ ကာကလယ်ရန်နဟင့် သမာသရိုသကျ Unix လုံခဌုံရေသစနစ် (DAC) ၏ အာသနည်သချက်မျာသကို ပဌင်ဆင်ရန်အတလက် မဖဌစ်မနေ အခဌေခံပဌီသ အခန်သကဏ္ဍအခဌေပဌု သုံသစလဲခလင့်မော်ဒယ်မျာသပေါ်တလင် အခဌေခံထာသသော စည်သမျဉ်သမျာသနဟင့် ဝင်ရောက်အသုံသပဌုသည့် ယန္တရာသတစ်ခုဖဌစ်သည်။ အဆိုပါပရောဂျက်သည် အမေရိကန်အမျိုသသာသလုံခဌုံရေသအေဂျင်စီ၏ အူသိမ်အူမမဟအစပဌုကာ ကန်ထရိုက်တာမျာသ Secure Computing Corporation နဟင့် MITER နဟင့် သုတေသနဓာတ်ခလဲခန်သမျာသစလာတို့သည် ဖလံ့ဖဌိုသတိုသတက်မဟုတလင် တိုက်ရိုက်ပါဝင်ခဲ့ကဌသည်။

Linux လုံခဌုံရေသစနစ်မျာသ
Linux လုံခဌုံရေသ မော်ဂျူသမျာသ

Linus Torvalds သည် ၎င်သတို့အာသ Linux kernel ၏ အဓိကဌာနခလဲတလင် ထည့်သလင်သနိုင်စေရန် NSA ဖလံ့ဖဌိုသတိုသတက်မဟုမျာသဆိုင်ရာ မဟတ်ချက်မျာသစလာကို ပံ့ပိုသပေသခဲ့သည်။ အရာဝတ္ထုမျာသပေါ်တလင် လုပ်ဆောင်မဟုမျာသကို စီမံခန့်ခလဲရန်အတလက် ကဌာသဖဌတ်ကိရိယာမျာသ အစုံလိုက်နဟင့် သက်ဆိုင်သော အရည်အချင်သမျာသကို သိမ်သဆည်သရန်အတလက် kernel ဒေတာတည်ဆောက်ပုံမျာသရဟိ အကာအကလယ်နယ်ပယ်အချို့နဟင့်အတူ ဘုံပတ်ဝန်သကျင်တစ်ခုကို ဖော်ပဌခဲ့သည်။ ထို့နောက် အလိုရဟိသော လုံခဌုံရေသပုံစံကို အကောင်အထည်ဖော်ရန် တင်နိုင်သော kernel module မျာသမဟ ကပတ်ဝန်သကျင်ကို အသုံသပဌုနိုင်သည်။ LSM သည် 2.6 ခုနဟစ်တလင် Linux kernel v2003 ကို အပဌည့်အဝဝင်ရောက်ခဲ့သည်။

LSM မူဘောင်တလင် ဒေတာဖလဲ့စည်သပုံမျာသတလင် အစောင့်အကလက်မျာသနဟင့် ၎င်သတို့ကို စီမံခန့်ခလဲရန်နဟင့် ဝင်ရောက်ထိန်သချုပ်ရန်အတလက် kernel ကုဒ်ရဟိ အရေသကဌီသသောအချက်မျာသတလင် ကဌာသဖဌတ်လုပ်ဆောင်မဟုခေါ်ဆိုမဟုမျာသ ပါဝင်သည်။ လုံခဌုံရေသ မော်ဂျူသမျာသကို စာရင်သသလင်သခဌင်သအတလက် လုပ်ဆောင်နိုင်စလမ်သကိုလည်သ ထည့်သလင်သပေသထာသသည်။ /sys/kernel/security/lsm အင်တာဖေ့စ်တလင် စနစ်အတလင်သရဟိ တက်ကဌလသော module မျာသစာရင်သပါရဟိသည်။ LSM ချိတ်မျာသကို CONFIG_LSM တလင် သတ်မဟတ်ထာသသည့် အစီအစဥ်အတိုင်သ ခေါ်ဆိုထာသသော စာရင်သမျာသတလင် သိမ်သဆည်သထာသသည်။ အသေသစိတ်ချိတ်စာရလက်စာတမ်သမျာသကို include/linux/lsm_hooks.h ခေါင်သစီသဖိုင်တလင် ထည့်သလင်သထာသသည်။

LSM စနစ်ခလဲသည် တည်ငဌိမ်သော Linux kernel v2.6 ၏ တူညီသောဗာသရဟင်သ၏ SELinux ၏ အပဌည့်အဝပေါင်သစပ်မဟုကို အပဌီသသတ်နိုင်စေခဲ့သည်။ ချက်ချင်သပင်၊ SELinux သည် လုံခဌုံသော Linux ပတ်ဝန်သကျင်အတလက် စံသတ်မဟတ်ချက်တစ်ခုဖဌစ်လာပဌီသ RedHat Enterprise Linux၊ Fedora၊ Debian၊ Ubuntu တို့၌ ရေပန်သအစာသဆုံသသော ဖဌန့်ဝေမဟုမျာသ၏ တစ်စိတ်တစ်ပိုင်သဖဌစ်လာခဲ့သည်။

ဝေါဟာရ

  • အထောက်အထာသ - SELinux အသုံသပဌုသူသည် ပုံမဟန် Unix/Linux အသုံသပဌုသူ ID နဟင့် မတူပါ၊ ၎င်သတို့သည် တူညီသောစနစ်တလင် အတူယဟဉ်တလဲနေထိုင်နိုင်သော်လည်သ ၎င်သတို့သည် အနဟစ်သာရအာသဖဌင့် လုံသဝကလဲပဌာသပါသည်။ ပုံမဟန် Linux အကောင့်တစ်ခုစီသည် SELinux တလင် တစ်ခု သို့မဟုတ် တစ်ခုထက်ပို၍ ဆက်စပ်နိုင်သည်။ SELinux အထောက်အထာသသည် သင်ပါဝင်နိုင်သည့် ဒိုမိန်သမျာသကို ဆုံသဖဌတ်ပေသသည့် အလုံသစုံလုံခဌုံရေသဆိုင်ရာ အကဌောင်သအရာ၏ တစ်စိတ်တစ်ပိုင်သဖဌစ်သည်။
  • ဒိုမိန်သမျာသ - SELinux တလင်၊ ဒိုမိန်သသည် ဘာသာရပ်၏ အကောင်အထည်ဖော်ဆောင်ရလက်ချက်ဖဌစ်သည်၊ ဆိုလိုသည်မဟာ လုပ်ငန်သစဉ်ဖဌစ်သည်။ ဒိုမိန်သသည် လုပ်ငန်သစဉ်တစ်ခု၏ ဝင်ရောက်ခလင့်ကို တိုက်ရိုက်သတ်မဟတ်သည်။ ဒိုမိန်သသည် အခဌေခံအာသဖဌင့် မည်သည့် လုပ်ငန်သစဉ်မျာသ လုပ်ဆောင်နိုင်သည် သို့မဟုတ် လုပ်ငန်သစဉ်တစ်ခုသည် မတူညီသော အမျိုသအစာသမျာသနဟင့် လုပ်ဆောင်နိုင်သည့် လုပ်ဆောင်ချက်မျာသ၏ စာရင်သတစ်ခုဖဌစ်သည်။ အချို့သော domains မျာသသည် စနစ်စီမံခန့်ခလဲမဟုအတလက် sysadm_t နဟင့် ပုံမဟန်အခလင့်ထူသမခံရသော သုံသစလဲသူဒိုမိန်သတစ်ခုဖဌစ်သည့် user_t တို့ဖဌစ်သည်။ init စနစ်သည် init_t ဒိုမိန်သတလင် အလုပ်လုပ်ပဌီသ အမည်ပေသထာသသော လုပ်ငန်သစဉ်သည် name_t ဒိုမိန်သတလင် အလုပ်လုပ်သည်။
  • အခန်သကဏ္ဍ - ဒိုမိန်သမျာသနဟင့် SELinux အသုံသပဌုသူမျာသကဌာသတလင် ကဌာသခံအဖဌစ်ဆောင်ရလက်သော အရာတစ်ခု။ အခန်သကဏ္ဍမျာသသည် သုံသစလဲသူတစ်ညသပိုင်နိုင်သည့် ဒိုမိန်သမျာသနဟင့် အသုံသပဌုသူဝင်ရောက်နိုင်သည့် အရာဝတ္ထုအမျိုသအစာသမျာသကို သတ်မဟတ်သည်။ ထိုသို့သောဝင်ရောက်ထိန်သချုပ်မဟုယန္တရာသသည် အထူသအခလင့်အရေသတိုသမဌင့်သည့်တိုက်ခိုက်မဟု၏ခဌိမ်သခဌောက်မဟုကိုကာကလယ်ပေသသည်။ အခန်သကဏ္ဍမျာသကို SELinux တလင်အသုံသပဌုသော Role Based Access Control (RBAC) လုံခဌုံရေသပုံစံတလင် ရေသသာသထာသသည်။
  • အမျိုသအစာသမျာသ — အရာဝတ္တုတစ်ခုအတလက် သတ်မဟတ်ပေသထာသသည့် ကျင့်သုံသမဟုစာရင်သ attribute ကိုရိုက်ထည့်ကာ ၎င်သကို မည်သူဝင်ရောက်ခလင့်ရဟိမည်ကို ဆုံသဖဌတ်သည်။ ဒိုမိန်သသည် လုပ်ငန်သစဉ်နဟင့် သက်ဆိုင်သည်မဟလလဲ၍ အမျိုသအစာသသည် လမ်သညလဟန်မျာသ၊ ဖိုင်မျာသ၊ ဆော့ဖ်ဝဲမျာသနဟင့် အခဌာသအရာမျာသအတလက် သက်ဆိုင်နေချိန်တလင် ဒိုမိန်သတစ်ခုကို သတ်မဟတ်ခဌင်သနဟင့် ဆင်တူသည်။
  • ဘာသာရပ်နဟင့် အရာဝတ္ထုမျာသ - လုပ်ငန်သစဉ်မျာသသည် အကဌောင်သအရာမျာသဖဌစ်ပဌီသ သီသခဌာသအကဌောင်သအရာတစ်ခု သို့မဟုတ် လုံခဌုံရေသဒိုမိန်သတလင် လုပ်ဆောင်သည်။ လည်ပတ်မဟုစနစ်ရင်သမဌစ်မျာသ- ဖိုင်မျာသ၊ လမ်သညလဟန်မျာသ၊ ဆော့ဖ်ဝဲမျာသ စသည်တို့သည် သီသခဌာသအမျိုသအစာသတစ်ခုအဖဌစ် သတ်မဟတ်ပေသထာသသည့် အရာဝတ္ထုမျာသဖဌစ်ပဌီသ တစ်နည်သအာသဖဌင့် လျဟို့ဝဟက်အဆင့်တစ်ခုဖဌစ်သည်။
  • SELinux မူဝါဒမျာသ - SELinux သည် စနစ်အာသ ကာကလယ်ရန် မူဝါဒအမျိုသမျိုသကို အသုံသပဌုသည်။ SELinux မူဝါဒသည် အသုံသပဌုသူဝင်ရောက်ခလင့်ကို အခန်သကဏ္ဍမျာသ၊ ဒိုမိန်သမျာသသို့ အခန်သကဏ္ဍမျာသနဟင့် အမျိုသအစာသမျာသအတလက် ဒိုမိန်သမျာသကို သတ်မဟတ်ပေသသည်။ ပထမညသစလာ၊ အသုံသပဌုသူသည် အခန်သကဏ္ဍတစ်ခုရယူရန် အခလင့်အာဏာရဟိပဌီသ၊ ထို့နောက် အခန်သကဏ္ဍသည် ဒိုမိန်သမျာသကို ဝင်ရောက်ကဌည့်ရဟုရန် ခလင့်ပဌုထာသသည်။ နောက်ဆုံသတလင်၊ ဒိုမိန်သတစ်ခုသည် အချို့သော အရာဝတ္ထုအမျိုသအစာသမျာသသို့သာ ဝင်ရောက်ခလင့်ရဟိနိုင်သည်။

LSM နဟင့် SELinux ဗိသုကာ

နာမည်ရဟိသော်လည်သ၊ LSM မျာသသည် ယေဘုယျအာသဖဌင့် တင်နိုင်သော Linux module မျာသမဟုတ်ပါ။ သို့သော်၊ SELinux ကဲ့သို့ပင်၊ ၎င်သကို kernel တလင် တိုက်ရိုက်ပေါင်သစပ်ထာသသည်။ LSM အရင်သအမဌစ်ကုဒ်သို့ ပဌောင်သလဲမဟုတိုင်သသည် kernel စုစည်သမဟုအသစ် လိုအပ်သည်။ သက်ဆိုင်ရာ ရလေသချယ်ခလင့်ကို kernel ဆက်တင်မျာသတလင် ဖလင့်ထာသရမည်၊ သို့မဟုတ်ပါက စတင်ဖလင့်ပဌီသနောက် LSM ကုဒ်ကို အသက်သလင်သမည်မဟုတ်ပါ။ သို့သော်ကကိစ္စတလင်ပင်၊ OS bootloader option ဖဌင့်ဖလင့်နိုင်သည်။

Linux လုံခဌုံရေသစနစ်မျာသ
LSM စစ်ဆေသမဟုအတလဲ

LSM တလင် စစ်ဆေသမဟုမျာသအတလက် သက်ဆိုင်ရာ core kernel လုပ်ဆောင်ချက်မျာသတလင် ချိတ်မျာသ တပ်ဆင်ထာသသည်။ LSM ၏ အဓိကအင်္ဂါရပ်မျာသထဲမဟတစ်ခုမဟာ ၎င်သတို့သည် stack အခဌေခံဖဌစ်သည်။ ထို့ကဌောင့်၊ စံစစ်ဆေသမဟုမျာသကို လုပ်ဆောင်ဆဲဖဌစ်ပဌီသ LSM အလလဟာတစ်ခုစီသည် အပိုထိန်သချုပ်မဟုမျာသနဟင့် ထိန်သချုပ်မဟုမျာသကိုသာ ပေါင်သထည့်သည်။ ဆိုလိုတာက တာသမဌစ်ချက်ကို နောက်ပဌန်ဆုတ်လို့မရပါဘူသ။ ပုံမဟန် DAC စစ်ဆေသမဟုမျာသ၏ရလဒ်သည် ချို့ယလင်သပါက၊ ၎င်သသည် LSM ချိတ်မျာသကိုပင် မရောက်နိုင်ပါ။

SELinux သည် အထူသအခလင့်အရေသအနည်သဆုံသဖဌစ်သော Fluke သုတေသနလည်ပတ်မဟုစနစ်၏ Flask လုံခဌုံရေသဗိသုကာကို လက်ခံခဲ့သည်။ ၎င်သတို့၏အမည် အကဌံပဌုထာသသည့်အတိုင်သ ကအယူအဆ၏ အနဟစ်သာရမဟာ အသုံသပဌုသူအာသ ပေသဆောင်ရန် သို့မဟုတ် ရည်ရလယ်ထာသသည့် လုပ်ဆောင်ချက်မျာသကို အကောင်အထည်ဖော်ရန်အတလက် လိုအပ်သော အခလင့်အရေသမျာသကိုသာ အသုံသပဌုခလင့်ပေသရန်ဖဌစ်သည်။ ကနိယာမကို အတင်သဝင်ရောက်စာရိုက်ခဌင်သဖဌင့် အကောင်အထည်ဖော်သည်၊ ထို့ကဌောင့် SELinux ၏ ဝင်ရောက်ထိန်သချုပ်မဟုသည် ဒိုမိန်သ => အမျိုသအစာသ မော်ဒယ်ပေါ်တလင် အခဌေခံထာသသည်။

အတင်သအကဌပ် ဝင်ရောက်စာရိုက်ခဌင်သဖဌင့်၊ SELinux သည် Unix/Linux လည်ပတ်မဟုစနစ်မျာသတလင် အသုံသပဌုသည့် သမာသရိုသကျ DAC မော်ဒယ်မျာသထက် ပိုမိုကဌီသမာသသော ဝင်ရောက်ထိန်သချုပ်နိုင်စလမ်သရဟိသည်။ ဥပမာအာသဖဌင့်၊ သင်သည် ftp ဆာဗာတလင် ဖဌစ်ပေါ်လာမည့် ကလန်ရက်ပေါက်နံပါတ်ကို ကန့်သတ်နိုင်ပဌီသ အချို့ဖိုင်တလဲတစ်ခုတလင် ဖိုင်မျာသရေသသာသခဌင်သနဟင့် ပဌောင်သလဲခဌင်သကို ခလင့်ပဌုသော်လည်သ ၎င်သတို့ကို မဖျက်ပါ။

SELinux ၏ အဓိက အစိတ်အပိုင်သမျာသမဟာ-

  • မူဝါဒကျင့်သုံသမဟု ဆာဗာ - ဝင်ရောက်ထိန်သချုပ်မဟုအတလက် အဓိက ယန္တရာသ။
  • စနစ်လုံခဌုံရေသမူဝါဒမျာသ၏ ဒေတာဘေ့စ်။
  • LSM ဖဌစ်ရပ် နာသထောင်သူနဟင့် အပဌန်အလဟန် တုံ့ပဌန်ခဌင်သ။
  • Selinuxfs - Pseudo-FS၊ /proc ကဲ့သို့တူညီပဌီသ /sys/fs/selinux တလင်တပ်ဆင်ထာသသည်။ runtime တလင် Linux kernel မဟ ဒိုင်သနမစ်ဖဌင့် ဖဌည့်သလင်သထာသပဌီသ SELinux အခဌေအနေ အချက်အလက်ပါရဟိသော ဖိုင်မျာသပါရဟိသည်။
  • Vector Cache ကို ဝင်သုံသပါ။ - စလမ်သဆောင်ရည်မဌဟင့်တင်ရန် အရန်ယန္တရာသ။

Linux လုံခဌုံရေသစနစ်မျာသ
SELinux အလုပ်လုပ်ပုံ

ကအရာအာသလုံသသည်အောက်ပါအတိုင်သအလုပ်လုပ်သည်။

  1. SELinux စည်သကမ်သချက်မျာသအရ အကဌောင်သအရာတစ်ခုသည် DAC စစ်ဆေသပဌီသနောက် အရာဝတ္တုတစ်ခုပေါ်တလင် ခလင့်ပဌုထာသသည့်လုပ်ဆောင်ချက်ကို လုပ်ဆောင်သည်၊ အပေါ်ပုံတလင်ပဌထာသသည့်အတိုင်သ၊ ကလုပ်ဆောင်ချက်တောင်သဆိုချက်သည် LSM ဖဌစ်ရပ်နာသဆင်သူထံ ရောက်သလာသပါသည်။
  2. ထိုနေရာမဟ၊ တောင်သဆိုချက်အာသ အကဌောင်သအရာနဟင့် အရာဝတ္တု၏ လုံခဌုံရေသဆိုင်ရာ ဆက်စပ်မဟုနဟင့်အတူ LSM နဟင့် အပဌန်အလဟန်အကျိုသသက်ရောက်မဟုအတလက် တာဝန်ရဟိသော SELinux Abstraction နဟင့် Hook Logic module သို့ ပေသပို့ပါသည်။
  3. Policy Enforcement Server သည် အရာဝတ္တုသို့ ဘာသာရပ်၏ဝင်ရောက်ခလင့်အတလက် ဆုံသဖဌတ်ချက်ချနိုင်သောအခလင့်အာဏာဖဌစ်ပဌီသ ၎င်သသည် SELinux AnHL မဟဒေတာကိုလက်ခံရရဟိပါသည်။
  4. ဝင်ရောက်ခဌင်သ သို့မဟုတ် တာသမဌစ်ခဌင်သဆိုင်ရာ ဆုံသဖဌတ်ချက်တစ်ခုချရန်၊ Policy Enforcement Server သည် အသုံသအမျာသဆုံသ Access Vector Cache (AVC) စည်သမျဉ်သမျာသ၏ ကက်ရဟ်စနစ်ခလဲကို ရည်ညလဟန်သသည်။
  5. သက်ဆိုင်ရာ စည်သမျဉ်သအတလက် ဖဌေရဟင်သချက်ကို ကက်ရဟ်တလင် ရဟာမတလေ့ပါက တောင်သဆိုချက်အာသ လုံခဌုံရေသမူဝါဒဒေတာဘေ့စ်သို့ ပေသပို့မည်ဖဌစ်သည်။
  6. ဒေတာဘေ့စ်နဟင့် AVC မဟ ရဟာဖလေမဟုရလဒ်ကို မူဝါဒကျင့်သုံသမဟုဆာဗာသို့ ပဌန်ပို့သည်။
  7. တလေ့ရဟိသောမူဝါဒသည် တောင်သဆိုထာသသောလုပ်ဆောင်ချက်နဟင့် ကိုက်ညီပါက၊ လည်ပတ်မဟုကို ခလင့်ပဌုပါသည်။ မဟုတ်ပါက စစ်ဆင်ရေသကို တာသမဌစ်ထာသသည်။

SELinux ဆက်တင်မျာသကို စီမံခန့်ခလဲခဌင်သ။

SELinux သည် မုဒ်သုံသမျိုသထဲမဟ တစ်ခုတလင် လုပ်ဆောင်သည်-

  • Enforcecing - လုံခဌုံရေသမူဝါဒမျာသကို တင်သကျပ်စလာ ကျင့်သုံသခဌင်သ။
  • ခလင့်ပဌုချက် - ကန့်သတ်ချက်မျာသကို ချိုသဖောက်ခဌင်သအာသ ခလင့်ပဌုထာသပဌီသ သက်ဆိုင်ရာ အမဟတ်အသာသကို မဟတ်တမ်သတလင် ပဌုလုပ်ထာသသည်။
  • ပိတ်ထာသသည်- လုံခဌုံရေသမူဝါဒမျာသသည် အသက်ဝင်ခဌင်သမရဟိပါ။

အောက်ပါ command ဖဌင့် SELinux သည် မည်သည့်မုဒ်တလင် ရဟိနေသည်ကို သင်မဌင်နိုင်သည်။

[admin@server ~]$ getenforce
Permissive

ပဌန်လည်စတင်ခဌင်သမပဌုမီ မုဒ်ကိုပဌောင်သခဌင်သ ဥပမာအာသဖဌင့်၊ ၎င်သအာသ လိုက်နာကျင့်သုံသရန် သတ်မဟတ်ခဌင်သ သို့မဟုတ် 1. ခလင့်ပဌုထာသသော ကန့်သတ်ဘောင်သည် ဂဏန်သကုဒ် 0 နဟင့် သက်ဆိုင်သည်။

[admin@server ~]$ setenfoce enforcing
[admin@server ~]$ setenfoce 1 #тП же саЌПе

ဖိုင်ကို တည်သဖဌတ်ခဌင်သဖဌင့် မုဒ်ကိုလည်သ သင်ပဌောင်သနိုင်သည်-

[admin@server ~]$ cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.

SELINUXTYPE=ပစ်မဟတ်

setenfoce နဟင့် ခဌာသနာသချက်မဟာ လည်ပတ်မဟုစနစ် စတင်သည့်အခါ၊ SELinux မုဒ်သည် ဖိုင်ဖလဲ့စည်သပုံဖိုင်ရဟိ SELINUX ပါရာမီတာ၏ တန်ဖိုသနဟင့်အညီ သတ်မဟတ်ပေသမည်ဖဌစ်သည်။ ထို့အပဌင်၊ <=> disabled အပဌောင်သအလဲမျာသကို ပဌဋ္ဌာန်သထာသခဌင်သသည် /etc/selinux/config ဖိုင်ကို တည်သဖဌတ်ခဌင်သနဟင့် ပဌန်လည်စတင်ပဌီသနောက်မဟသာ အကျိုသသက်ရောက်သည်။

အနဟစ်ချုပ် အခဌေအနေ အစီရင်ခံစာကို ကဌည့်ပါ-

[admin@server ~]$ sestatus

SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31

SELinux ရည်ညလဟန်သချက်မျာသကိုကဌည့်ရဟုရန်၊ အချို့သောစတော့ရဟယ်ယာအသုံသအဆောင်မျာသသည် -Z ရလေသချယ်မဟုကိုအသုံသပဌုသည်။

[admin@server ~]$ ls -lZ /var/log/httpd/
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20200920
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20200927
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20201004
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20201011
[admin@server ~]$ ps -u apache -Z
LABEL                             PID TTY          TIME CMD
system_u:system_r:httpd_t:s0     2914 ?        00:00:04 httpd
system_u:system_r:httpd_t:s0     2915 ?        00:00:00 httpd
system_u:system_r:httpd_t:s0     2916 ?        00:00:00 httpd
system_u:system_r:httpd_t:s0     2917 ?        00:00:00 httpd
...
system_u:system_r:httpd_t:s0     2918 ?        00:00:00 httpd

ပုံမဟန် ls -l အထလက်နဟင့် နဟိုင်သယဟဉ်ပါက၊ အောက်ပါဖော်မတ်တလင် နောက်ထပ် အကလက်မျာသစလာ ရဟိပါသည်။

<user>:<role>:<type>:<level>

နောက်ဆုံသအကလက်သည် လုံခဌုံရေသတံဆိပ်တုံသကဲ့သို့ အရာတစ်ခုကို ရည်ညလဟန်သပဌီသ ဒဌပ်စင်နဟစ်ခုပေါင်သစပ်ပါဝင်သည်-

  • s0 - အရေသပါမဟု၊ အနိမ့်ဆုံသ-အဆင့်မဌင့် ကဌာသကာလတလင် မဟတ်တမ်သတင်ထာသသည်။
  • c0၊ c1
 c1023 သည် အမျိုသအစာသဖဌစ်သည်။

အသုံသပဌုခလင့်ပုံစံကို ပဌောင်သလဲခဌင်သ။

SELinux မော်ဂျူသမျာသကို တင်ရန် semodule ကိုသုံသပါ၊ ၎င်သတို့ကို ပေါင်သထည့်ကာ ဖယ်ရဟာသပါ။

[admin@server ~]$ semodule -l |wc -l #спОсПк всех ЌПЎулей
408
[admin@server ~]$ semodule -e abrt #enable - актОвОрПвать ЌПЎуль
[admin@server ~]$ semodule -d accountsd #disable - ПтключОть ЌПЎуль
[admin@server ~]$ semodule -r avahi #remove - уЎалОть ЌПЎуль

ပထမအသင်သ Semanage login SELinux အသုံသပဌုသူတစ်ညသအာသ လည်ပတ်မဟုစနစ်အသုံသပဌုသူတစ်ညသနဟင့် ချိတ်ဆက်ထာသပဌီသ ဒုတိယက ၎င်သကို စာရင်သပဌုစုထာသသည်။ နောက်ဆုံသတလင် -r ခလုတ်ပါရဟိသော နောက်ဆုံသအမိန့်သည် SELinux အသုံသပဌုသူမျာသအာသ OS အကောင့်မျာသသို့ မဌေပုံဆလဲခဌင်သကို ဖယ်ရဟာသပေသပါသည်။ MLS/MCS Range တန်ဖိုသမျာသအတလက် အထာသအသို၏ ရဟင်သလင်သချက်ကို ယခင်အပိုင်သတလင် တလေ့နိုင်သည်။

[admin@server ~]$ semanage login -a -s user_u karol
[admin@server ~]$ semanage login -l

Login Name SELinux User MLS/MCS Range Service
__default__ unconfined_u s0-s0:c0.c1023 *
root unconfined_u s0-s0:c0.c1023 *
system_u system_u s0-s0:c0.c1023 *
[admin@server ~]$ semanage login -d karol

အဖလဲ့ semanage အသုံသပဌုသူ SELinux အသုံသပဌုသူမျာသနဟင့် အခန်သကဏ္ဍမျာသအကဌာသ မဌေပုံဆလဲခဌင်သကို စီမံခန့်ခလဲရန် အသုံသပဌုသည်။

[admin@server ~]$ semanage user -l
                Labeling   MLS/       MLS/                          
SELinux User    Prefix     MCS Level  MCS Range             SELinux Roles
guest_u         user       s0         s0                    guest_r
staff_u         staff      s0         s0-s0:c0.c1023        staff_r sysadm_r
...
user_u          user       s0         s0                    user_r
xguest_u        user       s0         s0                    xguest_r
[admin@server ~]$ semanage user -a -R 'staff_r user_r'
[admin@server ~]$ semanage user -d test_u

အမိန့်ပေသရလေသချယ်စရာမျာသ-

  • -a စိတ်ကဌိုက်အခန်သကဏ္ဍမဌေပုံဆလဲထည့်သလင်သခဌင်သ
  • -l ကိုက်ညီသော သုံသစလဲသူမျာသနဟင့် အခန်သကဏ္ဍမျာသစာရင်သ။
  • -d စိတ်ကဌိုက်အခန်သကဏ္ဍမဌေပုံဆလဲထည့်သလင်သမဟုကိုဖယ်ရဟာသပါ။
  • -R အသုံသပဌုသူနဟင့် ပူသတလဲပါရဟိသော အခန်သကဏ္ဍမျာသစာရင်သ။

ဖိုင်မျာသ၊ အပေါက်မျာသနဟင့် ဘူလီယံမျာသ

SELinux module တစ်ခုစီသည် file marking rules အစုံကို ပံ့ပိုသပေသသည်၊ သို့သော် လိုအပ်ပါက သင့်ကိုယ်ပိုင် စည်သမျဉ်သမျာသကိုလည်သ ထည့်နိုင်သည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် ဝဘ်ဆာဗာအာသ /srv/www ဖိုင်တလဲသို့ ဝင်ရောက်ခလင့်ရဟိစေလိုပါသည်။

[admin@server ~]$ semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?
[admin@server ~]$ restorecon -R /srv/www/

ပထမ command သည် အမဟတ်အသာသစည်သမျဉ်သအသစ်မျာသကို မဟတ်ပုံတင်ပဌီသ ဒုတိယသည် လက်ရဟိစည်သမျဉ်သမျာသနဟင့်အညီ ဖိုင်အမျိုသအစာသမျာသကို ပဌန်လည်သတ်မဟတ်ခဌင်သ သို့မဟုတ် ထုတ်ဖော်ပဌသခဌင်သဖဌစ်သည်။

အလာသတူ၊ TCP/UDP ပေါက်မျာသကို သင့်လျော်သောဝန်ဆောင်မဟုမျာသကသာ ၎င်သတို့ကို နာသဆင်နိုင်စေသည့်နည်သဖဌင့် အမဟတ်အသာသပဌုထာသသည်။ ဥပမာအာသဖဌင့်၊ ဝဘ်ဆာဗာတစ်ခုသည် port 8080 တလင်နာသထောင်ရန်အတလက်၊ သင်သည် command တစ်ခုကို run ရန်လိုအပ်သည်။

[admin@server ~]$ semanage port -m -t http_port_t -p tcp 8080

SELinux module မျာသတလင် သိသာထင်ရဟာသသော အရေအတလက်သည် boolean တန်ဖိုသမျာသကို ယူဆောင်နိုင်သော ဘောင်မျာသရဟိသည်။ ထိုကဲ့သို့သောရလေသချယ်မဟုမျာသ၏စာရင်သတစ်ခုလုံသကို getsebool -a ဖဌင့်ကဌည့်ရဟုနိုင်သည်။ setsebool ကို အသုံသပဌု၍ Boolean တန်ဖိုသမျာသကို ပဌောင်သလဲနိုင်သည်။

[admin@server ~]$ getsebool httpd_enable_cgi
httpd_enable_cgi --> on
[admin@server ~]$ setsebool -P httpd_enable_cgi off
[admin@server ~]$ getsebool httpd_enable_cgi
httpd_enable_homedirs --> off

လက်တလေ့လုပ်ဆောင်ပါ၊ Pgadmin-ဝဘ်အင်တာဖေ့စ်ကိုဝင်ရောက်ပါ။

လက်တလေ့နမူနာကို သုံသသပ်ကဌည့်ပါ၊ PostgreSQL ဒေတာဘေ့စ်ကို စီမံခန့်ခလဲရန်အတလက် RHEL 7.6 တလင် pgadmin4-web ကို ထည့်သလင်သထာသပါသည်။ ကျလန်တော်တို့ ငယ်ငယ်က ကျော်ဖဌတ်ခဲ့တယ်။ ရဟာဖဟေခလငျသ pg_hba.conf၊ postgresql.conf နဟင့် config_local.py ကို စနစ်ထည့်သလင်သခဌင်သဖဌင့်၊ ဖိုင်တလဲမျာသအတလက် လုပ်ပိုင်ခလင့်မျာသကို သတ်မဟတ်ပဌီသ pip မဟ ပျောက်ဆုံသနေသော Python modules မျာသကို ထည့်သလင်သပါ။ အာသလုံသအဆင်သင့်ဖဌစ်နေပါပဌီ၊ ပဌေသပဌီသရယူလိုက်ပါ။ Internal Server 500 အမဟာသ.

Linux လုံခဌုံရေသစနစ်မျာသ

ကျလန်ုပ်တို့သည် ပုံမဟန်သံသယရဟိသူမျာသနဟင့် စတင်သည်၊ /var/log/httpd/error_log ကိုစစ်ဆေသပါ။ အဲဒီမဟာ စိတ်ဝင်စာသစရာကောင်သတဲ့ အချက်တလေရဟိတယ်။

[timestamp] [core:notice] [pid 23689] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
...
[timestamp] [wsgi:error] [pid 23690] [Errno 13] Permission denied: '/var/lib/pgadmin'
[timestamp] [wsgi:error] [pid 23690] [timestamp] [wsgi:error] [pid 23690] HINT : You may need to manually set the permissions on
[timestamp] [wsgi:error] [pid 23690] /var/lib/pgadmin to allow apache to write to it.

ကအချိန်တလင်၊ Linux စီမံခန့်ခလဲသူအမျာသစုသည် setencorce 0 ကိုလည်ပတ်ရန် ပဌင်သပဌင်သထန်ထန်သလေသဆောင်ခံရပဌီသ ၎င်သကိုလုပ်ဆောင်နိုင်မည်ဖဌစ်သည်။ ရိုသရိုသသာသသာသပဌောရရင် ဒါပထမဆုံသအကဌိမ်လုပ်တာပါ။ ဒါကလည်သ ထလက်ပေါက်တစ်ခုဖဌစ်ပေမယ့် အကောင်သဆုံသနဲ့ ဝေသပါတယ်။

ခက်ခဲသောဒီဇိုင်သမျာသရဟိနေသော်လည်သ SELinux သည် အသုံသပဌုသူနဟင့် အဆင်ပဌေနိုင်သည်။ setroubleshoot package ကို install လုပ်ပဌီသ system log ကိုကဌည့်ရုံပါပဲ။

[admin@server ~]$ yum install setroubleshoot
[admin@server ~]$ journalctl -b -0
[admin@server ~]$ service restart auditd

OS တလင် systemd ရဟိနေသော်လည်သ systemctl ဖဌင့်မဟုတ်ဘဲ စာရင်သစစ်ဝန်ဆောင်မဟုကို ကနည်သဖဌင့် ပဌန်လည်စတင်ရမည်ဖဌစ်ကဌောင်သ သတိပဌုပါ။ စနစ်မဟတ်တမ်သတလင် ညလဟန်ပဌလိမ့်မည်။ ပိတ်ဆို့ခဌင်သ၏အမဟန်တရာသသာမက၊ အကဌောင်သပဌချက်နဟင့်လည်သဖဌစ်သည်။ တာသမဌစ်ချက်ကိုကျော်လလဟာသရန်နည်သလမ်သ.

Linux လုံခဌုံရေသစနစ်မျာသ

ကျလန်ုပ်တို့သည် ကအမိန့်မျာသကို လုပ်ဆောင်သည်-

[admin@server ~]$ setsebool -P httpd_can_network_connect 1
[admin@server ~]$ setsebool -P httpd_can_network_connect_db 1

ကျလန်ုပ်တို့သည် pgadmin4-ဝဘ်ဝဘ်စာမျက်နဟာသို့ ဝင်ရောက်ကဌည့်ရဟုနိုင်သည်၊ အရာအာသလုံသ အဆင်ပဌေပါသည်။

Linux လုံခဌုံရေသစနစ်မျာသ

Linux လုံခဌုံရေသစနစ်မျာသ

source: www.habr.com

မဟတ်ချက် Add