ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … ·...

42
/ ﻟﻴﻨﻮﻛﺲ ﺳﺮورﻫﺎي اﻣﻨﻴﺖ: اول ﻓﺼﻞ193 ﻣﻜﺎﻧ ﺴﻢ ﻫﺎ ي دﺳﺘﺮﺳ ﻛﻨﺘﺮل) ACM ﻫﺎ( ا ﻗﺴﻤﺖ ﻣﻘﺪﻣﻪ ا ي ﺑﺮا ي ﻣﻜﺎﻧﻴﺴﻢ دﺳﺘﺮﺳـ ﻛﻨﺘﺮل) ACM ( اراﺋـﻪ دﻫ.ACM ﻫﺎ وﺳ ﻠﻪ ﺑﺮا ي ﻣﺪ ﺮان ﺴﺘﻢ ﺑـﺮا ي ا ﻛﻨﺘـﺮل ﻨﻜـﻪ ﻓﺮآ و ﻛﺎرﺑﺮ ﻛﺪام ﻨﺪ ﺑﻪ ﺗﻮاﻧﻨﺪ ﻓﺎﻳﻞ ﻫﺎ دﺳﺘﮕﺎه، راﺑﻂ ﻫﺎ، و ﻫﺎ ﺮه در ﺴﺘﻢ ﻛﺎﻣﭙ ﻮﺗﺮ ي د ﺳﺘﺮﺳ ﻓﺮاﻫﻢ ﺑﺎﺷﻨﺪ، داﺷﺘﻪ. ﻨﺪ اﻳﻦ ﻳﻚ ﻧﮕـ ﺎه اوﻟ اﻣﻨ ﺑﻪ ﺴﺘﻢ ﻛﺎﻣﭙ ﻮﺗﺮ ي ﺷﺒﻜﻪ ا ي ﺑﺎ اﻧﺪازه ﻫﺮ ﻣﻘﻴﺎﺳـﻲ و ﻣﻲ ﺑﺎﺷﺪ. دﺳﺘﺮﺳ ﻛﻨﺘﺮل اﺧﺘ ﺎر ي) DAC ( ﻛﻨﺘﺮل دﺳﺘﺮﺳ اﺧﺘ ﺎر ي) DAC ﻛﻨﺘﺮل( ﻫﺎ ي دﺳﺘﺮﺳ اوﻟ ﻴـ ﺑـﺮا ي اﺷ ﺎء در ﺴﺘﻢ ﻓﺎ ﻳـ ﺗﻌﺮ را ﻳـ ﻣـ ا. ﻛﻨـﺪ ﻳـ دﺳ ﻛﻨﺘـﺮل ﺘﺮﺳـ ﻣﻌﻤﻮﻟ ﻣﺠﻮزﻫﺎ ﺗﻮﺳﻂ ﻛﻪ اﺳﺖ ي ﻓﺎ ﻞ، اﺷﺘﺮاك ﺑﻪ ﮔـﺬار ي و ﻴـ ﺮه اراﺋـﻪ ﭼﻨ. ﺷﻮد ﻧـﻮع دﺳﺘﺮﺳـً ﻋﻤﻮﻣـﺎ در اﺧﺘ ﻴـ ﺎر ﺻـﺎﺣﺐ ﺷـﻲ ءﻓﺎ) ﻳـ ﻞ، دا ﺮﻛﺘﻮر ي، و دﺳﺘﮕﺎه ﺮه. اﺳﺖ( DAC وﺳ ﻠﻪ دﺳﺘﺮﺳ ﻛﺮدن ﻣﺤﺪود اﺷـ ﺑﻪ اﺳـﺎس ﺑـﺮ ﻫﻮ ﻳـ ﻛﺎرﺑﺮ(ﻣﻮﺿﻮع) ﮔﺮوه اﺳﺖ ﺳﻌ ﻛﻪ دﺳﺘﺮﺳ در آن ﺑﻪ اﺷ ﺎء ﻓـﺮاﻫﻢ را ﻣﺠﻮزﻫﺎ ﺑﻪ ﺑﺴﺘﻪ. ﻛﻨﺪ ي دﺳﺘﺮﺳـ ﻣـﻮرد ﻧﻈـﺮ اﺳـﺖ ﻣﻤﻜـﻦ، ﺑﺘـﻮاﻧ ﻴﻢ ﺳﺎ ﺑﻪ را ﻣﺠﻮزﻫﺎ اﻓﺮاد اﻧﺘﻘﺎل دﻫﻴﻢ. DAC ﻫﻤﺎن ﭘﻴﻜﺮﺑﻨﺪيpermission ﻫﺎ ﺑﺎﺷﺪ ﻛﺘﺎب اﺑﺘﺪاي در ﻛﻪ دادﻳﻢ ﺷﺮح ﻛﺎﻣﻞ ﺻﻮرت ﺑﻪ را آن ﺑﺎ ﻛﺎر ﻧﺤﻮه و ﻛﺮدﻳﻢ ﻣﻌﺮﻓﻲ را آن.

Transcript of ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … ·...

Page 1: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

193 فصل اول: امنيت سرورهاي لينوكس /

)هاACM ( يكنترل دسترس يها سميمكان

ارائـه ) ACM( يكنترل دسترس ـ مكانيسم يبراي ا مقدمه قسمت نيا نكـه يكنتـرل ا يبـرا ستميس رانيمد يبرا لهيوس كيها ACMد. ده يم

كيدر رهيها و غ ها، رابط ، دستگاهها فايلتوانند به يم نديكدام كاربر و فرآ اهنگ ـ يك اينند. نك يداشته باشند، فراهم م يسترسد يوتريكامپ ستميسو مقياسـي هر اندازه با يا شبكه اي يوتريكامپ ستميس كي تيبه امن هياول .باشد مي

)DAC( يارياخت يكنترل دسترس

يبـرا هي ـاول يدسترس يها ) كنترلDAC( يارياخت يدسترس كنترل يترس ـكنتـرل دس ني ـكنـد. ا يم ـ في ـرا تعر لي ـفا ستميس كيدر اءياش

ارائـه رهي ـو غ يگـذار به اشتراك ل،يفا ياست كه توسط مجوزها يمعمول ل،ي ـ(فا ءشـي صـاحب اري ـاخت در عمومـاً يدسترس ـنـوع نيشود. چن يم ) است.رهيدستگاه و غ ،يركتوريدا

DAC تي ـهو بـر اسـاس ايبه اش ـ يمحدود كردن دسترس لهيوس كي را فـراهم اءياشبه آن يدر دسترس يكه سعاست گروه (موضوع) ايكاربر

يمبتـوان ، ممكـن اسـت نظـر مـورد يدسترس ـ يكند. بسته به مجوزها يم .دهيم انتقالافراد ريمجوزها را به سا

DAC پيكربنديهمان permission كه در ابتداي كتاب باشد يها م .آن را معرفي كرديم و نحوه كار با آن را به صورت كامل شرح داديم

Page 2: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 194از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

)ACLs( يكنترل دسترس يها ستيل

يرا بـرا يشـتر يهـا) كنتـرل ب ACL( يكنتـرل دسترس ـ يها ستيل ند.نك يكند، كنترل م دايپ يتواند به آن دسترس يم ءشي كيكه يموارد

كامل در بخش هاي قبلي معرفي نموديم. صورت بهها را ACLكار با

MAC/Mandatory Access( ياجبار يكنترل دسترس

Control(

اسـت كـه سـطح يتيامن سميكان) مMAC( ياجبار يدسترس كنترلكنـد. يكننـد محـدود م ـ يم ـ جـاد يا اءياش ـ يرا كه كاربران بر رو يكنترل

ها و ، پوشهها فايلاز يكه كاربران كنترل كامل DAC يساز ادهيبرخلاف پ اءيرا بـه همـه اش ـ يشـتر يب يهـا دسته ايها برچسب MACدارند، رهيغ نيبتوانند با ا نكهيقبل از ا اندهيكند. كاربران و فرآ ياضافه م ليفا ستميسهـا داشـته دسـته نيمناسب به ا يدسترس ديارتباط برقرار كنند، با ءاياش

باشند.

شود. ياعمال م SELinuxتوسط Linux ،MACدر

)RBACبر نقش ( يمبتن يكنترل دسترس

يبـرا نيگزيروش جا كي) RBACبر نقش ( يمبتن يدسترس كنترلاينكـه جـاي بـه اسـت. لي ـفا سـتم يس اءيكـاربر بـه اش ـ يكنترل دسترس

بـر را ها نقش ستميس ريشود، مد كاربر كنترل يتوسط مجوزها يدسترس ني ـكنـد. ا يم ـ جاديمشابه ا يارهايمع اي يتجار يالزامات عملكرد اساس هستند. ءايبه اش يانواع و سطوح دسترس يدارا ها نقش

اءيه اشكه در آن كاربران ب MAC اي DAC يها ستميبا س سهيمقا دردارنـد، كـاربران در يدسترس ي،خود و مجوز دسترس يمجوزها بر اساس

Page 3: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

195 فصل اول: امنيت سرورهاي لينوكس /

يـا هـا يركتـور ي، داهـا فايـل بتوانند با نكهيقبل از ا RBAC ستميس كي نقش باشند. ايعضو گروه مناسب ديها، ارتباط برقرار كنند، با دستگاه

بـه يدسترس ـبـراي امر كنتـرل افـراد مجـاز نيا ،مديريتي دگاهيد از .كند يم تر آسانرا ليفا ستميمختلف س يها سمتق

)MLS( يچند سطح تيامن

ياجبــار ژهيــو يتــيبرنامــه امن كيــ) MLS( يچنــد ســطح تيــامن)MACنام با ندهايطرح، فرا ني) است. تحت اSubjects شـوند بيان مي .

دهي ـنام Objects عامـل سيسـتم هاي موجوديت گريها و د ، سوكتها فايل د.نشو يم

)MCS( طبقهند چ تيامن

SELinux در هشـرفت يپمورد بسـيار كي) MCS(طبقه چند تيامنهــا يبنــد را بــا دســته هــا فايــلدهــد تــا ياســت و بــه كــاربران اجــازه مــ

از مجـدداً اسـت و MLSاز يسـازگار كي ـ MCSكنند. يگذار برچسب كند. ياستفاده م SELinuxدر MLSچارچوب

SELinuxبر يا مقدمه

SELinux 2.6است كه در هسته يتيامن يارمعم كي.x با اسـتفاده SELinuxشـده اسـت. كپارچـه ي) LSM( نوكسيل تيامن هاي ماژولاز SELinux) و جامعـه NSA( متحده الاتيا يمل تيپروژه آژانس امن كي

تـلاش كي ـ Red Hat Enterprise نوكسيدر ل SELinuxاست. ادغام .ه استبود Red Hatو NSA نيمشترك ب

Page 4: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 196از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

SELinux ياجمال يبررس

SELinux يكنترل دسترس ستميس كي )MAC (كه در هسته است ياري ـاخت يساخته شده است. تحت اسـتاندارد كنتـرل دسترس ـ نوكسيلشـود يعنوان كـاربر اجـرا م ـ كه به نديفرا ايبرنامه كي)، DAC( نوكسيل)UID اي SUIDو اه ، سوكتها فايلمانند اءياش يمجوز كاربر برا ي) دارا

يهـا را از برنامـه سـتم يس MACهسـته كي ياست. اجرا ندهايفرا ريسانـابود اي ـد نرسـان ب بيآس ـ ستميس به دنتوان يكه مامنيت ضناق اي مخرب

كند. يد محافظت منكن

SELinux و انتقال هر كاربر، برنامـه، پـردازش و يدسترس مجوزهاي ني ـتعـاملات ا SELinuxكنـد. سـپس يم ـ في ـتعر سـتم يرا در س ليفا .كند يم فيتعر يتيامن استيس كيرا با استفاده از ها تيوجودم

رانياطلاع هستند. فقط مـد يب SELinuxاز ستميسمعمولي كاربران طيمح ـ يبـرا امنيتـي را اسـت يسچـه كـه رنـد يدر نظـر بگ ديبا ستميس

سـخت يتواند به اندازه كاف يم استيس ني. انمايند يساز ادهيپسرورشان . تعريف شود قيدق اريبسبه صورت باشد و ازين مورد ايباشد

.دارد ستميس يبر روكاملي ، كنترل SELinuxهسته كل

SELinux يريگ ميتصم نديفرا

به يدسترس يبرنامه)، برا كيعنوان مثال موضوع (به كيكه يهنگام اسـت يس يكند، سرور اجرا ي) تلاش مليفا كي(به عنوان مثال ءيش كي

كه در كند يم ي) را بررسAVC( يدسترس ايبر) cache(در هسته كش بر اسـاس يريگ مي. اگر تصمشوند مي رهيذخء يموضوع و ش يآن مجوزها

ادامـه يت ـيدرخواست بـه سـرور امن ل اسارانجام نشود، AVCها در داده يبررس ـ مجوزهـا سيرا در مـاتر لي ـبرنامـه و فا يتيامن نهيكه زم ابدي يم :شود مييا گرفته گردد مي اعطاء avcمجوز توسط كند. پس از آن يم

Page 5: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

197 فصل اول: امنيت سرورهاي لينوكس /

ــپ ــورت denied اميـــ ــاز غيردر صـــ ــودنمجـــ ــلدر ، بـــ فايـــ/var/log/message ،Log از ءايو اش ـ تموضـوعا يتيامن نهي. زمشود مي

پر كردن يرا برا ياطلاعات نيكه همچن شود ينصب شده اعمال م استيس كند. يسرور فراهم م سيماتر

:توجه نماييد رينمودار ز به

SELinux ياتيعمل يها التح

توانــد در حالــت يمــ enforcing، SELinuxاجــرا در حالــت يجــابpermissive كه يياجرا شود، جاAVC شود و يم يبررسdenial هـا

Log حالت .دنشو يمpermissive ،SELinux كند يرا اجرا نم استيس، دي ـمف SELinux اسـت يس ميتنظ ـ اي يبرا ،يابي بيع يتواند برا يم بلكه

باشد.

Page 6: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 198از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

SELinuxمربوط به هاي فايل

مربوطـه هاي فايل ستميو س SELinux يكربنديپ هاي فايل در ادامه، .نماييم ميبررسي را

SELinux فايل ستميس

اسـت كـه اغلـب يدسـتورات يحاو selinux/ pseudo-file/ ستميسبـه هيشب ستميس لينوع فا نيشود. ا يهسته استفاده م ستميرسيزتوسط

است. proc/ pseudo-file/ ستميس

ندارند. جزء نيا كاري دستبه يازيمعمول ن طور بهو كاربران رانيمد

دهد: يرا نشان م / /selinuxدايركتوري از يا نمونه اتيمحتو ريز مثال-rw-rw-rw- 1 root root 0 Sep 22 13:14 access

dr-xr-xr-x 1 root root 0 Sep 22 13:14 booleans

--w------- 1 root root 0 Sep 22 13:14

commit_pending_bools

-rw-rw-rw- 1 root root 0 Sep 22 13:14 context

-rw-rw-rw- 1 root root 0 Sep 22 13:14 create

--w------- 1 root root 0 Sep 22 13:14 disable

-rw-r--r-- 1 root root 0 Sep 22 13:14 enforce

-rw------- 1 root root 0 Sep 22 13:14 load

-r--r--r-- 1 root root 0 Sep 22 13:14 mls

-r--r--r-- 1 root root 0 Sep 22 13:14 policyvers

Page 7: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

199 فصل اول: امنيت سرورهاي لينوكس /

-rw-rw-rw- 1 root root 0 Sep 22 13:14 relabel

-rw-rw-rw- 1 root root 0 Sep 22 13:14 user

يبـرا enforce، 1 لي ـفا بـر روي catدسـتور ياجـرا در مثال، يبرا د.باش يم permissiveحالت ياجرا يبرا 0 و enforcing حالت ياجرا

SELinux يكربنديپ هاي فايل

و SELinux يهـا اسـت يس ،يكربنـد يپ هـاي فايـل ريز يها بخش در .دنشو ي/ شرح داده مetcموجود در پوشه هاي فايل ستميس

/etc/sysconfig/selinux يكربنديپ ليفا

وجود دارد: استفاده از Linuxدرون SELinux يكربنديپ يراه برا دوــزار ــ system-config-selinuxابـ ــفا شيرايـــو ايـ يكربنـــديپ ليـ

etc/sysconfig/selinux /يدست صورت به.

اي ـفعال يبرا يكربنديپ ياصل ليفا/ etc/sysconfig/selinux ليفاكـدام نكـه يا نيـي تع يبـرا از اين فايـل .است SELinux كردن رفعاليغمشـخص كـردن نيو همچن ـ مناسب اسـت ستميس ياجرا يبرا استيس

.كنيم استفاده ميآن ينحوه اجرا

ليــبــه فا نينمــاد نــكيل يحــاو/ etc/sysconfig/selinux نكتــه: است. etc/selinux/config/ يواقع يكربنديپ

ي كربنديپ يموجود برا هاي گزينه از يا رمجموعهيزكامل شرح ريز در :بيان شده است

SELINUX = enforcing | permissive | disabled - في ـتعر سـتم يس كي يرا بر رو SELinux يسطح بالا تيوضع

كند. يم

Page 8: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 200از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

o enforcing - يتـــيامن اســـتيس SELinux اعمـــال شود. يم

o permissive- ستميس SELinux هشـدارها را چـاپ كند. ياجرا نمرا استيكند اما س يم

اسـت. ديمف يابي بيو ع ييزدا اشكالمقاصد يبرا مورد نياــت ــا permissive ،denialدر حال ــتريب يه ــت يش ثب

ادامـه هـا actionتواننـد بـا يها م ـ subject رايشوند، ز يمــدي ــورت ،ابن ــه يدر ص ــت ك ــر enforcingدر حال ــن ام اي

ــرانيســت ريپــذ امكــان ــ پيمــايشمثــال، ي. ب درخــت كيــيدا ــتدر يورركت ــر permissive ،avcحال ــاديرا ازي ج كند: يم

denied messages for every directory level read. مـانع از پيمـايش enforcing، SELinuxي در حالت اجرا

.دگير مي ي بيشتر راها امغيپ توليد جلويو شود يم

o disabled - SELinux شود مي رفعاليغكامل طور به .SELinux ستميجدا شده و س از هسته pseudo-file

نشده است. رجيستر

SELINUXTYPE = target | strict - مشــخص كــردن شود.) enforce(اجرا ديكه با SELinux سياست

o targeted - شــبكه هــدفمــورد يهــا مــونياد تنهــا شوند. يمحافظت م

تواند روشـن يها م daemon نيا يبرا استيس ياجراتوسـط نيبـول رياده از مقـاد اسـتف و با خاموش باشد اي

ــزار پ ــدياب ــطح امن يكربن ــيس -system-config( يت

selinux.كنترل شود (

Page 9: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

201 فصل اول: امنيت سرورهاي لينوكس /

0بـه daemon targeted يبـرا يمقـدار بـول ميتنظ يبـرا اسـت يكـردن انتقـال س غيرفعـال موجب (صفر)

daemon دي ـتوان ي. به عنـوان مثـال، شـما م ـ گردد مي dhcpd_disable_trans ا از ت ـ دي ـكن ميتنظ ـ 0را به

ــال ــه dhcpdانتق ــه unconfined_tاز دامن ــه دامن ب شود. يريجلوگ initدر dhcpd.teمشخص شده در

تمــام كــردن ســتيل يبــرا getsebool -aدســتور ازSELinux boolean ريــ. مثــال زديــاســتفاده كنهــا

نيبـول كي ـ ميتنظ يبرا setseboolاستفاده از دستور SELinux نهياست. گز -P شود. يم يدائم رييباعث تغ

مجـدد يانداز در هنگام راه boolean نه،يگز نيبدون ا شود. يم ميتنظ 1به

setsebool -P dhcpd_disable_trans = 0

o strict- حفاظــت كامــل SELinuxيتمــام ي، بــرا daemonها .

في ـتعر اءيهمه موضوعات و اش يبرا يتيامن يها نهيزم اسـت يس يشده است و هر عمـل توسـط سـرور اجـرا

شود. يپردازش م

SETLOCALDEFS = 0 | 1 - كـاربر يمحل فيكنترل تعار) ني ـتـا ا دي ـكن ميتنظ ـ 1كند. مقدار را به يم مي) را تنظنيو بول

ــار ــط فيتعــــ ــلاز load_policyتوســــ ــا فايــــ در هــــ/etc/selinux/<polyname> ميتنظ 0به را آن ايكنترل شود

.كنترل شود semanageتا با كنيد

Page 10: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 202از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

/etc/selinux دايركتوري

و هـا فايـل تمـام يبـرا ياصـل يركتـور يدا ،/etc/selinux دايركتوري است. ياصل يكربنديپ فايل نيهمچن

دهد: يرا نشان م etc/selinux/از پوشه يا نمونه اتيمحتو ريز مثال

-rw-r--r-- 1 root root 448 Sep 22 17:34 config

drwxr-xr-x 5 root root 4096 Sep 22 17:27 strict

drwxr-xr-x 5 root root 4096 Sep 22 17:28 targeted

خـاص هسـتند يركتوريدا، دو targetedو strictيركتوريدا ريز دو) targetedو strict يعن ـي( نـوع از همان يتياسس هاي فايل ها آنكه در

موجود است.

SELinuxابزارهاي كاربردي

، شـود ياسـتفاده م ـ ولاًمعمكه SELinux ابزارهاي كاربردياز برخي :از اند عبارت

• /usr/sbin/setenforce - يدر زمـــان اجـــرا يحالـــت واقعـــ SELinux دهد. يم رييرا تغ

:المثبراي

setenforce 1 ،SELinux در حالتenforcing شود. ياجرا م

setenforce 0 ،SELinux ــت د ــرا permissiveر حالـ اجـ شود. يم

setenforceپـارامتر ديبا ، شماSELinuxكردن رفعاليغ يبراــمشــخص كن etc/sysconfig/selinux/مناســب را در ــ دي اي

Page 11: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

203 فصل اول: امنيت سرورهاي لينوكس /

در زمـان بـوت اي etc/grub.conf/در را selinux = 0پارامتر .ديكن تنظيمبه هسته شدن

• /usr/sbin/sestatus -v - ــع ــدق تيوض ــ قي ــتميس كي سSELinux ياز خروج ـ يا نمونـه ري ـدهد. مثـال ز يم شيرا نما

satatus -v دهد: يرا نشان م

SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 21 Policy from config file: targeted Process contexts: Current context: user_u:system_r:unconfined_t:s0 Init context: system_u:system_r:init_t:s0 /sbin/mingetty system_u:system_r:getty_t:s0

• /usr/bin/newrole - اي ـ نـه يزم كي ـرا در دي ـپوسته جد كي اجـازه انتقـال بـه نقـش دي ـبا استيكند. س ياجرا م دينقش جد

را بدهد. ديجد

يها است كه بسته قابل انجام يدستور فقط در صورت ني: انكتهpolicycoreutils-newrole ــ ــده باش ــب ش ــرا دننص ــه ب ي ك

است. ازيمورد ن MLSو strictهاي سياست

• /sbin/restorecon - را بـا لي ـچنـد فا اي ـ كي ـ يت ـيامن نهيزم يت ـيامن نـه يزم اي ـ فايلبا افتهي توسعه يها يژگيو يگذار علامت

كند. يم ميمناسب تنظ

• /sbin/fixfiles - را لي ـفا سـتم يدر س يت ـيامن يها داده گاهيپا كند. يو اصلاح م يبررس

Page 12: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 204از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

)MCS( طبقه چند تيامن

SELinux يبـرا هشـرفت يپقابليـت كي ـ) MCS( طبقه چند تيامنهــا يبنــد را بــا دســته هــا فايــلدهــد تــا يجــازه مــاســت و بــه كــاربران ا

) وDACمحـدود ( يكنترل دسترس بهها دسته نيكنند. ا يگذار برچسبتواننـد هنگـام يم نيهمچن ها آنشوند. ي) محدود مTEمنطق نوع اجرا (

ــا ــ شينمــ ــاپ ايــ ــلچــ ــا فايــ ــوند. هــ ــتفاده شــ ــه اســ طبقــ""Company_Confidential كاربران . فقطمثالي براي اين مورد است

شـده گـذاري برچسب هاي فايلبه توانند يدسته م نيبه ا يدسترس يدارا TE نيقـوان موجـود و DAC نكهيكنند، با فرض ا دايپ يبا دسته دسترس

را داشته باشند. ها آنبه يهم اجازه دسترس

اسـتفاده شـده يمراتب ـ سلسـله ريغ يها به دسته يبند طبقهاصطلاح و اءي، اش ـMLS. تحـت دارد) اشـاره MLS( يتيسطح امن نيتوسط چند

يت ـيسـطوح امن نيشوند. ا يم يگذار برچسب يتيموضوعات با سطوح امن اي) و صفر "بالا امنيت"(مانند يسلسله مراتب تيمقدار حساس كيشامل

هـا ) اسـت. دسـته "يرمزنگـار "(ماننـد يمراتب ـ سلسـله ري ـغچند دسته تي ـامنبـه ازيد و اصل نكنن يفراهم م يتيها را در سطوح حساس محدودهچند تيدر مورد امن شتريكسب اطلاعات ب ي. براكنند مياجرا را اطلاعات

.ديمراجعه كن ")MLS( چند سطحي تيامن"به بخش ،يسطح

MCS از يك انطباقMLS ياسـت. از نظـر فن ـ، MCSريي ـتغ كي ـ يكردن برخ ـ يمخف يبرا دياز اصلاحات كاربر ي، همراه با تعداداستيس

زي ـهسـته ن راتيي ـاز تغ ياست. برخ ـMLS ي رضروريغ هاي يولوژاز تكن) بـدون MLSاي ـ( MCSساخته شده است، اما تنها مربوط به ارتقاء بـه

است.ل كام ستميس ليفا كياستفاده از

Page 13: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

205 فصل اول: امنيت سرورهاي لينوكس /

اي چند طبقه تيامن يبرا يكاربرد يها برنامه

يهـا دسـته شينمـا يتوانـد بـرا يم MCS ،ياز كنترل دسترس فراترMCS ني ـ. اردي ـصفحات چاپ شده مورد استفاده قـرار گ نييلا و پادر با هـاي روشنشـان دادن يپوشـش بـرا كي ـممكـن اسـت شـامل مسئله

Handeling دي ـبا ني. همچن ـفايل باشد MCS در نـده يرا بـا تحـولات آSELinuxلي، از قب Security Enhanced X كي ـ، ادغام كرد. ادغام با

ني ـكند. ا يتر م آسان ليميا يرا برا MCSاز يبانيپشت ،يركتوريسرور دا را هـا فايـل وسـت يپ اي يخروج يها ليميكاربر اباعث شود تواند يم مورد

كنـد كـه نيـي تواند تع يم ليميا كاربر در اين حالتكند. يگذار برچسب لي ـميبـه ا شان طبقهبا توجه به توانند مي شده ييشناساكنندگان افتيدر

.خيريا كنند دايپ يدسترسمربوطه

SELinux)SELinux Security ي تيامني هامحتوا

Contexts(

SELinux لي ـاز فا اضـافه يژگ ـيو كي ـها را به عنـوان پرونده تيامن مـورد اسـتفاده قـرار يت ـيامن هاي ماژول يبرا، تيامن واژهكند. يم رهيذخ يتيامن يها حفظ برچسب يبرا security.selinuxنام فضاي و رديگ يم

SELinux بسـته بـه يژگ ـيو ني ـا اتيشود. محتو ياستفاده م ها فايلدركند، متفـاوت خواهـد يكه دستگاه اجرا م يمش خطو يركتوريدا اي ليفا

بود.

لي ـفا كي ـبرچسـب رده مشاهده يبرا ls -Zاز دستور ديتوان يم شما :دياستفاده كن

[root@myServer ~]# ls -Z gravityControl.txt

-rw-r--r-- user user

user_u:object_r:tmp_t:Moonbase_Plans gravityControl.txt

Page 14: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 206از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

يداخل ـ category مشـاهده يبـرا gefattrاز دسـتور ديتوان يم شما)c10دي) استفاده كن:

[root@myServer ~]# getfattr -n security.selinux

gravityControl.txt

# file: gravityControl.txt

security.selinux="user_u:object_r:tmp_t:s0:c10\000"

اي چند طبقه تيامنشروع كار با

ــن قســمت در ــتفاده از برچســب اي ــا اس ــرا MCS يه گســترش يبكـاربر تي ـ، هوMCS يهـا يبنـد دسـته ،MAC SELinux يها تيقابل

SELinux هــاي فايــلو يكــاربر يهــا در حســاب هــا آنو نحــوه اعمــال . مهيد يرا مورد بحث قرار م نوكسيل

سـاده اسـت. سـتم، يس ريكاربر و مد كينگاه از MCSزدن برچسبهــا اســت كــه فقــط هتاز دســ يا مجموعــه يكربنــديشــامل پ ايــن كــار اي ـ "Company_Confidential"هسـتند، ماننـد يمتن ـ يهـا برچسب

"Medical_Records". هــا اختصــاص ســپس كــاربران را بــه آن دســتهكند و سپس يم يبند تيها را اولو يبند دسته بتداا ستميس ري. مديمده يم

آن كـاربران از دهـد. پـس ياختصاص م ها آنبه ازين در صورتكاربران را ها استفاده كنند. توانند از برچسب يم

شده است و نييتع ستميس ريتوسط مد ها آن يها و معان دسته ياسام تمس ـيس كي ـ. كرد مياست تنظ ازيرا به هر آنچه كه مورد ن ها آنتوان يم

داشـته "يخصوص ـ"دسـته كي ـممكن است تنها يخانگ طيمح كيدر تهدس ـ ني ـمورد اعتماد بـه ا يشود تا فقط كاربران محل يكربنديباشد و پ

اختصاص داده شوند.

Page 15: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

207 فصل اول: امنيت سرورهاي لينوكس /

اسناد ييشناسا يتوان برا يها م يبند از دسته ،Enterprise طيمح دربـا ننـد توا يهـا م ـ يبنـد خاص استفاده كرد. دسـته يها محرمانه به بخش

شوند. جاديا "پرسنل"و "يابيبازار"، "حقوق و دستمزد"، "يمال" هاي نامتواننـد بـه منـابع يهـا م ـ فقط كاربران اختصاص داده شده بـه آن دسـته

داشته باشند. يدسترس يبند دسته مانشده با ه زده برچسب

تواننـد هـر يشـدند، م ـ اختصاص دادهها از آنكه كاربران به دسته پساختصاص داده ها آنكه به ييها از دسته كيخود را با هر هاي يلفااز كي

در يكـاربر خـانگ كي ـعنـوان مثـال، كنند. به يگذار ، برچسبشده است هـاي فايـل توانـد تمـام يداده شـده اسـت، م ـ حيكه در بالا توض ـ ستميس

سيسرو چيكند و ه يگذار برچسب "يخصوص" نوانع اخود را ب يشخص هـا فايـل ني ـبه ا يهرگز قادر به دسترس vsftp اي Apacheمانند يگريد

.هستند "يخصوص" هاي فايل ها آن راينخواهد بود، ز

MCS ل،ي ـفا كي ـبـه يدسترس ـ يكند: برا ياصل ساده كار م كيبا اسـت شـده يگـذار آن برچسـب لي ـكـه فا ييها به تمام دسته ديكاربر با

يســكنتــرل دستر نيپــس از قــوان MCSبررســي اختصــاص داده شــود. پـس بنابراين ، شود مي انجام )TE) و نوع اجرا (DAC( نوكسيل يارياخت

.كردرا محدود يشتريب تيامن توان ياز آن م

نوكسياستاندارد كاربران ل تيهو دييتأو SELinux سهيمقا

SELinux كـاربر تياز هو يجدا ندها،يفرآ يكاربر خود را برا تيهوــوكسيل ــ ن ــظ م ــد. در س يحف ــدف اســتيكن ــا ه targeted policyيوجـود SELinuxكاربر تيهو ي) حداقل تعدادLinux يفرض برا شي(پ

دارد:

system_u - ستميس يندهايفرا

root - ستميس ريمد

Page 16: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 208از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

user_u - يكاربرها تمامي Login شده ، اسـتفاده SELinuxفهرست كـاربران يبرا semanage -lاز دستور

:كنيم مي

[root@dhcp-133 ~]# semanage user -l

Labeling MLS/ MLS/

SELinux User Prefix MCS Level MCS

Range SELinux Roles

root user s0 s0-

s0:c0.c1023 system_r sysadm_r user_r

system_u user s0 s0-

s0:c0.c1023 system_r

user_u user s0 s0-

s0:c0.c1023 system_r sysadm_r user_r

Loginهاي SELinux

اسـت كـه ني ـا targeted policyيـا هـدف اسـت ياز خواص س يكيمشـابه اجـرا يت ـيامن طيمح ـ كي ـدر سـتم يبـه س شـده loginكاربران

هسـتند. تي ـمعادل امن ها آنهدف، استي، در سTE دگاهيشوند. از د يماز يمختلف ـ يها مجموعه ميبتوان دي، باMCSاستفاده از يحال، برا نيا با

كـه هرچنـد م،يده ـ اصاختص ـ نوكسيكاربران مختلف ل يا را براه دستهبـا ايـن مـورد هسـتند. كسـان يهـاي SELinux user (user_u) ها آن

ورود ندآيدر طول فر كه حل شده است login SELinuxمفهوم يمعرفكـه يزمـان نـوكس يبـه كـاربران ل MCS يها اختصاص دادن دسته يبرا شود. يد استفاده منشو يم ايجاد ها آن

Page 17: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

209 فصل اول: امنيت سرورهاي لينوكس /

نـوكس يكاربران ل تيهو نييتع يبرا semanage login -aاز دستور :دياستفاده كن SELinuxكاربر براي

# semanage login -a james

# semanage login -a daniel

# semanage login -a olga

دي ـتوان يم ـ د،ي ـنيب يرا م ـ SELinuxكـاربران سـت يكه شما ل يزماناختصـاص SELinuxشناسه كـاربر مشـخص كيرا به نوكسيكاربران ل

:ديده# semanage login -l

Login Name SELinux User

MLS/MCS Range

__default__ user_u s0

james user_u s0

daniel user_u s0

root root SystemLow-

SystemHigh

olga user_u s0

به هـر root يمرحله تنها حساب كاربر نيكه در ا ديداشته باش جهتو يبا دسترس root، حساب فرض پيش طور به. شود ميدسته اختصاص داده

شده است. يكربنديپ ها دستهبه تمام

Page 18: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 210از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

Red Hat Enterprise وSELinux ازفـرض شيپ ريمقاد يبا تعداد سـتم يس ري، مـد MCSاز مـؤثر اسـتفاده يشوند، اما بـرا يم ميتنظ شيپ جـاد يرا ا يشـتر يب ريمقـاد ايكند يم جاديرا ا راتييتغ نيمعمول ا طور به د.نمنطبق باش يمحل يازهايكند تا با ن يم

ها دسته يكربنديپ

SELinuxــ ، نگاشــت ــ تيحساســ نيب و هــا دســتهو ســطوح يداخلكنـد. يم ـ حفـظ setrans.conf لي ـقابـل خوانـدن را در فا يهـا شينما

كند. يم يو نگهدار تيريرا مد ليفا نيا مستيسرپرست س

:دياستفاده كن يفعل يها يبند دسته يبرا chcat -L دستور از[root@dhcp-133 tmp]# chcat -L

s0:c0 CompanyConfidential

s0:c3 TopSecret

s0

s0-s0:c0.c255 SystemLow-SystemHigh

s0:c0.c255 SystemHigh

ليـــخودتـــان، فا دســـته جـــاديا ايـــهـــا و دســـته رييـــتغ يبـــرا/etc/selinux/<selinuxtype>/setrans.conf ــرا تغ ــده ريي ــرادي ي. ب

ري ـحقوق و دستمزد و پرسنل را به صـورت ز ،يمال ،يابيمثال، دسته بازار يهـا كنـد و بخـش يف اسـتفاده م ـ هد استيمثال از س ني(ا دياضافه كن

):كند ميحذف را ليفا اضافه[root@dhcp-133 tmp]# vi

/etc/selinux/targeted/setrans.conf

Page 19: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

211 فصل اول: امنيت سرورهاي لينوكس /

s0:c0=Marketing

s0:c1=Finance

s0:c2=Payroll

s0:c3=Personnel

استفاده chcat -Lاضافه شده از دستور ديجد يها دسته يبررس يبرا :ديكن

[root@dhcp-133 tmp]# chcat -L

s0:c0 Marketing

s0:c1 Finance

s0:c2 Payroll

s0:c3 Personnel

s0

s0-s0:c0.c255 SystemLow-SystemHigh

s0:c0.c255 SystemHigh

اعمال راتييتغ نكهي، قبل از اsetrans.conf ليفا ريي: پس از تغنكته ري. از دستور زديكن يانداز راه مجدداًرا MCSترجمه سرويس ديد، بانشو :دياستفاده كن سيمجدد سرو يانداز راه يبرا

[root@dhcp-133 ~]# service mcstrans restart

اختصاص دسته به كاربران

هـا آن دي ـتوان ي، منداضافه شد ستميبه س ازيمورد ن يها كه دسته حالا شـتر يتوسعه ب ي. برادياختصاص ده SELinux هاي فايلرا به كاربران و

Page 20: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 212از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

Danielقـرار دارد، ِ يابيدر بخش بازار Jamesكه ديمثال فوق، فرض كندر بخـش كاركنـان Olgaو حقوق و دستمزد است و يدر بخش امور مال

نيـي را تع Login SELinux كي ـ قـبلاً ان كـاربر ني ـاز ا كي ـ راست. ه ـ .اند كرده

ــتور از ــرا chcatدس ــاد يب ــاص دادن مق ــه ورود MCS رياختص يبSELinux دياستفاده كن:

[root@dhcp-133 ~]# chcat -l -- +Marketing james

[root@dhcp-133 ~]# chcat -l -- +Finance,+Payroll

daniel

[root@dhcp-133 ~]# chcat -l -- +Personnel olga

خـط فرمـان يها آرگومانبا chcatاز دستور ديتوان يم نيهمچن شما انـد شـده كـه بـه كـاربران اختصـاص داده ييهـا كردن دسته ستيل يبرا

:دياستفاده كن[root@dhcp-133 ~]# chcat -L -l daniel james olga

daniel: Finance,Payroll

james: Marketing

olga: Personnel

د،ي ـرا اضـافه كن ي بيشـتري نوكس ـيكاربران ل ديتوان يم شمانين همچرا بـه هـا آنو سـپس دي ـاختصـاص ده SELinux يها تيرا به هو ها آن

ازي ـشـركت ن ري. به عنوان مثال، اگر مدديكن يبند طبقه مدنظرتانعنوان ريها داشته باشد، روش ز به تمام دسته يبا دسترس يحساب كاربر كيبه :ددهي انجامرا

# Create a user account for the company director (Karl)

[root@dhcp-133 ~]# useradd karl

Page 21: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

213 فصل اول: امنيت سرورهاي لينوكس /

[root@dhcp-133 ~]# passwd karl

Changing password for user karl.

New UNIX password:

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

# Assign the user account to an SELinux login

[root@dhcp-133 ~]# semanage login -a karl

# Assign all the MCS categories to the new login

[root@dhcp-133 ~]# chcat -l --

+Marketing,+Finance,+Payroll,+Personnel karl

:دياستفاده كن chcat از دستور ديكاربر جد ه شدنافزود بررسي يبرا

[root@dhcp-133 ~]# chcat -L -l daniel james olga karl

daniel: Finance,Payroll

james: Marketing

olga: Personnel

karl: Marketing,Finance,Payroll,Personnel

Page 22: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 214از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

ها فايلاختصاص دادن دسته به

نيچنـد يكـه دارا مي ـدارلينوكسـي سـتم يس كي ـمرحله ما نيا درشناسـه كي ـبه كاربري هاي حساباز اين هر كدام .است يحساب كاربر

دسـته يتعداد ني. ما همچنتخصيص داده شده است SELinux يكاربرهـا را بـه دسـته ني ـو ا مي ـا كـرده جاديا مانخاص پيكربندي يمناسب برا

.ميا كاربران مختلف اختصاص داده

ن تحـت همـان همچنـا ستميموجود در س هاي فايلحال، تمام نيا با(امـا اسـت قابـل دسـترس يهر كس ـبراي رو نيو از ا رنديگ يرده قرار م

). TE يهـا تيو محـدود DAC نـوكس يهمچنان بر اسـاس اسـتاندارد ل اختصـاص سـتم يمختلف در س هاي فايلها را به يبند دسته دياكنون ما با

كنند. دايپ يدسترس ها آنتا فقط كاربران مناسب بتوانند به ميده

:ميكن يم جاديا Daniel يركتوريدر دا ليفا كيمثال، ما يبرا

[daniel@dhcp-133 ~]$ echo "Financial Records 2006"

> financeRecords.txt

:دياستفاده كن ls -Zابتدا از دستور ليفا يتيامن يمحتوا يبررس يبرا

[daniel@dhcp-133 ~]$ ls -Z financeRecords.txt

-rw-r--r-- daniel daniel user_u:object_r:user_home_t

financeRecords.txt

فـرض شيپ ـ نـه يزم يدارا لي ـمرحله فا نيكه در ا ديداشته باش توجه) user_home_tكـاربر ( يخانگ يركتوريشده در دا جاديا ليفا كي يبرا

بـا ميتـوان ي. مـا م ـ داده نشده استبه آن اختصاص يا دسته چياست و هكه ي. اكنون وقتميرا اضافه كن دسته مدنظرمان chcatر استفاده از دستو

دسـته ني ـكه ا دينيبب ديتوان يم د،يكن يم يبررس ار ليفا يتيامن يمحتوا اعمال شده است.

Page 23: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

215 فصل اول: امنيت سرورهاي لينوكس /

[daniel@dhcp-133 ~]$ chcat -- +Finance

financeRecords.txt

[daniel@dhcp-133 ~]$ ls -Z financeRecords.txt

-rw-r--r-- daniel daniel

root:object_r:user_home_t:Finance financeRecords.txt

ـ لي ـفا كي ـبـه دي ـاز مـوارد، شـما با ياريبس در دسـته كي ـاز شيبكـاربران از يبرا ها فايلاز يمثال، ممكن است بعض ي. برادياختصاص ده

د.نو حقوق و دستمزد قابل دسترس باش يهر دو بخش مال[daniel@dhcp-133 ~]$ chcat -- +Payroll

financeRecords.txt

[daniel@dhcp-133 ~]$ ls -Z financeRecords.txt

-rw-r--r-- daniel daniel

root:object_r:user_home_t:Finance,Payroll

financeRecords.txt

نـه يانـد در زم اختصـاص داده شـده فايلكه به ييها كدام از دسته هر دي ـتوان يشـوند. شـما م ـ ياده م ـد شينمـا )Security Context( تيامن

. فقـط كـاربران اختصـاص ديحذف كن ياكرده اضافه ها فايلها را به دسته. دنداشـته باش ـ يدسترس ـ لي ـد بـه آن فا ن ـتوان يم داده شده به آن دسته

را ياجازه دسترس ـ قبلاً TEو DAC نوكسيل يها كه مجوز ديفرض كن( ).اند داده

در اسـت اختصـاص داده شـده گـر يگـروه د كيكاربر كه به كي اگر كند: يم افتيخطا در اميپ كيباشد، ليبه فا يدسترس يتلاش برا

[olga@dhcp-133 ~]$ cat financeRecords.txt

cat: financeRecords.txt: Permission Denied

Page 24: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 216از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

)MLS( يسطح چند تيامن

وكارهـا از كسـب ياريمحرمانـه در بس ـ اياز اطلاعات حساس حفاظتقرار افراد عموم اريدر اخت ياطلاعات نيكه چن يت. در صورتمهم اس اريبسو باعـث مواجه شود يمال اي يوكار ممكن است با مسائل قانون كسب رد،يگ

تواننـد يم ـ اين مسائل. در اغلب موارد، شود ياز دست دادن اعتماد مشتر كنند.ناپذيري ايجاد جبران يمال يها انيز

،يوتريكامپ ستميس كيدر يتيناز سطوح مختلف ام ياطلاعات داشتنجـدا كـردن سـطوح به علـت مستقيماًموضوع نياست. ا يواقع يديتهد

اگر كاربران مختلـف بـا اسـتفاده از يحت ست،ياطلاعات ن تيمختلف امنمتفـاوت يدسترس يها مختلف و كنترل يمختلف، با مجوزها يها حساب .دنشو ستميوارد س

يت ـيهـر سـطح امن يرا برا ياصاختص يها ستميها س از سازمان يبرخ مكانيسـم كي ـ. هستندگران اريحال، اغلب بس نيا كنند. با يم يداريخر

يدسترس ـ يبـرا يتيفعال كردن كاربران در سطوح مختلف امن يلازم برا اطلاعات است. يترس از آلودگ نداشتن، ستميهمزمان به س

نـد: ك يجامعه دفاع م يتيامن يها يبند از طبقه يچند سطح اصطلاح .امنيت زيادو يمحرمانه، مخف

ننـد، يشـده را بب يبنـد بتواننـد اطلاعـات طبقـه افـراد نكـه يقبل از ااعتبـار محرمانـه يكـه دارا ي. كسـان شود ياعطا م ها آنبه لازم يمجوزها

نـان ياطم هـا آنهستند تنها مجاز به مشـاهده اسـناد محرمانـه هسـتند؛ مربـوط بـه نيكننـد. قـوان تجوجس ـ را امنيتياطلاعات بتوانند ندارند كه

؛ دنكن يعمل م بالعكستر به سطوح بالاتر و نييسطوح پا زها ا داده انيجر نشان داده شده است. ريزشكل در كه

Page 25: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

217 فصل اول: امنيت سرورهاي لينوكس /

Bell-La Padula (BLP)مدل

SELinuxكـه اطلاعـات چنـد ييهـا ستمياز س گريد ياري، مانند بسمـدل ني ـكنـد. ا ياسـتفاده م ـ BLPكننـد، از مـدل يرا حفظ م يسطح

بـر اسـاس سـتم يس دروند ن ـتوان يكند چگونـه اطلاعـات م ـ يمشخص م. بـه ابـد ي اني ـجر ءيبه هر موضوع و ش ـ اختصاص داده شده يها برچسب :ديكن زير توجهنمودار

Page 26: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 218از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

يها بـرا ها از برچسب ها و شبكه انهيكاربران، را ،يستميس نيچن تحت ـ يهـا م ـ كننـد. داده ياسـتفاده م ـ تي ـح امنونشان دادن سـط نيتواننـد ب

تر به سطح نيياز سطح پا اي "secret"و "secret"مانند، مانند يسطوحاست كـه كـاربران در سـطح يعنم آنبه مسئله نيبالاتر، حركت كنند. ا

»Secret «نيبه اشتراك بگذارنـد و همچن ـ گريكديرا با هاهداد توانند يم كنند. يابي)، بازنييسطح پا يعنياطلاعات را از سطح محرمانه ( توانند ميتـر نييسـطح پـا كيسطح بالاتر به كياز توانند ميها ن حال، داده نيا با

بـا "secret"در سـطح يندهايمشاهده فرآمانع مسئله ني. ادنابي انيجراز ني. همچن ـشـود مي "Top secret"عنوان باشده يبند اطلاعات طبقه

تـر نييسطح بـالاتر بـه سـطح پـا يندهايفرآدر نوشتن تصادفي اطلاعات بـدون خوانـدن، بـدون "عنـوان مـدل با اين كار. ديآ يمممانعت به عمل

شود. يم دهينام "نوشتن

Page 27: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

219 فصل اول: امنيت سرورهاي لينوكس /

MLS ستميس تازايو امت )System Privileges(

يمعمــول يدسترســ يبــا مجوزهــا شــهيهم MLS يدسترســ نيقــوانكـاربر بـا سـطح كي ـمثال، اگـر يشوند. برا يم بي) تركليفا ي(مجوزها

يريجلـوگ ي) بـرا DAC( يارياخت ياز كنترل دسترس "secret" يتيامنهمچنـين كـاربران اسـتفاده كنـد، ريتوسط سـا ليفا كيبه ياز دسترس

تربـالا تي. امندهد ينمرا "top secret" يتيسطح امن به يدسترساجازه طـور بـه را سـتم يس لي ـفا كيبه رمجازيغ يخودكار اجازه دسترس طور به

دهد. يخودسرانه نم

مجوزهاي دسترسيخودكار طور بهسطح بالا يمجوزها يدارا كاربران هـا آن كـه يآورنـد. در حـال يبدسـت نم ـ يچند سطح يها ستميرا در س

كـه داشـته باشـند يدسترس ـ وتريممكن است به تمام اطلاعات در كـامپ است. مديرمتفاوت از داشتن حقوق

و موضوع اءياش ت،يسطوح امن

يت ـيبـا سـطوح امن اءيكه در بالا ذكر شد، موضوعات و اش ـ طور همان)SLsاند شده ليتشك تيشوند كه از دو نوع موجود يم يگذار ) برچسب:

ماننـــد يسلســـله مراتبـــ يژگـــيو -: )Sensitivity( تيحساســـ. 1"secret" اي "Top secret".

ري ـغ يهـا يژگ ـياز و يا مجموعـه -: )Categoriesهـا ( يبند دسته. 2 ."UFO" اي "US Only"مانند يمراتب سلسله

SL ايصفر يداشته باشد و ممكن است دارا تيحساس كي حتماً ديبا باشد. ها دستهي از شتريبتعداد

secret /UFO ،Crypto} ،{Top از: { انـد عبـارت SL يهـا ثـال م

Secret / UFO ،Crypto ،Stargate} و {Unclassified{

Page 28: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 220از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

MLS استيس

SELinux ــدل ــا Bell-La Padulaاز مــ Type و BLP يــ

Enforcement ياTE كنـد. بـه عبـارت ياسـتفاده م ـ يكپـارچگ ي يبـرا مجـوز يع داراموضـو كي ـكنـد كـه يم نيتضم MLS استي، ستر ساده

خاص است. يبند طبقه با ءيش كيبه يدسترس يمناسب برا

كي ـبداند چگونه پـردازش ديبا ستمي، سMLSعنوان مثال، تحت به / Top Secretمحرمانه { نديفرا كيتوان يم ايدرخواست را انجام دهد: آ

UFO ،Rail gunـ } Top Secret / UFOبـه نـام { لي ـفا كي ـ ا} را ب نوشت؟

خواهد كرد. نييآن، پاسخ را تع ياجرا شده برا استيس و MLS مدل

MLS يازهـا ي) از نيحال بحران نيمحدود (و در ع اريبس يا مجموعه ري ـنظ گيرانـه سـخت يها طياطلاعات و پرسنل در مح بر اساسرا يتيامن

و دشوار اسـت معمول طور به MLSكند. كار با ياداره م نظامي يها ارگان .شود نگاشت نمي يعموم يهاويبه سنار يبه خوب

TE تحتSELinux است انيو قابل ب ريپذ انعطاف يتيطرح امن كي باشد. يم MLSتر از موارد مناسب ياريكه در بس

هنـوز مـورد يسـنت MLSوجود دارد كه ويسنار نيحال، چند نيا باشـده رهيذخ يها كه در آن داده ليسرور فا كيعنوان مثال، است. به ازين

مجوزهـاي بـا انيو مشـتر باشـند متفاوت يها يبند طبقهت از ممكن اس يت ـياز سـطوح امن يادي ـبـه تعـداد ز مسئله نيشوند. ا ميمختلف متصل

.داردواحد ستميس كيدر قدرتمندي ياسازبه جد ازيشود و ن يمنجر م

باشد MLSشامل بايد SELinuxآن است كه ليدل وينوع سنار نيا

.)TE(در كنار

Page 29: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

221 فصل اول: امنيت سرورهاي لينوكس /

SELinux استيس يمرور كل

ــ قســمت نيــادر ــ كي از ي، برخــSELinux اســتياز س يمــرور كلدر يبا مـرور كوتـاه .نماييم ميرا بررسي آن با آن و نحوه كار كاربردهاي

ن،ي ـاز ا پـس .كنيم ميد، آغاز نكه در آن قرار دار ييها و جا استيس مورد يهـا . بحثرديگ يبوت مورد بحث قرار م نديدر طول فرا SELinuxنقش

هـا، يژگ ـيها و مجوزها، و كلاس ،يتيامن يها نهيدر مورد زمصورت گرفته هـا و تي، محـدود هـا نقـش به بردارها، ماكروها، كاربران و يانواع، دسترس

.دنباش مي يا هسته يها رابط يساز خلاصه

؟ستيچ SELinux استيس

يتــياســت كــه موتــور امن ينيمجموعــه قــوان SELinuxسياســت SELinux كند. انواع يم تيدارا هObject را پـردازش يهـا ها و دامنـه

تواننـد يكـه م ـ ييها محدود كردن دامنه يبرا ها نقشاز و كند يم فيتعرمشـخص كـردن يكاربر بـرا تيهو يدارا كهشود يوارد شوند استفاده م

بـه دسـت آورنـد. در اصـل، انـواع و آن را تواننـد يكه م ـ است ييها نقشهسـتند اءياست كه انواع مربوط به اش نيند، تفاوت اها معادل هست دامنه د.نشو ياعمال م هانديها به فرآ كه دامنه يدر حال

)SELinux )SELinux Types انواع در

اسـاس بـر بنـدي دستهاين است كه ها آيتم يبند روش دسته كينوع هـدف بـا لزومـاً امـر ني. اگيرد صورت مي يتيامن دگاهياز د ها آنشباهت كي ـمثال، ي. براستيسند مرتبط ن كي يمحتوا ايبرنامه كيبه منحصر

باشد، اما اگر يهر هدف يداشته باشد و برا ييتواند هر نوع محتوا يم ليفاآن كاربر وجود داشته باشد، به عنوان يبه كاربر تعلق دارد و در پوشه اصل

شود. يدر نظر گرفته م user_home_tخاص، يتينوع امن كي

Page 30: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 222از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

بـا راي ـشـوند، ز يدر نظر گرفته م كسانيبه صورت ءيانواع شبنابراين قابل دسترس هسـتند. يكسان وهيبه ش موضوعات واز ي يكسانا مجموعه

داشـته موضـوعات ريمشابه بـا سـا ياگر مجوز ندهايفرآ ب،يترت نيبه همكـه ييها هدف، برنامه استيدر س. باشند يمشابه م يا وهيشبه ، نيز باشند

از يبـا نـوع يـي اجرا لي ـفا كي ـشوند، ياجرا م unconfined_tدر دامنه اسـت كـه يمعن ـ آنبه ني، اSELinux دگاهي. از دهستند sbin_t دامنه انجـام دهنـد ستميتوانند در س يتوانند و نم ياز نظر آنچه كه م ها آنهمه

معادل هستند.

ــه ــال، فا ب ــوان مث ــعن ــياجرا لي ــا ي ــوع usr/bin/postgres/ ينريب نpostgresql_exec_t ي دارد. تمــام daemon ــا ــوع يدارا هــدف يه ن

*_exec_t قابل اجرا هستند. در واقـع، تمـام يكاربرد يها برنامه از نوعو createlang ،pg_dumpماننـد PostgreSQL يـي اجرا يها مجموعه

pg_restore مشابه نوعpostgresql_exec_t يهستند و بعـد از اجـرا شوند. يمنتقل م postgresql_tدامنه كيآن به

عانوا يدسترس نييتع يبرا يخط مش نياستفاده از قوان

د چگونه نكن يم بيانكند كه يم نييرا تع ينيقوان SELinux استيسداشته باشد. فقط آنچه كه بـه طـور خـاص يهر دامنه به هر نوع دسترس

يفرض، هر عمل ـ شيطور پ شود مجاز است. به ياجازه داده م نيتوسط قوان ليــكــه در فا يمعنــ نيــشــود، بــه ا يمــ )audit( يوع و حسابرســممنــ

AUDIT_LOG ــوارد ــود يمــ ــا Linux. در شــ ــورد نيــ ــه مــ بــ بـاينري به فرمت استيس ني. اشود ميارسال var/log/messages/فايلو هر بار كه سـرور شود مي ليهسته كامپا يتيدر سرور امن يريبارگ يبرا كـش AVCعملكـرد در يازس ـ نـه يكنـد، به يم ـ يري ـگ ميتصم يتيامن

)cache( شود. يم

Page 31: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

223 فصل اول: امنيت سرورهاي لينوكس /

اضـافه كـردن اي ـموجـود هاي فايل رييتوان با تغ يرا م يخط مش نيا اسـت ي) به درخت سFC( يمتن لي) و فاTE( ينوع محل يياجرا هاي فايلدر هسـته يتوان در زمان واقع ـ يرا م ديجد يها استيس نيكرد. ا فيتعر

بوت توسـط نديدر طول فرا يشصورت، خط م نيا ريغ كرد. در يبارگذارinit و استيس لهيبه وس ستميس اتيهر عمل ت،يدر نها .شود يم يگذاربار

شود. يم نييتع ها فايلنوع برچسب

SELinux ياجبار يو كنترل دسترس )MAC(

SELinux ياجبـار يكنتـرل دسترس ـ سـازي از يك پيـاده )MAC ()، TEوع تطبيـق ( هر دو ن SELinuxاست. بسته به نوع سياست امنيتي،

ي) و يـا امنيـت چنـد سـطح RBACنقـش ( بر اسـاس يكنترل دسترس(MLS) Bell-La Padula كند. يرا اجرا م

بـه كـه كنـد ياجرا شده را مشخص م ـ طيدر مح نيقوان استيس نيابـه طـور خـاص نوشـته شـده اسـت. يت ـيامن استينوشتن س يبراي زبانسـطح نيقـوان يآور جمـع يبرا M4 ياز ماكروها يخط مش سندگانينوموجـود اسـت يدر س M4 ياز ماكروهـا يكنند. تعـداد ياستفاده م نييپا

نيقوان نيكنند. ا يم ليرا تسه ديجد استيس نوشتنشوند كه يم فيتعر ياريبس باكه شوند بيان مي policy.conf ليفا ايجاداز يبه عنوان بخش

.شوند مي ليمپاكا ينريبا استيدر سو د نشو يپردازش م هاضاف نياز قوان

يبـرا يا حـوزه چيشـود و ه ـ يم ميبه دو دسته تقس يدسترس حقوق. حركت ستين ازين گريد يها تمام دامنه يبرا سرشاخهعنوان انجام كار به

يهـا ورود، برنامـه يهـا برنامـه قي ـاز طر اسـت، يهـا توسـط س دامنه نيب دي ـجددر دامنـه ديجد نديفرآ كي يبا اجرا اي newroleمانند كاربرديانتقـال شـناخته كي ـها به عنـوان حوزه نيحركت ب نيشود. ا يكنترل م

شود. يم

Page 32: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 224از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

كجاست؟ يخط مش

و درخـت منبـع. يـي وجود دارد: درخت دودو استيس برايبخش دوارائـه <selinux-policy-<policyname توسـط بسـته ينريدرخت با كند. يرا فراهم م ينريبا استيس ليشده و فا

شـود، ينصـب م ـ selinux-policy-devel بسته كه يعوض، زمان در تواند ساخته شود. ياز منبع م ينريبا يخط مش

ينريبا يدرخت هاي فايل

/etc/selinux/targeted/ - هدف استيس يبرا شهير يركتوريدا نيا است. ينرياست و شامل درخت با

/etc/selinux/targeted/policy/ - يخـط مش ـ فايـل ي بـراي محل ني ـا يبرا SELINUX_POLICY رياست. متغ <policy.<xx ينريبا

شود. يپوشه استفاده م

/etc/selinux/targeted/contexts/ - يت ـياطلاعات امن ي برايمحل مختلـف يهـا است كه در زمان اجرا توسط برنامـه يكربنديپ هاي فايلو

.رديگ يمورد استفاده قرار م

/etc/selinux/targeted/contexts/files/ - ــامل ــهيزم ش ــا ن يهكـه يزمـان resteconكه توسـط است ليفا ستميكل س يفرض برا شيپ

.شود داده مي ارجاعاجرا شود remabeling اتيعمل

/etc/selinux/targeted/contexts/users/ - ــدف، اســتيدر س ه يزمـان ،نهيزم نييتع يبرا ها فايل نيپوشه است. ا نيدر ا شهير ليفا تنها يعنوان مثال، بـرا د. بهنشو يشود استفاده م يم ستميكاربر وارد س كيكه

.تاس user_u: system_r: unconfined_tزمينه شه،يكاربر ر

Page 33: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

225 فصل اول: امنيت سرورهاي لينوكس /

/etc/selinux/targeted/modules/active/booleans* - ــا ييج .دنشو ياجرا م هاBooleanاست كه

ياز ابزارها ديكنند. شما با رييتغ يدست ديهرگز نبا ها فايل نيانكته: getsebool ،setsebool وsemanage كاري دست يبرا boolean هاي

runtime دياستفاده كن.

منبعدرخت هاي فايل

selinux-policy-devel پكـيج اسـت، يس يهـا توسـعه مؤلفـه يبرا اسـت يسـاختن س يمورد استفاده بـرا يرابط كاربر هاي فايلشامل تمام

كنند ياستفاده م يمش خطساختن كه از يشود افراد يم هيباشد. توص يم استفاده كنند. يمش خط هاي ماژول جاديا يبرا ها فايل نياز ا

ــا ــته نيــ ــلبســ ــاي فايــ ــط س هــ ــتيرابــ ــذار اســ را در يگــ/usr/share/selinux/devel/include وMakefile هــــــــــــا را در

/usr/share/selinux/devel/Makefile كند. ينصب م

ازي ـن SELinuxمختلـف يرهايكه به مس ـ ييها كمك به برنامه يبرارا بـه رهايكنـد كـه مس ـ ياز توابع را فراهم م يتعداد libselinuxدارند، ازي ـن كـار ني. اگرداند يبازممختلف يها يركتوريو دا يكربنديپ هاي فايل مكـان از آنجا كـه ژهيو به، برد ميرا از بين رهايسكردن م hard-codeبهدر SELINUXTYPE ميبـــه تنظـــ يفعـــال بســـتگ يهـــا اســـتيس

/etc/selinux/config .دارد

تي ـشود، موقع ميتنظ strictبه SELINUXTYPEمثال، اگر يبرا قرار دارد. etc/selinux/strict/ تحتفعال استيس

:دياستفاده كن ريتوابع موجود، از دستور ز ستيمشاهده ل يبراman 3 selinux_binary_policy_path

Page 34: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 226از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

بوت نديدر فرا استينقش س

SELinux دارد. از سـتم يس يانـداز راه هي ـدر مراحـل اول ينقش مهم Initشـوند، يگـذار برچسـب حيصح دامنهبا ديبا ندهايآنجا كه تمام فرآ

ـ يدهد تا هماهنگ يبوت انجام م نديفرا ليدر اوا ياساس اتيعمل كي نيب را حفظ كند. استيس يو اجرا يگذار برچسب

هي ـشد، پـردازش اول يگذاربوت بار نديكرنل در طول فرا نكهياز ا پس SID. شود مي) اختصاص داده هياول SELinux ID )SID هيبه هسته اول

يبارگـذار هـا يمش ـ خـط نكـه يقبل از ا bootstrapping يبرا هياول يها شود. يد استفاده منشو

/sbin/init پوشه/proc/ راmount سـتم ينوع س يسپس برا كند يم است كـه يموجود باشد، بدان معن كند. اگر يجستجو م selinuxfs ليفا

SELinux .در هسته فعال است

پـارامتر قي ـاگـر از طر اي ـنكـرد دايرا در هسته پ init SELinux اگرboot پارامترselinux = 0 اگر ايشود رفعاليغ/etc/selinux/config

بـدون سـتم يبـوت بـا س نـد ي، فرآSELINUX=disabledمشخص كند SELinux ابدي يادامه م.

كند، اگـر از يم نييرا تع enforcingتيوضع init، همزمان صورت به ياتفـاق زمـان ني ـمتفاوت باشد. ا etc/selinux/config/ درون ماتيتنظفـرض تـا شيبوت منتقل شود. حالت پ نديافتد كه پارامتر در طول فرا يم

شود، مجاز است و سـپس اجـرا توسـط يم يبارگذار يكه خط مش يزمان enforcing = 1 اي ـ enforcing = 0 يپارامترهـا اي ـ ينـد كربيپ لي ـفا

شود. يم ميتنظ

./ نصب شده استselinuxموجود باشد، / SELinux اگر

شـده يبانيپشـت استينسخه س يبرارا selinux/policyvers/كرنل كنـد مـي نيـي تع etc/selinux/config/با بررسـي init. كند بررسي مي

Page 35: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

227 فصل اول: امنيت سرورهاي لينوكس /

در را مـرتبط لي ـفاسپس هدف، استيفعال است، مانند س استيكدام س$SELINUX_POLICY/policy.<version> كند. ي ميبارگذار

يبانيكـه توسـط هسـته پشـت نباشـد يا نسخه ينريبا يخط مش اگررا اسـت يس لي ـكنـد كـه فا يتـلاش م ـ initباشد، ينسخه قبل وشود يم

تـر را فـراهم يميقـد يهـا نسخه بهبرگشت يسازگار نيكند. ا يبارگذار كند. يم

etc/selinux/targeted/booleans/درموجـود يمحل ماتيتنظ اگر ماتيتنظ بر اساس initشده متفاوت باشد، ليكامپا هاياستياز دسته س

ريي ـحافظـه تغ يها استيدر هسته به س يمش خط يريقبل از بارگ يمحل كند. يم

يبه طـور كامـل در هسـته بارگـذار استي، سفرآيندمرحله از نيا در نگاشـت استيدر س يتيامن يها نهيبه زم هياول يها SIDشود. سپس يم :user_u: system_r دي ـهـدف، دامنـه جد اسـت يشوند. در مورد س يم

unconfined_t را يتيامن يها نهيتواند زم ياست. در حال حاضر هسته م .برگرداندداخل هسته تيسرور امن از ايبه صورت پو

توانـد بكـه يكنـد تـا در صـورت يم ـ اجـرا مجـدداً خود را initسپس اسـت يس ي. بـرا ابـد يانتقـال يگريكند، به دامنه د فيآن را تعر استيس

يبـاق unconfined_tدر دامنـه initنشده و فيتعر يرييتغ چيهدف، ه ماند. يم

.ابدي يخود ادامه م يبوت معمول نديبا فرآ initمرحله، نيا در

كند تـا كنتـرل ياجرا م مجدداًخود را initاست كه امر آن نيا ليدلدامنـه كيمجدد انتقال به اجراي دهد. هدف قيرا تطب SELinux قيدقتوانـد در خود است. تنها راهي كه يك فرآيند مي يگرانش نيبا قوان ديجد

هـا يك دامنه وارد شود، در حين اجرا است، به اين معني كه ايـن پروسـه هستند. ها دامنه نقطه ورود به تنها

Page 36: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 228از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

init_t، ماننـد init يدامنـه خـاص بـرا كي ـ استيمثال، اگر س يبرا، به دامنـه زمـان kernelمانند ه،ياول SIDاز رييتغ يروش برا كي، باشد. از آنجا كه ممكـن وجود داشته باشد لازم است ،init يبرا صحيح ياجرا

يشده است تـا پـس از بارگـذار يكدگذار initانتقال رخ دهد، نياست ا اجرا شود. بارهد دوخو يمش خط

قــــانون دهــــد كــــه يرخ مــــ يزمــــان initگــــذار نيــــاdomain_auto_trans(kernel_t, init_exec_t,

<target_domain_t>) قـانون ني ـوجود داشـته باشـد. ا يدر خط مش كـه در دامنـه يزي ـهـر چ يبـر رو كيانتقال اتومات كيكند كه يم انيب

kernel_t از ليفا كي و شود ياجرا مinit_exec_t رخ كنـد يم ـ جرارا ا ،دامنــه ديــجد نــديدهــد، فرآ يرخ مــ اجــرا نيــكــه ا ي. هنگــامدهــد مــي

>target_domain_t< ماننـد يهـدف واقع ـ دامنـه با استفاده ازinit_t .يابد ياختصاص م

و مجوزها ءي اشياها كلاس

SELinux دهـد يكند و اجازه م ـ يم فيتعر اياش يكلاس برا يتعدادد. ي ـكن يبنـد خاص دسـته يها را با استفاده از كلاس ياصخ يها تا گروه

:مثلاً

از انـد عبـارت لي ـمـرتبط بـا فا يهـا كلاسfile system يبـرا هـا. هـر يركتـور يدا يبرا dirو ها فايل يبرا file ل،يفا ستميس

مرتبط با آن است. يمجوزهااز يا مجموعه يكلاس دارا

افــتي، درmount ،unmountتوانــد يمــ file system كــلاس. كـلاس باشـد رهي ـو غ مجـدد برچسب ر،يمقاد ميها، تنظ يژگيو

file ماننـد خوانـدن، نوشـتن، يمشـترك فايـل مجوزهاي يدارانـام، اضـافه ريي ـتغ نـك، يل م،يصفات، قفل، ترم ميگرفتن و تنظ

است. رهيكردن و غ

Page 37: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

229 فصل اول: امنيت سرورهاي لينوكس /

ــلاس ــا ك ــامل يه ــبكه ش ــه ش ــوط ب ــرا tcp_socketمرب يب يگـره بـرا و شـبكه يهـا رابـط يبـرا TCP ،netif يها سوكت

.است شبكه يها گره

يها و سوكت TCP ،UDPتواند در يم netifمثال، كلاس براي، tcp_recv ،tcp_send ،udp_send ،udp_recvخــــــــام (rawip_recv وrawip_sendانجام دهد افتي) ارسال و در.

ني ـهسته مطابقت دارند، بـه ا هاي declarationدر ءيش يهاكلاس. گيرد انجام نميسهولت با ء،يكلاس ش اتيجزئ رييتغ ايكه افزودن يمعن است. نيز صادقمجوزها يامر برا نيهم

ءيش ـ كي ـ يتواند بـر رو يموضوع م كيهستند كه يها اقدامات مجوز يهـا مجوزهـا درخواسـت ني ـدهد. اباجازه آن را استيانجام دهد، اگر س

كند. يرد م ايدهد يمفعالانه اجازه SELinuxكه هستند يدسترس

(Targeted Policy) هدف استيس

Linux ،يبانيرا پشـت باشـد هـدف اسـت يس كـه واحـد استيس كي ــ ــت س يم ــد. تح ــتيكن ــوع و شـ ـ اس ــر موض ــدف، ه ــه ءيه در دامن

unconfined_t اءيشـود. اش ـ يهدف خـاص اجـرا م ـ يها مونياز دا ريغب ارنــد و بــه ند يتيمحــدود گونــه هــيچ unconfined_tموجــود در دامنــه

ــتفاده از امن ــاس ــتاندارد ل تي ــوكسياس ــي ن ــي DAC يعن ــد برم . گردن يهـا در حـوزه را دارا هسـتند هـدف اسـت ياز س يكه بخش ييها مونيدااجـرا سـتم يكـه در س ياتي ـشوند و در هـر عمل يخود اجرا م )هاي دامنه(از كـه ييهـا مـون ياد شود ميباعث مسئلهاين . دارند يتشود، محدود يم

در وگيرنـد ن هوجه مورد سـوء اسـتفاد چيبه هنيستند حملات نوع خاص .واقع نشوندمعرض خطر

هـدف اسـت يهـر دو در س ntpو http دايمـون هـاي عنوان مثال، به)targeted policy( يهــا در دامنــه بيــشــوند و بــه ترت يمحافظــت مــ

Page 38: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 230از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

httpd_t وntpd_t سيامـا سـرو ؛ شوند ياجرا م SSH اسـت يس ني ـدر ا شود. ياجرا م unconfined_tدر دامنه جهيشود و در نت يمحافظت نم

يرا بـرا يمختلف ـ يهـا كـه دامنـه دي ـكن توجه رينمونه ز يخروج به دهد: يذكر شده در بالا نشان م يها مونياد

user_u:system_r:httpd_t 25129 ? 00:00:00

httpd

user_u:system_r:ntpd_t 25176 ? 00:00:00

ntpd

system_u:system_r:unconfined_t 25245 ?

00:00:00 sshd

)Strict Policy( گيرانه سخت استيس

ــرخلاف ــدف، س اســتيس ب ــم Strict Policyدر اســتيه ــا محك ي كي ـدر ءيهر موضـوع و ش ـ ،گيرانه سخت استياست. در س گيرانه سختهـا بـه صـورت ت و انتقـال خاص وجود دارد و همـه تعـاملا يتيامن دامنه

.گيرند ميقرار يگذاراستيجداگانه در قواعد س

(Targeted Policy) هدف استيدر س ها نقشو انكاربر

هدف مورد نظر فعال استيس يرا كه برا يخاص يها نقشقسمت نياوجـود دارد يدر هر نقش unconfined_tدهد. نوع يشده است پوشش م

هـدف را كـاهش اسـت يدر س ها نقشبودن ديمف يكه به طور قابل توجه اسـت يس ميبه پـارادا رييتغ ازمندين ها نقشتر از دهد. استفاده گسترده يم

دامنه به صورت جداگانه در نظـر كيدر نديكه هر فرآ ستا گيرانه سخت شود. يگرفته م

Page 39: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

231 فصل اول: امنيت سرورهاي لينوكس /

و system_rهدف تنها دو نقش وجود دارد: استي، در سمؤثرطور بهobject_rهيول. نقش ا system_r نقش را بـه نيا يگريد زيو هر چ است

ـ ياهداف سازگار يبرا ديگر يها نقش. برد ميارث هـدف و اسـت يس نيب شده است. فيتعر گيرانه سخت استيس

شده است. نقش چهارم، فيتعر استياز چهار نقش توسط س نقش سهobject_r ،از سـت يموجـود ن استياست و در منبع س ينقش ضمن كي .

نچنـد اعـلا اي كيبا استفاده از ي وانواع مختلف وسيله به ها نقشا كه آنجوجود ندارد فايلي چيه رند،يگ يشوند و در آن قرار م يم جاديا استيدر س

از استيس نيكه ا ديرا اعلام كند. (به خاطر داشته باش ها نقش يمكه تما جداگانه ساخته شده است.) ليفا نيچند

system_r: ينـدها يجز فرآب ستميس يندهايهمه فرآ يانقش بر ناي كاربر است:

system_r (28 types)

dhcpd_t

httpd_helper_t

httpd_php_t

httpd_suexec_t

httpd_sys_script_t

httpd_t

httpd_unconfined_script_t

initrc_t

ldconfig_t

mailman_cgi_t

Page 40: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 232از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

mailman_mail_t

mailman_queue_t

mysqld_t

named_t

ndc_t

nscd_t

ntpd_t

pegasus_t

portmap_t

postgresql_t

snmpd_t

squid_t

syslogd_t

system_mail_t

unconfined_t

winbind_helper_t

winbind_t

ypbind_t

user_r: يكـاربران معمـول يفـرض كـاربر بـرا شيپ ـ ، نقشنقش ناي مورد منفرد انممكن است كاربر ،گيرانه سخت استياست. در س نوكسيل

Page 41: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

233 فصل اول: امنيت سرورهاي لينوكس /

يبـرا ينقـش خاص ـ تواننـد يكه كاربران م ـ يطور به رند،ياستفاده قرار گهدف، تمام كاربران در استيداشته باشند. در س ياختصاص اتيانجام عمل

شوند. يم رااج unconfined_tدامنه object_r: در SELinux هنگام استفاده از ،RBAC ،يبـرا هـا نقش

يبـرا يا سخت گيرانه strictlyصورتشوند. اهداف به ياستفاده نم اءياش گـرا فهيوظبه صورت ها نقشعلت است كه آنبه ني. ااند ايجاد شدهافراد

دهنـد يم ـ دهند كه اقـدامات را انجـام يم ليرا تشك ييها هستند و گروهعنـوان موضـوع بـه يجمع ـ طـور به ها نيا). همه ندهايعنوان مثال، فرا (بهدارند و نقش object_rنقش اءيتمام اش ليدل نيشوند. به هم يم فيتعر

شود. يدر برچسب استفاده م دارنده نگهفقط به عنوان

sysadm_r: سـخت استيس كيدر ستميس رينقش مد ناي(strict) نقـش د،يشـو ستميوارد س rootعنوان كاربر به ميمستق است. اگر به طور

، دسـتور باشـد درسـت مـورد ني ـباشد. اگر ا staff_rتواند يفرض م شيپnewrole -r sysadm_r سـتم يس رينقش مـد رييتغ يرا برا SELinux

.ديكن فادهاست ستميس تيريمد فيانجام وظا يبراsysadm_r (6 types)

httpd_helper_t

httpd_sys_script_t

initrc_t

در نظـر sysadm_r يسـازگار يرا بـرا ري ـز نكتـه ، هدف استيدر س :باشيد داشته

تي ـهدف قـرار دارد. هو استيكاربر در س تيهو كيتنها مؤثرطور بهuser_u چون ه استانتخاب شد libselinux فـرض پـيش عنوان كاربر به

SELinux به كاربرuser_u افتـد كـه كـاربر يم ـ يزماناتفاق ني. ااستSELinux اسـتفاده از باشـد وارد نشـده نـوكس يمشابه كاربر ل .user_u

Page 42: ACM) ﻲـﺳﺮﺘﺳد لﺮﺘﻨﻛ ﻢﺴﻴﻧﺎﻜﻣ ياﺮﺑ ياﻪﻣﺪﻘﻣ … · (RedHat زا EX413 و RH413 كراﺪﻣ) ﺲﻛﻮﻨﻴﻟ يﺎﻫﻪﻜﺒﺷ

RedHat( 234از EX413و RH413مدارك ( سلينوكي ها شبكهو هاسيسرو/ امنيت در سرورها،

يها استيدر س رييشود تغ يهدف، باعث م استيكاربر در س يكعنوان بهstrict اسـت يبـا س يسـازگار يكاربران براديگر تر شود. آسان strict در

.اند مانده يباقتم سسي

را root دي ـتوان ياست. شما م SELinux در root كاربر ،استثناء تنها ياتفـاق زمـان ني ـ. ادي ـمشاهده كن نديفرآ نهيكاربر در زم تيبه عنوان هو

را از خط فرمـان شـروع SELinux يها مونياد، rootافتد كه كاربر يم يانـداز آغاز شده اسـت، راه initرا كه ابتدا توسط مونياد كي ايكند يم .دكن يم

SELinux يير انتهاكنترل كارب

اسـت يس يدر حال اجرا نوكسيكه ل يزمان ييكاربران نها ،يطوركل به ني. ادارند SELinuxبا يقرار دارد تعامل كم) taegeted policy(هدف

هي ـهمـراه بـا بق unconfined_tاست كه كاربران در دامنـه ليدل نيبه ا در حال اجرا هستند. هدف يها مونياد جز به ستميس

يفيمـانع از انجـام وظـا DACاسـتاندارد يها لب موارد، كنترلاغ دررا ازي ـو مجـوز مـورد ن ي، دسترس ـSELinux كنتـرل شود كه قبل از يم

را همانند زيـر AVCاحتمال دارد كه شما هرگز ب،يترت ني. به اتندنداش : دينكن ديتول

avc: denied message.

ممكـن ييربر نهـا را كـه كـا ياتيو عمل يعموم وظايف ريز يها بخشنـه فيوظا نيد. انده ميانجام دهد پوشش Linux ستميس كياست در شود. يسطوح اعمال م يكاربران تمام يبرايي بلكه كاربران نها يتنها برا