پرو ہوسٹر > بلاگ > انتظامیہ > سسٹم ایڈمنسٹریٹرز کے لیے SELinux چیٹ شیٹ: اہم سوالات کے 42 جوابات
سسٹم ایڈمنسٹریٹرز کے لیے SELinux چیٹ شیٹ: اہم سوالات کے 42 جوابات
مضمون کا ترجمہ خاص طور پر کورس کے طلباء کے لیے تیار کیا گیا تھا۔ "لینکس ایڈمنسٹریٹر".
یہاں آپ کو بہتر سیکورٹی کے ساتھ زندگی، کائنات اور لینکس میں موجود ہر چیز کے بارے میں اہم سوالات کے جوابات ملیں گے۔
"اہم سچائی یہ ہے کہ چیزیں ہمیشہ وہی نہیں ہوتیں جو وہ نظر آتی ہیں عام علم ہے..."
-ڈگلس ایڈمز، کہکشاں کے لئے Hitchhiker's Guide
حفاظت بھروسے میں اضافہ۔ خط و کتابت۔ پالیسی۔ Apocalypse sysadmin کے چار ہارس مین۔ ہمارے روزمرہ کے کاموں کے علاوہ - نگرانی، بیک اپ، عمل درآمد، ترتیب، اپ ڈیٹ کرنا وغیرہ - ہم اپنے سسٹمز کی حفاظت کے بھی ذمہ دار ہیں۔ یہاں تک کہ وہ سسٹم جہاں فریق ثالث فراہم کنندہ تجویز کرتا ہے کہ ہم بہتر سیکیورٹی کو غیر فعال کریں۔ یہ کام کی طرح محسوس ہوتا ہے۔ ایتھن ہنٹ "مشن: ناممکن" سے
اس مخمصے کا سامنا کرتے ہوئے، کچھ سسٹم ایڈمنسٹریٹر لینے کا فیصلہ کرتے ہیں۔ نیلی گولیکیونکہ وہ سوچتے ہیں کہ وہ زندگی، کائنات اور اس سب کے بڑے سوال کا جواب کبھی نہیں جان پائیں گے۔ اور جیسا کہ ہم سب جانتے ہیں، وہ جواب 42 ہے۔
The Hitchhiker's Guide to the Galaxy کی روح میں، یہاں کنٹرول اور استعمال کے بارے میں اہم سوالات کے 42 جوابات ہیں۔ SELINUX آپ کے سسٹمز پر۔
1. SELinux ایک جبری رسائی کنٹرول سسٹم ہے، جس کا مطلب ہے کہ ہر عمل کا ایک لیبل ہوتا ہے۔ ہر فائل، ڈائریکٹری اور سسٹم آبجیکٹ میں بھی لیبل ہوتے ہیں۔ پالیسی کے قواعد ٹیگ شدہ عمل اور اشیاء کے درمیان رسائی کو کنٹرول کرتے ہیں۔ دانا ان اصولوں کو نافذ کرتا ہے۔
2. دو سب سے اہم تصورات یہ ہیں: لیبل لگانا۔ - نشانات (فائلیں، عمل، بندرگاہیں، وغیرہ) اور نفاذ کی قسم (جو اقسام کی بنیاد پر عمل کو ایک دوسرے سے الگ کرتا ہے)۔
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
سیاق و سباق میں چلنے والا عمل 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.آپ کی معلومات سے سمجھوتہ کیا جا سکتا ہے۔اگر آپ کے پاس محدود ڈومینز ہیں جس کی کوشش کر رہے ہیں:
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 کئی جگہوں پر معلومات کو ریکارڈ کرتا ہے:
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. ایک مخصوص فائل، کردار، اور صارف کے سیاق و سباق میں کمانڈ یا اسکرپٹ چلانے کے لیے: