SELinux sysadmin խաբեության թերթիկ. 42 պատասխաններ կարևոր հարցերի
Հոդվածի թարգմանությունը պատրաստվել է հատուկ դասընթացի ուսանողների համար «Linux Administrator».
Այստեղ դուք կստանաք կյանքի, տիեզերքի և Linux-ի ամեն ինչի վերաբերյալ կարևոր հարցերի պատասխաններ՝ բարելավված անվտանգությամբ:
«Կարևոր ճշմարտությունն այն մասին, որ ամեն ինչ միշտ չէ, ինչ թվում է, հայտնի է…»
-Դուգլաս Ադամս, Ավտոստոպի ուղեցույց դեպի Գալակտիկա
Անվտանգություն. Հուսալիության բարձրացում: Նամակագրություն. Քաղաքականություն. Ապոկալիպսիսի չորս ձիավորներ սիսադմին. Ի լրումն մեր ամենօրյա առաջադրանքների՝ մոնիտորինգ, կրկնօրինակում, ներդրում, կազմաձևում, թարմացում և այլն, մենք պատասխանատու ենք նաև մեր համակարգերի անվտանգության համար: Նույնիսկ այն համակարգերը, որտեղ երրորդ կողմի մատակարարը մեզ խորհուրդ է տալիս անջատել ուժեղացված անվտանգությունը: Կարծես աշխատանք է Իթան Հանթ Mission Impossible-ից:
Կանգնած այս երկընտրանքի առաջ՝ որոշ համակարգի ադմինիստրատորներ որոշում են ընդունել կապույտ հաբքանի որ նրանք կարծում են, որ երբեք չեն իմանա կյանքի և տիեզերքի և այդ ամենի մեծ հարցի պատասխանը: Եվ ինչպես բոլորս գիտենք, այդ պատասխանը 42 է։
Գալակտիկայի ավտոստոպի ուղեցույցի ոգով, ահա 42 պատասխաններ կարևոր հարցերի կառավարման և օգտագործման վերաբերյալ: SELinux- ը ձեր համակարգերում:
1. SELinux-ը հարկադիր մուտքի վերահսկման համակարգ է, ինչը նշանակում է, որ յուրաքանչյուր գործընթաց ունի պիտակ: Յուրաքանչյուր ֆայլ, գրացուցակ և համակարգի օբյեկտ ունի նաև պիտակներ: Քաղաքականության կանոնները կարգավորում են մուտքը պիտակավորված գործընթացների և օբյեկտների միջև: Միջուկը պարտադրում է այս կանոնները:
2. Երկու ամենակարևոր հասկացություններն են. Պիտակավորում - նշում (ֆայլեր, գործընթացներ, նավահանգիստներ և այլն) և Տիպի կիրարկում (որը մեկուսացնում է գործընթացները միմյանցից՝ ելնելով տեսակներից):
3. Պիտակի ճիշտ ձևաչափ user:role:type:level (ըստ ցանկության):
4. Բազմաստիճան անվտանգության ապահովման նպատակը (Բազմաստիճան անվտանգություն - MLS) է կառավարել գործընթացները (տիրույթները)՝ հիմնվելով նրանց կողմից օգտագործվող տվյալների անվտանգության մակարդակի վրա: Օրինակ, գաղտնի գործընթացը չի կարող կարդալ գերգաղտնի տվյալները:
5. Բազմաստիճան անվտանգության ապահովում (Multi-Category Security - MCS) պաշտպանում է նմանատիպ գործընթացները միմյանցից (օրինակ՝ վիրտուալ մեքենաներ, OpenShift շարժիչներ, 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-ը: Ահա Apache վեբ սերվերի նշագրման օրինակ.
Գործընթացը գործում է համատեքստում httpd_t, կարող է փոխազդել պիտակով օբյեկտի հետ httpd_something_t.
13: Շատ հրամաններ արգումենտ են ընդունում -Z համատեքստ դիտելու, ստեղծելու և փոփոխելու համար.
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
Համատեքստերը սահմանվում են, երբ ֆայլերը ստեղծվում են իրենց մայր գրացուցակի համատեքստի հիման վրա (որոշ բացառություններով): RPM-ները կարող են ստեղծել համատեքստեր, ինչպես տեղադրման ժամանակ:
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:Նշման խնդիր. եթե ֆայլը պատճենելու փոխարեն տեղափոխեք, ֆայլը կպահպանի իր սկզբնական համատեքստը: Այս խնդիրը շտկելու համար.
Վերականգնել համատեքստը (երկու դեպքում էլ). # 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
Ֆայլի նկարագրիչի արտահոսք
Գործարկվող հիշողություն
Վատ կառուցված գրադարաններ
Բաց տոմսեր (զեկույց մի ներկայացրեք Bugzilla-ին, Bugzilla-ում SLA չկա):
21:Ձեր տեղեկատվությունը կարող է վտանգված լինելեթե ունեք սահմանափակ տիրույթներ, որոնք փորձում են՝
Բեռնել միջուկի մոդուլները
Անջատել SELinux պարտադրված ռեժիմը
գրել etc_t/shadow_t
Փոխեք iptables-ի կանոնները
22: SELinux գործիքներ քաղաքականության մոդուլներ մշակելու համար.
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-ը գրանցում է տեղեկությունները շատ տեղերում.
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: Հատուկ ֆայլի, դերի և օգտագործողի համատեքստում հրաման կամ սցենար գործարկելու համար.