Дастур барои шурӯъкунандагон ба SELinux

Дастур барои шурӯъкунандагон ба SELinux

Тарҷумаи мақола барои донишҷӯёни курс омода шудааст "Амнияти Linux"

SELinux ё Security Enhanced Linux як механизми мукаммали назорати дастрасӣ мебошад, ки аз ҷониби Агентии Амнияти Миллии ИМА (NSA) барои пешгирии ҳамлаҳои шубҳанок таҳия шудааст. Он модели идоракунии маҷбурии (ё ҳатмӣ) дастрасиро (English Mandatory Access Control Control, MAC) дар болои модели мавҷудаи ихтиёрӣ (ё интихобӣ) (English Discretionary Control Control, DAC), яъне иҷозатҳои хондан, навиштан, иҷро карданро амалӣ мекунад.

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

Ин фармон коммутаторҳои дастрасро бо ҳолати кунунии онҳо (фаъол ё хомӯш) ва тавсиф номбар мекунад. Шумо метавонед ҷустуҷӯи худро тавассути илова кардани grep барои дарёфти натиҷаҳои танҳо ftp такмил диҳед:

$ 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

Пас аз тағир додани контекст бо истифода аз semanage, фармони restorecon контексти пешфарзро барои файлҳо ва директорияҳо бор мекунад. Веб-сервери мо акнун метавонад файлҳоро аз ҷузвдон хонад /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 худро бароҳат ҳис хоҳед кард.

Манбаъ: will.com

Илова Эзоҳ