سسٹم ایڈمنسٹریٹرز کے لیے SELinux چیٹ شیٹ: اہم سوالات کے 42 جوابات

مضمون کا ترجمہ خاص طور پر کورس کے طلباء کے لیے تیار کیا گیا تھا۔ "لینکس ایڈمنسٹریٹر".

سسٹم ایڈمنسٹریٹرز کے لیے SELinux چیٹ شیٹ: اہم سوالات کے 42 جوابات

یہاں آپ کو بہتر سیکورٹی کے ساتھ زندگی، کائنات اور لینکس میں موجود ہر چیز کے بارے میں اہم سوالات کے جوابات ملیں گے۔

"اہم سچائی یہ ہے کہ چیزیں ہمیشہ وہی نہیں ہوتیں جو وہ نظر آتی ہیں عام علم ہے..."

-ڈگلس ایڈمز، کہکشاں کے لئے Hitchhiker's Guide

حفاظت بھروسے میں اضافہ۔ خط و کتابت۔ پالیسی۔ Apocalypse sysadmin کے چار ہارس مین۔ ہمارے روزمرہ کے کاموں کے علاوہ - نگرانی، بیک اپ، عمل درآمد، ترتیب، اپ ڈیٹ کرنا وغیرہ - ہم اپنے سسٹمز کی حفاظت کے بھی ذمہ دار ہیں۔ یہاں تک کہ وہ سسٹم جہاں فریق ثالث فراہم کنندہ تجویز کرتا ہے کہ ہم بہتر سیکیورٹی کو غیر فعال کریں۔ یہ کام کی طرح محسوس ہوتا ہے۔ ایتھن ہنٹ "مشن: ناممکن" سے

اس مخمصے کا سامنا کرتے ہوئے، کچھ سسٹم ایڈمنسٹریٹر لینے کا فیصلہ کرتے ہیں۔ نیلی گولیکیونکہ وہ سوچتے ہیں کہ وہ زندگی، کائنات اور اس سب کے بڑے سوال کا جواب کبھی نہیں جان پائیں گے۔ اور جیسا کہ ہم سب جانتے ہیں، وہ جواب 42 ہے۔

The Hitchhiker's Guide to the Galaxy کی روح میں، یہاں کنٹرول اور استعمال کے بارے میں اہم سوالات کے 42 جوابات ہیں۔ SELINUX آپ کے سسٹمز پر۔

1. SELinux ایک جبری رسائی کنٹرول سسٹم ہے، جس کا مطلب ہے کہ ہر عمل کا ایک لیبل ہوتا ہے۔ ہر فائل، ڈائریکٹری اور سسٹم آبجیکٹ میں بھی لیبل ہوتے ہیں۔ پالیسی کے قواعد ٹیگ شدہ عمل اور اشیاء کے درمیان رسائی کو کنٹرول کرتے ہیں۔ دانا ان اصولوں کو نافذ کرتا ہے۔

2. دو سب سے اہم تصورات یہ ہیں: لیبل لگانا۔ - نشانات (فائلیں، عمل، بندرگاہیں، وغیرہ) اور نفاذ کی قسم (جو اقسام کی بنیاد پر عمل کو ایک دوسرے سے الگ کرتا ہے)۔

3. درست لیبل فارمیٹ user:role:type:level (اختیاری).

4. کثیر سطحی سیکورٹی فراہم کرنے کا مقصد (ملٹی لیول سیکیورٹی - MLS) ڈیٹا کی حفاظت کی سطح کی بنیاد پر عمل (ڈومینز) کا انتظام کرنا ہے جو وہ استعمال کریں گے۔ مثال کے طور پر، ایک خفیہ عمل ٹاپ سیکرٹ ڈیٹا کو نہیں پڑھ سکتا۔

5. کثیر قسم کی حفاظت کو یقینی بنانا (ملٹی کیٹیگری سیکیورٹی - MCS) ایک دوسرے سے ملتے جلتے عمل کی حفاظت کرتا ہے (مثال کے طور پر، ورچوئل مشینیں، اوپن شفٹ انجن، SELinux سینڈ باکس، کنٹینرز، وغیرہ)۔

6. بوٹ پر SELinux موڈز کو تبدیل کرنے کے لیے دانا کے اختیارات:

  • autorelabel=1 → سسٹم کو ریبلنگ چلانے کا سبب بنتا ہے۔
  • selinux=0 → دانا SELinux انفراسٹرکچر کو لوڈ نہیں کرتا ہے۔
  • enforcing=0 → پرمیسیو موڈ میں لوڈ ہو رہا ہے۔

7. اگر آپ کو پورے سسٹم کو ری لیبل کرنے کی ضرورت ہے:

# touch /.autorelabel
#reboot

اگر سسٹم مارکنگ میں بڑی تعداد میں غلطیاں ہیں، تو آپ کو کامیاب ہونے کے لیے ریمارکنگ کے لیے اجازت دینے والے موڈ میں بوٹ کرنے کی ضرورت پڑ سکتی ہے۔

8. چیک کرنے کے لیے کہ آیا SELinux فعال ہے: # getenforce

9. SELinux کو عارضی طور پر فعال/غیر فعال کرنے کے لیے: # setenforce [1|0]

10. SELinux کی حیثیت کی جانچ کرنا: # sestatus

11. ترتیب دینے کی فائل: /etc/selinux/config

12. SELinux کیسے کام کرتا ہے؟ اپاچی ویب سرور کے لیے نشان زد کرنے کی ایک مثال یہ ہے:

  • بائنری نمائندگی: /usr/sbin/httpd→httpd_exec_t
  • کنفیگریشن ڈائرکٹری: /etc/httpd→httpd_config_t
  • لاگ فائل ڈائرکٹری: /var/log/httpd → httpd_log_t
  • مواد کی ڈائریکٹری: /var/www/html → httpd_sys_content_t
  • اسکرپٹ لانچ کریں: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • عمل: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • بندرگاہیں: 80/tcp, 443/tcp → httpd_t, http_port_t

سیاق و سباق میں چلنے والا عمل httpd_t، ایک لیبل والی چیز کے ساتھ تعامل کر سکتا ہے۔ httpd_something_t.

13. بہت سے احکامات ایک دلیل کو قبول کرتے ہیں۔ -Z سیاق و سباق کو دیکھنے، تخلیق کرنے اور تبدیل کرنے کے لیے:

  • ls -Z
  • id -Z
  • ps -Z
  • netstat -Z
  • cp -Z
  • mkdir -Z

سیاق و سباق اس وقت قائم ہوتے ہیں جب فائلیں ان کی پیرنٹ ڈائرکٹری کے سیاق و سباق کی بنیاد پر بنائی جاتی ہیں (کچھ استثناء کے ساتھ)۔ RPMs سیاق و سباق قائم کر سکتے ہیں جیسا کہ تنصیب کے دوران۔

14. SELinux کی غلطیوں کی چار اہم وجوہات ہیں، جن کی تفصیل ذیل میں پوائنٹس 15-21 میں دی گئی ہے۔

  • لیبلنگ کے مسائل
  • کسی ایسی چیز کی وجہ سے جو SELinux کو جاننے کی ضرورت ہے۔
  • SELinux پالیسی/ایپلی کیشن میں خرابی۔
  • آپ کی معلومات سے سمجھوتہ کیا جا سکتا ہے۔

15. لیبل لگانے کا مسئلہ: اگر آپ کی فائلیں اندر ہیں۔ /srv/myweb غلط طریقے سے نشان زد ہیں، رسائی سے انکار کیا جا سکتا ہے۔ اسے ٹھیک کرنے کے کچھ طریقے یہ ہیں:

  • اگر آپ لیبل جانتے ہیں:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • اگر آپ مساوی نشانات والی فائل کو جانتے ہیں:
    # semanage fcontext -a -e /srv/myweb /var/www
  • سیاق و سباق کو بحال کرنا (دونوں صورتوں کے لیے):
    # restorecon -vR /srv/myweb

16. لیبل لگانے کا مسئلہ: اگر آپ فائل کو کاپی کرنے کے بجائے منتقل کرتے ہیں، تو فائل اپنا اصل سیاق و سباق برقرار رکھے گی۔ اس مسئلے کو حل کرنے کے لیے:

  • سیاق و سباق کی کمانڈ کو لیبل کے ساتھ تبدیل کریں:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • لنک لیبل کے ساتھ سیاق و سباق کی کمانڈ کو تبدیل کریں:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • سیاق و سباق کو بحال کریں (دونوں صورتوں کے لیے): # restorecon -vR /var/www/html/

17. اگر SELinux آپ کو جاننے کی ضرورت ہے۔کہ HTTPD پورٹ 8585 پر سن رہا ہے، SELinux کو بتائیں:

# semanage port -a -t http_port_t -p tcp 8585

18. SELinux آپ کو جاننے کی ضرورت ہے۔ بولین قدریں جو SELinux پالیسی کے کچھ حصوں کو رن ٹائم کے وقت تبدیل کرنے کی اجازت دیتی ہیں SELinux پالیسی کو اوور رائٹ کیے جانے کے بغیر۔ مثال کے طور پر، اگر آپ چاہتے ہیں کہ httpd ای میل بھیجے، درج کریں: # setsebool -P httpd_can_sendmail 1

19. SELinux آپ کو جاننے کی ضرورت ہے۔ SELinux کی ترتیبات کو فعال/غیر فعال کرنے کے لیے منطقی اقدار:

  • تمام بولین اقدار کو دیکھنے کے لیے: # getsebool -a
  • ہر ایک کی تفصیل دیکھنے کے لیے: # semanage boolean -l
  • بولین ویلیو سیٹ کرنے کے لیے: # setsebool [_boolean_] [1|0]
  • مستقل تنصیب کے لیے شامل کریں۔ -P. مثال کے طور پر: # setsebool httpd_enable_ftp_server 1 -P

20. SELinux پالیسیوں/ایپلی کیشنز میں غلطیاں ہو سکتی ہیں، بشمول:

  • غیر معمولی کوڈ کے راستے
  • تشکیلات
  • stdout کو ری ڈائریکٹ کیا جا رہا ہے۔
  • فائل ڈسکرپٹر لیک
  • قابل عمل میموری
  • ناقص تعمیر شدہ لائبریریاں

ٹکٹ کھولیں (بگزیلا کو رپورٹ جمع نہ کریں؛ بگزیلا کا کوئی SLA نہیں ہے)۔

21. آپ کی معلومات سے سمجھوتہ کیا جا سکتا ہے۔اگر آپ کے پاس محدود ڈومینز ہیں جس کی کوشش کر رہے ہیں:

  • کرنل ماڈیولز لوڈ کریں۔
  • نافذ کردہ SELinux وضع کو غیر فعال کریں۔
  • کو لکھیں etc_t/shadow_t
  • iptables کے قوانین کو تبدیل کریں۔

22. پالیسی ماڈیولز تیار کرنے کے لیے SELinux ٹولز:

# yum -y install setroubleshoot setroubleshoot-server

دوبارہ شروع کریں یا دوبارہ شروع کریں۔ auditd تنصیب کے بعد.

23. استعمال کریں

journalctl

سے وابستہ تمام لاگز کی فہرست ظاہر کرنے کے لیے setroubleshoot:

# journalctl -t setroubleshoot --since=14:20

24. استعمال کریں journalctl ایک مخصوص SELinux ٹیگ سے وابستہ تمام لاگز کی فہرست بنانے کے لیے۔ مثال کے طور پر:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. اگر SELinux کی غلطی ہوتی ہے تو لاگ استعمال کریں۔ setroubleshoot کئی ممکنہ حل پیش کرتے ہیں۔
مثال کے طور پر، سے journalctl:

Jun 14 19:41:07 web1 setroubleshoot: SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. For complete message run: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e

# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux is preventing httpd from getattr access on the file /var/www/html/index.html.

***** Plugin restorecon (99.5 confidence) suggests ************************

If you want to fix the label,
/var/www/html/index.html default label should be httpd_syscontent_t.
Then you can restorecon.
Do
# /sbin/restorecon -v /var/www/html/index.html

26. لاگنگ: SELinux کئی جگہوں پر معلومات کو ریکارڈ کرتا ہے:

  • / var / log / messages
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. لاگنگ: آڈٹ لاگ میں SELinux کی غلطیوں کی تلاش:

# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today

28. کسی مخصوص سروس کے لیے SELinux Access Vector Cache (AVC) پیغامات تلاش کرنے کے لیے:

# ausearch -m avc -c httpd

29. افادیت۔ audit2allow ممنوعہ کارروائیوں کے لاگز سے معلومات اکٹھی کرتا ہے اور پھر SELinux اجازت پالیسی کے قواعد تیار کرتا ہے۔ مثال کے طور پر:

  • رسائی سے انکار کیوں ہے اس کی انسانی پڑھنے کے قابل وضاحت بنانے کے لیے: # audit2allow -w -a
  • ایک قسم کے نفاذ کے اصول کو دیکھنے کے لیے جو رسائی سے انکار کی اجازت دیتا ہے: # audit2allow -a
  • اپنی مرضی کے مطابق ماڈیول بنانے کے لیے: # audit2allow -a -M mypolicy
  • آپشن -M مخصوص نام کے ساتھ ایک قسم نافذ کرنے والی فائل (.te) بناتا ہے اور اصول کو ایک پالیسی پیکیج (.pp) میں مرتب کرتا ہے: mypolicy.pp mypolicy.te
  • اپنی مرضی کے ماڈیول کو انسٹال کرنے کے لیے: # semodule -i mypolicy.pp

30. اجازت دینے والے موڈ میں کام کرنے کے لیے علیحدہ عمل (ڈومین) کو ترتیب دینے کے لیے: # semanage permissive -a httpd_t

31. اگر آپ مزید نہیں چاہتے ہیں کہ ڈومین کی اجازت ہو: # semanage permissive -d httpd_t

32. تمام اجازت یافتہ ڈومینز کو غیر فعال کرنے کے لیے: # semodule -d permissivedomains

33. MLS SELinux پالیسی کو فعال کرنا: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

یقینی بنائیں کہ SELinux اجازت دینے والے موڈ میں چل رہا ہے: # setenforce 0
اسکرپٹ استعمال کریں۔ fixfilesاس بات کا یقین کرنے کے لئے کہ فائلوں کو اگلے ریبوٹ پر دوبارہ منسلک کیا گیا ہے:

# fixfiles -F onboot # reboot

34. ایک مخصوص MLS رینج کے ساتھ صارف بنائیں: # useradd -Z staff_u john

کمانڈ کا استعمال کرتے ہوئے useradd، نئے صارف کو موجودہ SELinux صارف سے نقشہ بنائیں (اس صورت میں، staff_u).

35. SELinux اور Linux کے صارفین کے درمیان میپنگ دیکھنے کے لیے: # semanage login -l

36. صارف کے لیے ایک مخصوص رینج کی وضاحت کریں: # semanage login --modify --range s2:c100 john

37. صارف کے ہوم ڈائریکٹری لیبل کو درست کرنے کے لیے (اگر ضروری ہو): # chcon -R -l s2:c100 /home/john

38. موجودہ زمرے دیکھنے کے لیے: # chcat -L

39. زمرہ جات کو تبدیل کرنے یا اپنا بنانا شروع کرنے کے لیے، فائل میں اس طرح ترمیم کریں:

/etc/selinux/_<selinuxtype>_/setrans.conf

40. ایک مخصوص فائل، کردار، اور صارف کے سیاق و سباق میں کمانڈ یا اسکرپٹ چلانے کے لیے:

# runcon -t initrc_t -r system_r -u user_u yourcommandhere

  • -t فائل سیاق و سباق
  • -r کردار کا سیاق و سباق
  • -u صارف سیاق و سباق

41. SELinux کے ساتھ چلنے والے کنٹینرز غیر فعال ہیں:

  • پوڈ مین: # podman run --security-opt label=disable …
  • ڈاکر: # docker run --security-opt label=disable …

42. اگر آپ کو کنٹینر کو سسٹم تک مکمل رسائی دینے کی ضرورت ہے:

  • پوڈ مین: # podman run --privileged …
  • ڈاکر: # docker run --privileged …

اور اب آپ کو جواب پہلے ہی معلوم ہے۔ لہذا براہ کرم: گھبرائیں نہیں اور SELinux کو فعال کریں۔

حوالہ جات:

ماخذ: www.habr.com

نیا تبصرہ شامل کریں