د لینکس امنیت سیسټمونه

په ایمبیډ شوي ، ګرځنده وسیلو او سرورونو کې د لینکس OS د خورا بریا لپاره یو له دلایلو څخه د کرنل ، اړوند خدماتو او غوښتنلیکونو کافي لوړې کچې امنیت دی. خو که نږدې وګورئ د لینکس کرنل جوړښت ته ، نو دا ناشونې ده چې په دې کې د امنیت لپاره مسؤل مربع ومومئ. د لینکس امنیت فرعي سیسټم چیرته پټ دی او څه پکې شامل دي؟

د لینکس امنیت ماډلونو او SELinux په اړه پس منظر

د امنیت وده شوی لینکس د لازمي او رول پراساس لاسرسي ماډلونو پراساس د قواعدو او لاسرسي میکانیزمونو مجموعه ده ترڅو د احتمالي ګواښونو څخه د لینکس سیسټمونه خوندي کړي او د اختیاري لاسرسي کنټرول (DAC) نیمګړتیاوې سمې کړي ، د دودیز یونیکس امنیت سیسټم. دا پروژه د متحده ایالاتو د ملي امنیت ادارې په کولمو کې رامینځته شوې ، او په مستقیم ډول د قراردادیانو سیکیور کمپیوټینګ کارپوریشن او MITER او همدارنګه د یو شمیر څیړنیزو لابراتوارونو لخوا رامینځته شوې.

د لینکس امنیت سیسټمونه
د لینکس امنیت ماډلونه

لینس توروالډز د نوي NSA پرمختګونو په اړه یو شمیر تبصرې وکړې ترڅو دوی د لینکس کرنل اصلي لیک کې شامل شي. هغه یو عمومي چاپیریال تشریح کړ، د شیانو سره د عملیاتو کنټرول کولو لپاره د مداخلو سیټ او د کرنل ډیټا جوړښتونو کې د ځانګړو محافظتي برخو سیټ سره د اړوندو ځانګړتیاو ذخیره کولو لپاره. دا چاپیریال بیا د هر مطلوب امنیت ماډل پلي کولو لپاره د بار وړ وړ کرنل ماډلونو لخوا کارول کیدی شي. LSM په 2.6 کې په بشپړ ډول د لینکس کرنل v2003 ته ننوتل.

د LSM چوکاټ کې د ډیټا جوړښتونو کې د ساتونکي ساحې شاملې دي او د کرنل کوډ کې په مهمو ټکو کې د مداخلې فعالیتونو ته زنګ وهل ترڅو دوی سمبال کړي او د لاسرسي کنټرول ترسره کړي. دا د امنیت ماډلونو ثبتولو لپاره فعالیت هم اضافه کوي. د /sys/kernel/security/lsm انٹرفیس په سیسټم کې د فعال ماډلونو لیست لري. LSM هکونه په لیستونو کې زیرمه شوي چې په CONFIG_LSM کې مشخص شوي ترتیب کې ویل کیږي. د هکس په اړه مفصل اسناد د سرلیک فایل کې شامل دي include/linux/lsm_hooks.h.

د LSM فرعي سیسټم دا ممکنه کړې چې د مستحکم لینکس کرنل v2.6 ورته نسخې سره د SELinux بشپړ ادغام بشپړ کړي. نږدې سمدلاسه ، SELinux د خوندي لینکس چاپیریال لپاره اصلي معیار شو او په خورا مشهور توزیع کې شامل شو: RedHat Enterprise Linux, Fedora, Debian, Ubuntu.

د SELinux لغت

  • پیژندنه - د SELinux کارونکي د معمول یونیکس/لینکس کارونکي id سره ورته ندي؛ دوی کولی شي په ورته سیسټم کې یوځای پاتې شي ، مګر په اصل کې په بشپړ ډول توپیر لري. هر معیاري لینکس حساب کولی شي په SELinux کې یو یا ډیرو سره مطابقت ولري. د SELinux هویت د ټولیز امنیتي شرایطو برخه ده، کوم چې دا ټاکي چې تاسو کوم ډومینونه کولی شئ او نشئ کولی یوځای شئ.
  • ډومینونه - په SELinux کې، ډومین د یوې موضوع د اجرا کولو شرایط دی، د بیلګې په توګه یوه پروسه. ډومین مستقیم هغه لاسرسی ټاکي چې پروسه یې لري. یو ډومین اساسا یو لیست دی چې کوم پروسې کولی شي یا څه پروسه د مختلف ډولونو سره ترسره کړي. د ډومینونو ځینې مثالونه د سیسټم ادارې لپاره sysadm_t دي، او user_t کوم چې یو عادي غیر امتیازي کاروونکي ډومین دی. د init سیسټم په init_t ډومین کې پرمخ ځي، او نومول شوی پروسه په نوم شوي_t ډومین کې پرمخ ځي.
  • رولونه - هغه څه چې د ډومینونو او SELinux کاروونکو ترمنځ د منځګړیتوب په توګه کار کوي. رولونه ټاکي چې کوم ډومینونه یو کاروونکي تړاو لري او کوم ډول شیانو ته لاسرسی لري. د لاسرسي کنټرول دا میکانیزم د امتیازاتو د زیاتوالي بریدونو ګواښ مخه نیسي. رولونه د رول پراساس لاسرسي کنټرول (RBAC) امنیت ماډل کې لیکل شوي چې په SELinux کې کارول کیږي.
  • Типы - د ډول پلي کولو لیست خاصیت چې یو څیز ته ټاکل شوی او مشخص کوي چې څوک ورته لاسرسی کولی شي. د ډومین تعریف سره ورته، پرته له دې چې ډومین په یوه پروسې باندې تطبیق کیږي، او ډول د شیانو لکه لارښودونو، فایلونو، ساکټونو او نورو باندې تطبیق کیږي.
  • موضوعات او توکي - پروسې موضوعات دي او په ځانګړي شرایطو یا امنیت ډومین کې پرمخ ځي. د عملیاتي سیسټم سرچینې: فایلونه، لارښودونه، ساکټونه، او نور هغه شیان دي چې یو مشخص ډول ټاکل شوي، په بل عبارت، د محرمیت کچه.
  • د SELinux پالیسۍ - SELinux د سیسټم ساتلو لپاره مختلف پالیسۍ کاروي. د SELinux پالیسي رولونو ته د کاروونکو لاسرسی، ډومینونو ته رول، او ډولونو ته ډومینونه تعریفوي. لومړی، کاروونکي د رول ترلاسه کولو واک لري، بیا رول ډومینونو ته د لاسرسي واک لري. په نهایت کې، یو ډومین یوازې د ځانګړو ډولونو شیانو ته لاسرسی لري.

LSM او SELinux جوړښت

د نوم سره سره، LSMs عموما د بار وړ وړ لینکس ماډلونه ندي. په هرصورت، د SELinux په څیر، دا په مستقیم ډول د کرنل سره یوځای کیږي. د LSM سرچینې کوډ کې کوم بدلون د نوي کرنل تالیف ته اړتیا لري. اړونده اختیار باید د کرنل په ترتیباتو کې فعال شي، که نه نو د LSM کوډ به د بوټ وروسته فعال نشي. مګر حتی پدې حالت کې ، دا د OS بوټلوډر اختیار لخوا فعال کیدی شي.

د لینکس امنیت سیسټمونه
د LSM چک سټیک

LSM د کرنل په اصلي دندو کې د هکونو سره مجهز دی چې د چک لپاره اړونده کیدی شي. د LSMs یو له اصلي ځانګړتیاو څخه دا دی چې دوی ډډ شوي دي. په دې توګه، معیاري چکونه لاهم ترسره کیږي، او د LSM هر پرت یوازې اضافي کنټرولونه او کنټرولونه اضافه کوي. دا پدې مانا ده چې بندیز بیرته نشي ایستل کیدی. دا په ارقامو کې ښودل شوي؛ که چیرې د معمول DAC چکونو پایله ناکامه وي، نو بیا به مسله حتی د LSM هکس ته ونه رسیږي.

SELinux د فلوک څیړنې عملیاتي سیسټم فلاسک امنیت جوړښت غوره کوي، په ځانګړې توګه د لږ امتیاز اصول. د دې مفکورې جوهر، لکه څنګه چې د دې نوم وړاندیز کوي، کارونکي ته ورکول یا یوازې هغه حقونه پروسس کول دي چې د ټاکل شوي کړنو ترسره کولو لپاره اړین دي. دا اصول د جبري لاسرسي ټایپ کولو په کارولو سره پلي کیږي ، پدې توګه په SELinux کې د لاسرسي کنټرول د ډومین => ډول ماډل پراساس دی.

د جبري لاسرسي ټایپ کولو څخه مننه ، SELinux د دودیز DAC ماډل په پرتله خورا لوی لاسرسي کنټرول وړتیاوې لري چې په یونیکس/لینکس عملیاتي سیسټمونو کې کارول کیږي. د مثال په توګه ، تاسو کولی شئ د شبکې پورټ شمیره محدود کړئ چې د ftp سرور به ورسره وصل شي ، په یو ټاکلي فولډر کې د فایلونو لیکلو او بدلولو ته اجازه ورکړئ ، مګر دوی حذف نه کړئ.

د SELinux اصلي برخې عبارت دي له:

  • د پالیسۍ پلي کولو سرور - د لاسرسي کنټرول تنظیم کولو اصلي میکانیزم.
  • د سیسټم امنیت پالیسي ډیټابیس.
  • د LSM پیښې مخنیوی کونکي سره تعامل.
  • Selinuxfs - Pseudo-FS، د /proc په څیر او په /sys/fs/selinux کې نصب شوی. د چلولو په وخت کې د لینکس کرنل لخوا په متحرک ډول ډک شوی او فایلونه لري چې د SELinux حالت معلومات لري.
  • د ویکتور کیچ ته لاسرسی - د تولید د زیاتوالي لپاره یو معاون میکانیزم.

د لینکس امنیت سیسټمونه
SELinux څنګه کار کوي

دا ټول د دې په څیر کار کوي.

  1. یوه ټاکلې موضوع، د SELinux په شرایطو کې، د DAC چک وروسته په یو شی باندې اجازه ورکړل شوی عمل ترسره کوي، لکه څنګه چې په پورتنۍ انځور کې ښودل شوي. د عملیاتو ترسره کولو لپاره دا غوښتنه د LSM پیښې مخنیوی کونکي ته ځي.
  2. له هغه ځایه، غوښتنه، د موضوع او اعتراض امنیتي شرایطو سره، د SELinux Abstraction او Hook Logic ماډل ته لیږدول کیږي، کوم چې د LSM سره د تعامل مسولیت لري.
  3. یوې موضوع ته د یوې موضوع د لاسرسي په اړه د پریکړې کولو واک د پالیسۍ پلي کولو سرور دی او دا د SELinux AnHL څخه معلومات ترلاسه کوي.
  4. د لاسرسي یا انکار په اړه پریکړې کولو لپاره ، د پالیسۍ پلي کولو سرور د ډیری کارول شوي مقرراتو لپاره د لاسرسي ویکٹر کیچ (AVC) کیشینګ سب سیسټم ته مخه کوي.
  5. که چیرې د اړونده قاعدې لپاره حل په کیچ کې ونه موندل شي ، نو بیا غوښتنه د امنیت پالیسۍ ډیټابیس ته لیږدول کیږي.
  6. د ډیټابیس او AVC څخه د لټون پایله د پالیسۍ پلي کولو سرور ته راستنیږي.
  7. که موندل شوې پالیسي د غوښتل شوي عمل سره سمون ولري، نو بیا د عملیاتو اجازه ورکول کیږي. که نه نو، عملیات منع دي.

د SELinux ترتیبات اداره کول

SELinux په دریو حالتونو کې کار کوي:

  • پلي کول - د امنیتي تګلارو سخته تعقیب.
  • اجازه ورکول - د محدودیتونو څخه سرغړونه اجازه لري؛ په ژورنال کې ورته یادښت جوړ شوی.
  • معیوب - د امنیت پالیسۍ په عمل کې ندي.

تاسو کولی شئ وګورئ چې د لاندې کمانډ سره SELinux کوم حالت کې دی.

[admin@server ~]$ getenforce
Permissive

د ریبوټ کولو دمخه د حالت بدلول، د بیلګې په توګه، دا د پلي کولو لپاره تنظیم کول، یا 1. د اجازې پیرامیټر د عددي کوډ 0 سره مطابقت لري.

[admin@server ~]$ setenfoce enforcing
[admin@server ~]$ setenfoce 1 #то же самое

تاسو کولی شئ د فایل په سمولو سره موډ هم بدل کړئ:

[admin@server ~]$ cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.

SELINUXTYPE= هدف

د setenfoce سره توپیر دا دی چې کله چې عملیاتي سیسټم بوټ شي، د SELinux حالت به د ترتیب کولو فایل کې د SELINUX پیرامیټر ارزښت سره سم تنظیم شي. برسېره پردې، د پلي کولو بدلونونه <=> غیر فعال شوي یوازې د /etc/selinux/config فایل په سمولو او له ریبوټ وروسته اغیزمن کیږي.

د وضعیت لنډ راپور وګورئ:

[admin@server ~]$ sestatus

SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31

د SELinux ځانګړتیاو لیدلو لپاره، ځینې معیاري اسانتیاوې د -Z پیرامیټر کاروي.

[admin@server ~]$ ls -lZ /var/log/httpd/
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20200920
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20200927
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20201004
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20201011
[admin@server ~]$ ps -u apache -Z
LABEL                             PID TTY          TIME CMD
system_u:system_r:httpd_t:s0     2914 ?        00:00:04 httpd
system_u:system_r:httpd_t:s0     2915 ?        00:00:00 httpd
system_u:system_r:httpd_t:s0     2916 ?        00:00:00 httpd
system_u:system_r:httpd_t:s0     2917 ?        00:00:00 httpd
...
system_u:system_r:httpd_t:s0     2918 ?        00:00:00 httpd

د ls -l د نورمال محصول په پرتله، په لاندې شکل کې ډیری اضافي ساحې شتون لري:

<user>:<role>:<type>:<level>

وروستی ساحه د امنیت طبقه بندي په څیر یو څه څرګندوي او د دوه عناصرو ترکیب لري:

  • s0 - اهمیت، د ټیټې کچې - لوړې کچې وقفې په توګه هم لیکل شوی
  • c0, c1… c1023 - کټګوري.

د لاسرسي ترتیب بدلول

د SELinux ماډلونو بارولو، اضافه کولو او لرې کولو لپاره سیمډول وکاروئ.

[admin@server ~]$ semodule -l |wc -l #список всех модулей
408
[admin@server ~]$ semodule -e abrt #enable - активировать модуль
[admin@server ~]$ semodule -d accountsd #disable - отключить модуль
[admin@server ~]$ semodule -r avahi #remove - удалить модуль

لومړی ټیم semanage login د SELinux کاروونکي د عملیاتي سیسټم کارونکي سره وصل کوي، دویم یو لیست ښکاره کوي. په نهایت کې ، د -r سویچ سره وروستی کمانډ OS حسابونو ته د SELinux کاروونکو نقشه لرې کوي. د MLS/MCS رینج ارزښتونو لپاره د نحو تشریح په تیرو برخه کې دی.

[admin@server ~]$ semanage login -a -s user_u karol
[admin@server ~]$ semanage login -l

Login Name SELinux User MLS/MCS Range Service
__default__ unconfined_u s0-s0:c0.c1023 *
root unconfined_u s0-s0:c0.c1023 *
system_u system_u s0-s0:c0.c1023 *
[admin@server ~]$ semanage login -d karol

ټیم semanage کارن د SELinux کاروونکو او رولونو ترمنځ نقشه اداره کولو لپاره کارول کیږي.

[admin@server ~]$ semanage user -l
                Labeling   MLS/       MLS/                          
SELinux User    Prefix     MCS Level  MCS Range             SELinux Roles
guest_u         user       s0         s0                    guest_r
staff_u         staff      s0         s0-s0:c0.c1023        staff_r sysadm_r
...
user_u          user       s0         s0                    user_r
xguest_u        user       s0         s0                    xguest_r
[admin@server ~]$ semanage user -a -R 'staff_r user_r'
[admin@server ~]$ semanage user -d test_u

د کمانډ پیرامیټونه:

  • - د دودیز رول نقشه کولو ننوتل شامل کړئ؛
  • - د مناسب کاروونکو او رولونو لیست؛
  • -d د کارونکي رول نقشه کولو ننوتل حذف کړئ؛
  • - د کارونکي سره تړلي رولونو لیست؛

فایلونه، بندرونه او د بولین ارزښتونه

د SELinux هر ماډل د فایل ټیګ کولو قواعدو سیټ چمتو کوي، مګر تاسو کولی شئ خپل مقررات هم اضافه کړئ که اړتیا وي. د مثال په توګه، موږ غواړو چې ویب سرور د /srv/www فولډر ته د لاسرسي حق ولري.

[admin@server ~]$ semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?
[admin@server ~]$ restorecon -R /srv/www/

لومړۍ کمانډ د نښه کولو نوي مقررات ثبتوي، او دویمه بیا تنظیموي، یا بلکه، د اوسني قواعدو سره سم د فایل ډولونه تنظیموي.

په ورته ډول، د TCP/UDP بندرونه په داسې ډول نښه شوي چې یوازې مناسب خدمتونه یې اوریدلی شي. د مثال په توګه، د ویب سرور لپاره چې په پورټ 8080 کې اوریدلو لپاره، تاسو اړتیا لرئ کمانډ چل کړئ.

[admin@server ~]$ semanage port -m -t http_port_t -p tcp 8080

د پام وړ شمیر SELinux ماډلونه پیرامیټونه لري چې کولی شي د بولین ارزښتونه واخلي. د دې پیرامیټونو ټول لیست د getsebool -a په کارولو سره لیدل کیدی شي. تاسو کولی شئ د setsebool په کارولو سره د بولین ارزښتونه بدل کړئ.

[admin@server ~]$ getsebool httpd_enable_cgi
httpd_enable_cgi --> on
[admin@server ~]$ setsebool -P httpd_enable_cgi off
[admin@server ~]$ getsebool httpd_enable_cgi
httpd_enable_homedirs --> off

ورکشاپ، د Pgadmin-web انٹرفیس ته لاسرسی ومومئ

راځئ چې یو عملي مثال وګورو: موږ په RHEL 7.6 کې pgadmin4-web نصب کړی ترڅو د PostgreSQL ډیټابیس اداره کړي. لږ مزل مو وکړ لټون د pg_hba.conf، postgresql.conf او config_local.py ترتیباتو سره، د فولډر اجازې تنظیم کړئ، د پایپ څخه ورک شوي پایتون ماډلونه نصب کړئ. هرڅه چمتو دي، موږ پیل او ترلاسه کوو 500 د داخلي سرور تېروتنه.

د لینکس امنیت سیسټمونه

موږ د عادي شکمنو سره پیل کوو، چک کول /var/log/httpd/error_log. دلته ځینې په زړه پورې لیکنې شتون لري.

[timestamp] [core:notice] [pid 23689] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
...
[timestamp] [wsgi:error] [pid 23690] [Errno 13] Permission denied: '/var/lib/pgadmin'
[timestamp] [wsgi:error] [pid 23690] [timestamp] [wsgi:error] [pid 23690] HINT : You may need to manually set the permissions on
[timestamp] [wsgi:error] [pid 23690] /var/lib/pgadmin to allow apache to write to it.

پدې مرحله کې ، د لینکس ډیری مدیران به په کلکه د setencorce 0 چلولو لپاره لیوالتیا ولري ، او دا به یې پای وي. په ریښتیا، ما دا لومړی ځل وکړ. دا البته یوه لاره هم ده، مګر له غوره څخه لرې.

د پیچلي ډیزاینونو سره سره، SELinux د کاروونکي دوستانه کیدی شي. یوازې د سیټروبلشوټ کڅوړه نصب کړئ او د سیسټم لاګ وګورئ.

[admin@server ~]$ yum install setroubleshoot
[admin@server ~]$ journalctl -b -0
[admin@server ~]$ service restart auditd

مهرباني وکړئ په یاد ولرئ چې د پلټنې خدمت باید په دې ډول بیا پیل شي، او په OS کې د سیسټمډ شتون سره سره systemctl نه کارول کیږي. د سیسټم لاګ کې اشاره به وشي نه یوازې د بلاک کولو حقیقت، بلکې دلیل او د بندیز لرې کولو لاره.

د لینکس امنیت سیسټمونه

موږ دا حکمونه اجرا کوو:

[admin@server ~]$ setsebool -P httpd_can_network_connect 1
[admin@server ~]$ setsebool -P httpd_can_network_connect_db 1

موږ د pgadmin4 ویب پاڼې ته لاسرسی ګورو، هرڅه کار کوي.

د لینکس امنیت سیسټمونه

د لینکس امنیت سیسټمونه

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

Add a comment