LFCA: Jinsi ya Kuboresha Usalama wa Mfumo wa Linux - Sehemu ya 20


Kama sisi sote tunajua, mtumiaji wa mizizi ni mfalme na hutumia haki zisizo na kikomo juu ya mfumo wa Linux. Hata hivyo watumiaji wasio wa mizizi ni mdogo kwa kazi za msingi. Kwa kuongezea, watumiaji wa sudo wanapewa tu kiwango fulani cha haki za mizizi kama inavyoonekana inafaa na mtumiaji wa mizizi kutekeleza kazi maalum zilizoinuliwa.

Matatizo hutokea wakati watumiaji wa kawaida wana ufikiaji usio na udhibiti wa rasilimali au wanakuzwa na mizizi bila kukusudia. Hii ni hatari kubwa ya usalama ambayo inaweza kusababisha ukiukaji, marekebisho yasiyotakikana, na katika hali mbaya zaidi, kuharibika kwa mfumo. Hatari nyingine inayoweza kutokea ni wakati faili zina ruhusa zisizo salama zaidi za faili. Kwa mfano, faili za kuwasha zilizo na ruhusa ya kuandika kwa watumiaji wa kimataifa zinaweza kurekebishwa au kuharibika kwa urahisi na kusababisha mfumo kuharibika.

[ Unaweza pia kupenda: Vidokezo Muhimu vya Kulinda Data na Linux ]

Ingawa tunaweza kutekeleza usalama halisi, mtandao na data, mtumiaji hasidi anaweza kukwepa hatua za usalama na kuchukua fursa ya mianya kama hiyo ya usalama. Ni kwa sababu hii kwamba usalama wa mfumo wa faili unapaswa kuchukuliwa kwa uzito. Inatoa safu ya ziada ya ulinzi katika uso wa mashambulizi au vitisho kutoka kwa wafanyikazi kutoka kwa wafanyikazi hasidi ambao sio lazima wachukue hatua nzito katika kukwepa hatua za usalama ili kufikia faili.

Katika usalama wa mfumo, tutazingatia mambo muhimu yafuatayo:

  • Haki za ufikiaji - Ruhusa za mtumiaji na kikundi.
  • Tekeleza sera za nenosiri kwa kutumia sehemu ya PAM.

Haki za Ufikiaji - Mgawanyo wa Mtumiaji na Kikundi

Labda umesikia kwamba kila kitu kwenye Linux kinachukuliwa kuwa faili. Na ikiwa sivyo, ni mchakato. Kila faili kwenye mfumo wa Linux inamilikiwa na mtumiaji na mtumiaji wa kikundi. Pia ina ruhusa za faili kwa kategoria 3 za watumiaji: Mtumiaji (u), Kikundi (g), na Wengine (o). Ruhusa zinawakilishwa katika kusoma, kuandika na kutekeleza ( rwx ) kwa kila aina ya mtumiaji.

rwx        rwx	     rwx
User       Group     Others

Kama inavyoonekana hapo awali, katika amri ya ls kama inavyoonyeshwa.

$ ls -l

Ili kurejea tu, ruhusa kawaida huwakilishwa na herufi tisa. Herufi tatu za kwanza zinawakilisha haki za ufikiaji za mtumiaji halisi anayemiliki faili. Seti ya pili ya wahusika inawakilisha ruhusa za mmiliki wa kikundi cha faili. Hatimaye, seti ya mwisho kwa watumiaji wengine au wa kimataifa. Wahusika hawa huwa katika mpangilio wa kusoma, kuandika, kutekeleza (rwx).

Baada ya ruhusa, tuna umiliki wa mtumiaji na kikundi, ikifuatiwa na ukubwa wa faili au saraka, tarehe ya urekebishaji, na mwishowe jina la faili.

Kubadilisha Ruhusa za Faili/Saraka na Umiliki

Ruhusa za mtumiaji za faili na saraka zinaweza kurekebishwa kama inavyoonekana inafaa. Utawala wa kidole gumba ni kutumia kanuni ya usalama ya upendeleo mdogo. Kwa urahisi, hakikisha watumiaji wanapata haki za ufikiaji wa chini zaidi au ruhusa zinazohitajika ili kukamilisha kazi.

Kanuni ya upendeleo mdogo huzuia watumiaji kwa majukumu fulani pekee na kwa kufanya hivyo, hupunguza hatari ya washambuliaji kufikia na kurekebisha data muhimu kwa kutumia akaunti ya mtumiaji ya kiwango cha chini. Pia hupunguza eneo la mashambulizi na kuzuia uenezaji wa programu hasidi endapo mvamizi atachukua udhibiti wa mfumo wako.

Kwa hivyo, ikiwa mtumiaji anahitaji tu kutazama yaliyomo kwenye faili au saraka, hawapaswi kupewa ruhusa za kutekeleza au kuandika. Katika kiwango cha msingi, toa tu ruhusa na umiliki mdogo unaohitajika na mtumiaji kukamilisha kazi. Tumeshughulikia jinsi ya kurekebisha ruhusa na umiliki wa mtumiaji kwenye faili/saraka kwa kutumia chmod na amri za chown katika mada ya msingi ya amri za Linux.

Ili msimamizi wa mfumo awe na wakati rahisi wa kudhibiti ruhusa, ruhusa maalum au haki za ufikiaji zinaweza kutolewa kwa saraka zote. Mojawapo ya ruhusa maalum ambazo zinaweza kutumika kuzuia ufutaji na urekebishaji wa faili au saraka ni sehemu ya kunata.

Katika hali ambapo saraka iliyoshirikiwa inaweza kufikiwa na watumiaji wote kwenye mfumo au mtandao, kuna uwezekano wa hatari kwamba baadhi ya watumiaji wanaweza kufuta au kurekebisha faili zilizo ndani ya saraka. Hii haihitajiki ikiwa unataka kudumisha uadilifu wa yaliyomo kwenye saraka. Na hapa ndipo sehemu ya kunata inapoingia.

Nata kidogo ni ruhusa maalum ya faili iliyowekwa kwenye faili au saraka nzima. Inampa tu mmiliki wa faili/saraka hiyo ruhusa ya kufuta au kufanya mabadiliko kwenye faili au saraka yaliyomo. Hakuna mtumiaji mwingine anayeweza kufuta au kurekebisha faili/saraka. Ina thamani ya mfano ya t na thamani ya nambari ya 1000.

Ili kuwasha kitu nata kwenye saraka, tumia amri ya chmod kama ifuatavyo:

$ chmod +t directory_name

Katika mfano hapa chini, tumetumia kitu kidogo kwenye saraka inayoitwa test. Katika kesi ya saraka, yaliyomo yote yatarithi vibali vya kunata. Unaweza kuthibitisha vibali vya kunata kwa kutumia ls -ld amri. Hakikisha kuwa umegundua alama ya t mwishoni mwa ruhusa za faili.

$ ls -ld test

Mtumiaji mwingine akijaribu kufuta saraka au kurekebisha faili iliyo ndani ya saraka, atasalimiwa na kosa lililokataliwa la Ruhusa.

Na hiyo ndio kiini cha ruhusa ya faili ya fimbo.

SUID (Weka Kitambulisho cha Mtumiaji) ni ruhusa nyingine maalum ya faili ambayo inaruhusu mtumiaji mwingine wa kawaida kuendesha faili kwa ruhusa ya faili ya mmiliki wa faili. Kawaida inaonyeshwa kwa thamani ya mfano s katika sehemu ya ruhusa ya faili ya mtumiaji badala ya x ambayo inawakilisha ruhusa za kutekeleza. SUID ina thamani ya nambari ya 4000.

SGID, (Weka Kitambulisho cha Kikundi) huruhusu mtumiaji wa kawaida kurithi ruhusa za kikundi za mmiliki wa kikundi cha faili. Badala ya x ya kutekeleza ruhusa, utaona s katika sehemu ya kikundi ya ruhusa za faili. SGID ina thamani ya nambari ya 2000.

Licha ya kuwa ni rahisi, ruhusa za SUID na SGID zinahusishwa na hatari za usalama na zinapaswa kuepukwa kwa gharama zote. Hii ni kwa sababu wanapeana mapendeleo maalum kwa watumiaji wa kawaida. Iwapo mvamizi anayejifanya kama mtumiaji wa kawaida atakutana na faili inayoweza kutekelezeka inayomilikiwa na mtumiaji wa mizizi iliyo na kibeti cha SUID juu yake, anaweza kutumia mwanya huo na kunyonya mfumo.

Ili kupata faili zote zilizo na SUID iliyowekwa kwenye Linux endesha find amri kama mtumiaji wa mizizi.

$ find / -perm -4000 type -f

Kwa saraka endesha:

$ find / -perm -4000 type -d

Ili kupata faili zote zilizo na SGID bit set run:

$ find / -perm -2000 type -f

Kwa saraka tekeleza:

$ find / -perm -2000 type -d

Ili kuondoa SUID kidogo kwenye faili, endesha amri ya chmod kama inavyoonyeshwa:

$ chmod u-s /path/to/file

Ili kuondoa SGID kidogo kwenye faili tekeleza amri:

$ chmod g-s filename /path/to/file

Sio kawaida kwa watumiaji kuweka nywila dhaifu. Nambari nzuri imeweka nenosiri fupi, wazi na linaloweza kubashiriwa kwa urahisi ili kuepuka kuzisahau wakati wa kuingia. Ingawa manenosiri hafifu yanaweza kukiukwa kwa urahisi kwa kutumia hati za shambulio la brute-force.

Moduli ya PAM ( Moduli ya Uthibitishaji Inayoweza Kuchomekwa) ni sehemu inayoruhusu wasimamizi wa mfumo kutekeleza sera za nenosiri kwenye mifumo ya Linux. Ili kukamilisha hili, unahitaji moduli ya pam_pwquality ambayo imetolewa na maktaba ya libpam_pwquality. Sehemu ya pam_pwquality hukagua nguvu ya nenosiri dhidi ya seti ya sheria & kamusi ya mfumo na kubainisha chaguo dhaifu za nenosiri.

Ili kusakinisha moduli ya pam_pwquality kwenye Ubuntu 18.04 na matoleo ya baadaye, endesha:

$ sudo apt install libpam_pwquality

Kwa RHEL/CentOS 8, endesha amri:

$ sudo dnf install libpwquality

Faili ya usanidi inapatikana katika eneo lifuatalo:

  • Kwenye Debian-Systems - /etc/pam.d/common-password
  • Kwenye Mifumo ya RedHat - /etc/pam.d/system-auth

Kabla hatujaanza kurekebisha faili ya usanidi ya PAM, hebu kwanza tufikirie kukusanya maarifa kuhusu vidhibiti vya kuzeeka vya nenosiri.

Hizi zinaweza kupatikana katika /etc/login.defs faili.

Faili ina vidhibiti muhimu vifuatavyo vya nenosiri:

  • PASS_MAX_DAYS: Idadi ya juu zaidi ya siku nenosiri linaweza kutumika.
  • PASS_MIN_DAYS: Nambari ya chini zaidi. ya siku zinazoruhusiwa kati ya mabadiliko ya nenosiri.
  • PASS_WARN_AGE: Idadi ya siku za onyo zilizotolewa kabla ya neno la siri kuisha.

Thamani chaguo-msingi zimeonyeshwa hapa chini.

Sifa ya PASS_MAX_DAYS huweka kikomo idadi ya siku ambazo mtumiaji anaweza kutumia nenosiri lake. Thamani hii inapofikiwa au muda wa nenosiri kuisha, mtumiaji analazimika kubadilisha nenosiri lake ili kuingia kwenye mfumo. Kwa chaguo-msingi, thamani hii imewekwa kwa 99999, ambayo hutafsiri kuwa miaka 273. Hii haileti maana yoyote kuhusiana na usalama kwani mtumiaji anaweza kuendelea kutumia nenosiri lake maishani mwake.

Unaweza kuweka hii kwa thamani ya maana, sema siku 30 kama inavyoonyeshwa.

PASS_MAX_DAYS  30

Baada ya siku 30 kupita, mtumiaji atalazimika kubadilisha nenosiri lake hadi lingine.

Sifa ya PASS_MIN_DAYS inabainisha muda wa chini kabisa ambao watumiaji wanaweza kutumia nenosiri lao kabla ya kulibadilisha. Je, hii ina maana gani? Kwa mfano, ikiwa thamani hii imewekwa kuwa siku 15, mtumiaji hataweza kubadilisha nenosiri lake tena kabla ya siku 15 kupita.

PASS_MAX_DAYS  15

Sifa ya PASS_WARN_AGE inabainisha idadi ya siku ambazo mtumiaji atapata onyo kuhusu kukaribia kwa muda wa matumizi ya nenosiri lake kabla ya muda wake kuisha. Kwa mfano, unaweza kuweka siku 7 kama inavyoonyeshwa.

PASS_MAX_DAYS  7

KUMBUKA: Vidhibiti hivi vya nenosiri havifanyi kazi na akaunti zilizopo. Zinatumika tu kwa akaunti mpya zilizoundwa baada ya kufafanua sheria.

Kabla ya kuhariri faili ya /etc/pam.d/common-password, unda nakala mbadala. Katika mfano huu, tumeunda faili ya nakala mbadala ya common-password.bak.

$ sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.bak

Kisha fungua faili.

$ sudo vim /etc/pam.d/common-password 

Tafuta mstari ulioonyeshwa hapa chini.

password        requisite          pam_pwquality.so retry=3

Chaguo la kujaribu tena huweka idadi ya juu zaidi ya mara unazohitajika kuingiza nenosiri sahihi kabla ya kupata hitilafu. Kwa chaguo-msingi, hii imewekwa kwa 3. Hili ni chaguo moja tu na tutajumuisha chaguo kadhaa.

Ongeza sifa zifuatazo kwenye mstari:

minlen=10 difok=3 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 reject_username 

Wacha tuangazie sifa hizi.

  • minlen=10: Huweka kiwango cha chini kinachokubalika cha nenosiri. Katika kesi hii, herufi 10.
  • difok=3: Hiki ndicho idadi ya juu zaidi ya herufi zilizopo kwenye nenosiri lililotangulia.
  • lcredit=-1: Hii ni idadi ya chini kabisa ya herufi ndogo ambazo zinapaswa kuwepo kwenye nenosiri.
  • ucredit=-1: Hii ndiyo idadi ya juu zaidi ya herufi ndogo zinazopaswa kuwepo kwenye nenosiri.
  • dcredit=-1: Idadi ya chini kabisa ya vibambo nambari ambavyo vinapaswa kufafanuliwa katika nenosiri.
  • ocredit=-1: Idadi ya chini kabisa ya herufi maalum k.m @, #, na hiyo inapaswa kufafanuliwa katika nenosiri.
  • kataa_jina la mtumiaji: Chaguo hili linasababisha kukataliwa kwa nenosiri ikiwa nenosiri ni jina la mtumiaji katika umbizo moja kwa moja au la kinyume.

Ukijaribu kuunda mtumiaji mpya ambaye hafikii sera za nenosiri, utakutana na makosa kama inavyoonyeshwa.

Hii inahitimisha mada juu ya usalama wa mfumo na misingi ya usalama kwa ujumla. Katika sura nzima, tumetoa mwanga kuhusu hatua za kimsingi za usalama ambazo unaweza kutekeleza ili kulinda mfumo wako wa Linux dhidi ya watumiaji hasidi kama vile wavamizi au wafanyikazi waliochukizwa.