د SELinux لپاره د پیل کونکي لارښود

د SELinux لپاره د پیل کونکي لارښود

د کورس زده کونکو لپاره چمتو شوي مقالې ژباړه "لینکس امنیت"

SELinux یا Security Enhanced Linux د لاسرسي د کنټرول یو پرمختللی میکانیزم دی چې د متحده ایالاتو د ملي امنیت ادارې (NSA) لخوا رامینځته شوی ترڅو د ناوړه لاسوهنو مخه ونیسي. دا د موجوده اختیاري (یا انتخابي) ماډل (انګلیسي اختیاري لاسرسي کنټرول ، DAC) په سر کې د اجباري (یا لازمي) لاسرسي کنټرول ماډل (انګلیسي لازمي لاسرسي کنټرول ، MAC) پلي کوي ، دا د لوستلو ، لیکلو ، اجرا کولو اجازې دي.

SELinux درې طریقې لري:

  1. پلي کول - د پالیسۍ د قواعدو پر بنسټ د لاسرسي انکار.
  2. اجازه ورکوونکي - د هغو کړنو د ثبت ساتل چې د پالیسۍ څخه سرغړونه کوي، کوم چې د پلي کولو حالت کې منع دي.
  3. معیوبیت - د SELinux بشپړ غیر فعال کول.

په ډیفالټ کې تنظیمات دننه دي /etc/selinux/config

د SELinux حالت بدلول

د اوسني حالت موندلو لپاره، چلول

$ getenforce

د اجازې حالت بدلولو لپاره لاندې کمانډ چل کړئ

$ setenforce 0

یا، د موډ بدلولو لپاره اجازه ورکول په پلي کول, vypolnite

$ setenforce 1

که تاسو اړتیا لرئ چې په بشپړ ډول SELinux غیر فعال کړئ، نو دا یوازې د ترتیب کولو فایل له لارې ترسره کیدی شي

$ vi /etc/selinux/config

د غیر فعالولو لپاره، د SELINUX پیرامیټر په لاندې ډول بدل کړئ:

SELINUX=disabled

د SELinux تنظیم کول

هر فایل او پروسه د SELinux شرایطو سره نښه شوې، کوم چې اضافي معلومات لري لکه کارن، رول، ډول، او نور. که دا ستاسو لومړی ځل وي چې SELinux فعالوي، تاسو به لومړی د شرایطو او لیبلونو تنظیم کولو ته اړتیا ولرئ. د لیبلونو او شرایطو ټاکلو پروسه د ټاګ کولو په نوم پیژندل کیږي. د نښه کولو پیل کولو لپاره، د ترتیب کولو فایل کې موږ موډ ته بدلوو اجازه ورکول.

$ vi /etc/selinux/config
SELINUX=permissive

د موډل تنظیم کولو وروسته اجازه ورکولد نوم سره په روټ کې یو خالي پټ فایل جوړ کړئ autorelabel

$ touch /.autorelabel

او کمپیوټر ریبوټ کړئ

$ init 6

یادونه: موږ موډ کاروو اجازه ورکول د نښه کولو لپاره، د موډل کارولو راهیسې پلي کول کیدای شي د ریبوټ پرمهال سیسټم د خرابیدو لامل شي.

اندیښنه مه کوئ که ډاونلوډ په ځینې فایل کې ودریږي ، نښه کول یو څه وخت نیسي. یوځل چې نښه کول بشپړ شي او ستاسو سیسټم بوټ شو ، تاسو کولی شئ د ترتیب فایل ته لاړ شئ او حالت تنظیم کړئ پلي کولاو هم چلول:

$ setenforce 1

تاسو اوس په بریالیتوب سره په خپل کمپیوټر کې SELinux فعال کړی دی.

د لوګو څارنه

تاسو ممکن د نښه کولو پرمهال یا د سیسټم چلولو پرمهال د ځینې غلطیو سره مخ شوي یاست. د دې لپاره چې وګورئ چې ستاسو SELinux په سمه توګه کار کوي او که دا کوم بندر، غوښتنلیک، او نور ته د لاسرسي مخه نه نیسي، تاسو اړتیا لرئ چې لاګ وګورئ. د SELinux لاګ په کې موقعیت لري /var/log/audit/audit.log، مګر تاسو اړتیا نلرئ د غلطیو موندلو لپاره ټول شیان ولولئ. تاسو کولی شئ د غلطیو موندلو لپاره د audit2why افادیت وکاروئ. لاندې کمانډ چل کړئ:

$ audit2why < /var/log/audit/audit.log

د پایلې په توګه، تاسو به د غلطیو لیست ترلاسه کړئ. که په لاګ کې کومه تېروتنه نه وي، نو هیڅ پیغام به نه ښکاره شي.

د SELinux پالیسي ترتیب کول

د SELinux پالیسي د قواعدو یوه ټولګه ده چې د SELinux امنیتي میکانیزم اداره کوي. پالیسي د یو ځانګړي چاپیریال لپاره د قواعدو مجموعه تعریفوي. اوس به موږ زده کړو چې څنګه ممنوع خدماتو ته د لاسرسي اجازه ورکولو لپاره پالیسۍ تنظیم کړو.

1. منطقي ارزښتونه (سوئچونه)

سویچونه (بولین) تاسو ته اجازه درکوي د چلولو په وخت کې د پالیسۍ برخې بدل کړئ، پرته له دې چې نوې پالیسۍ رامینځته کړئ. دوی تاسو ته اجازه درکوي پرته له دې چې د SELinux پالیسیو له ریبوټ کولو یا بیا تنظیم کولو څخه بدلونونه رامینځته کړئ.

بېلګه:
راځئ چې ووایو موږ غواړو د کارونکي کور لارښود د FTP لوستلو/لیکلو له لارې شریک کړو ، او موږ دمخه یې شریک کړی ، مګر کله چې موږ دې ته د لاسرسي هڅه کوو ، موږ هیڅ نه ګورو. دا ځکه چې د SELinux پالیسي د FTP سرور د کارونکي کور لارښود ته د لوستلو او لیکلو مخه نیسي. موږ اړتیا لرو چې پالیسي بدله کړو ترڅو د FTP سرور د کور لارښودونو ته لاسرسی ومومي. راځئ وګورو چې ایا د دې کولو لپاره کوم سویچ شتون لري

$ semanage boolean -l

دا کمانډ به موجود سویچونه د دوی اوسني حالت (آن یا بند) او توضیحاتو سره لیست کړي. تاسو کولی شئ د ftp-یوازې پایلو موندلو لپاره د grep په اضافه کولو سره خپل لټون اصلاح کړئ:

$ semanage boolean -l | grep ftp

او تاسو به لاندې ومومئ

ftp_home_dir        -> off       Allow ftp to read & write file in user home directory

دا سویچ غیر فعال دی، نو موږ به یې فعال کړو setsebool $ setsebool ftp_home_dir on

اوس زموږ د ftp ډیمون به وکولی شي د کارونکي کور لارښود ته لاسرسی ومومي.
یادونه: تاسو کولی شئ د ترسره کولو له لارې پرته له توضیحاتو پرته د شته سویچونو لیست ترلاسه کړئ getsebool -a

2. لیبلونه او شرایط

دا د SELinux پالیسي پلي کولو ترټولو عام لاره ده. هر فایل، فولډر، پروسس او پورټ د SELinux شرایطو سره نښه شوي:

  • د فایلونو او فولډرونو لپاره، لیبلونه د فایل سیسټم کې د پراخو ځانګړتیاو په توګه زیرمه شوي او د لاندې کمانډ سره لیدل کیدی شي:
    $ ls -Z /etc/httpd
  • د پروسو او بندرونو لپاره، لیبل کول د کرنل لخوا اداره کیږي، او تاسو کولی شئ دا لیبلونه په لاندې ډول وګورئ:

پروسه

$ ps –auxZ | grep httpd

درشل

$ netstat -anpZ | grep httpd

بېلګه:
اوس راځئ چې د لیبلونو او شرایطو ښه پوهیدو لپاره یو مثال وګورو. راځئ چې ووایو موږ یو ویب سرور لرو چې د لارښود پرځای /var/www/html/ использует /home/dan/html/. SELinux به دا د پالیسۍ سرغړونه وګڼي او تاسو به ونشي کولی خپلې ویب پاڼې وګورئ. دا ځکه چې موږ د HTML فایلونو سره تړلي امنیتي شرایط ندي ټاکلي. د ډیفالټ امنیت شرایطو لیدو لپاره ، لاندې کمانډ وکاروئ:

$ ls –lz /var/www/html
 -rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

دلته موږ ترلاسه کړل httpd_sys_content_t د html فایلونو لپاره د شرایطو په توګه. موږ اړتیا لرو چې دا امنیتي شرایط زموږ د اوسني لارښود لپاره تنظیم کړو، کوم چې دا مهال لاندې شرایط لري:

-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/

د فایل یا لارښود امنیت شرایطو چک کولو لپاره بدیل کمانډ:

$ semanage fcontext -l | grep '/var/www'

موږ به سیمینیج هم وکاروو ترڅو شرایط بدل کړو کله چې موږ سم امنیتي شرایط وموندل. د /home/dan/html د شرایطو بدلولو لپاره، لاندې کمانډونه چل کړئ:

$ semanage fcontext -a -t httpd_sys_content_t ‘/home/dan/html(/.*)?’
$ semanage fcontext -l | grep ‘/home/dan/html’
/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/html

وروسته له دې چې شرایط د سیمنیج په کارولو سره بدل شي ، د ریسټوریکون کمانډ به د فایلونو او لارښودونو لپاره ډیفالټ شرایط بار کړي. زموږ ویب سرور به اوس وکولی شي د فولډر څخه فایلونه ولولي /home/dan/htmlځکه چې د دې فولډر لپاره امنیتي شرایط بدل شوي httpd_sys_content_t.

3. محلي پالیسۍ جوړول

کیدای شي داسې شرایط وي چې پورته میتودونه ستاسو لپاره هیڅ ګټه نلري او تاسو په audit.log کې غلطۍ (avc/denial) ترلاسه کوئ. کله چې دا پیښ شي، تاسو اړتیا لرئ چې محلي پالیسي جوړه کړئ. تاسو کولی شئ د audit2why په کارولو سره ټولې غلطۍ ومومئ، لکه څنګه چې پورته بیان شوي.

تاسو کولی شئ د غلطیو حل کولو لپاره محلي پالیسي جوړه کړئ. د مثال په توګه، موږ د httpd (apache) یا smbd (samba) پورې اړوند تېروتنه ترلاسه کوو، موږ تېروتنې ګورو او د دوی لپاره پالیسي جوړه کوو:

apache
$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy
samba
$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy

دا http_policy и smb_policy د محلي پالیسیو نومونه دي چې موږ جوړ کړي دي. اوس موږ اړتیا لرو چې دا رامینځته شوي محلي پالیسۍ په اوسني SELinux پالیسۍ کې بار کړو. دا په لاندې ډول ترسره کیدی شي:

$ semodule –I http_policy.pp
$ semodule –I smb_policy.pp

زموږ محلي پالیسۍ ډاونلوډ شوي او موږ باید نور په audit.log کې هیڅ ډول avc یا denail ترلاسه نکړو.

دا زما هڅه وه چې تاسو سره د SELinux په پوهیدو کې مرسته وکړم. زه امید لرم چې د دې مقالې لوستلو وروسته به تاسو د SELinux سره ډیر راحته احساس کړئ.

سرچینه: www.habr.com

Add a comment