Сиз up скриптин root катары иштетесиз, ал аяктайт, жана кызмат аны чакырганда ошол эле скрипт ишке ашпайт. Файл уруксаттарында эч нерсе өзгөргөн жок, ошондуктан кийинки табигый кадам — аларды кайра бошотуу, бирок бул эч нерсени оңдобойт. SELinux хостунда чечүүчү фактор көбүнчө процесстин ким экени эмес, анын кайсы доменде иштегени, ал эми чектелген домендин ичиндеги root чектелүү бойдон калат.

Ошол эле буйрук, эки башка коопсуздук домени

Түрлөрдү мажбурлоо баштапкы доменди, максаттуу белгини жана талап кылынган операцияны чогуу баалайт. Сиздин терминал сессиясы чектелбеген же административдик доменде иштейт, ал эми демон өз бирдигине дайындалган доменде иштейт. Ошондуктан бирдей буйруктар ар башка чечимдерди берет, жана бул айырма саясаттагы ката эмес, атайын жасалган.

Ошондуктан эки иштетүүнү салыштыруу алардын контексттерин салыштырганда гана пайдалуу. Ошол эле буйрукту кабыктан да, hookтан да иштетиңиз; кабык версиясы бинардын бар экенин жана аргументтердин туура экенин далилдейт, бирок кызматка аны аткарууга уруксат барбы же жокпу жөнүндө эч нерсе далилдебейт. Аны эки жол менен тең иштетип, чыгуу коддору гана эмес, домендерди салыштырыңыз. Ушул салыштыруу бүдөмүк уруксат дагынын бир домен жана бир белги тууралуу так суроого айландырат.

Бул кемчиликтин классикалык формасы — сырткы куралды чакырган жардамчы. hook өзү уруксат берилген болушу мүмкүн, ал эми ал чакырган курал кызмат домени аткара албаган белгини алып жүрөт же белгиси тыюу салган папкага жазат.

AVC жазуусун hook катасынын жанынан окуңуз

AVC баш тартуу ишти чечүүчү талааларды атайт: процесстин баштапкы контексти, объектинин максаттуу контексти, объект классы жана четке кагылган конкреттүү уруксат. Теория түзүүдөн мурун төртөөнү тең окуңуз, анткени аткарууга баш тартуу менен жазууга баш тартуунун оңдоолору таптакыр башка.

ausearch -m AVC,USER_AVC -ts recent
ls -Z /usr/local/sbin/vpn-up.sh
ps -eZ | grep openvpn

Баштапкы контекст кызмат чындап иштеген доменге, ал эми максаттуу контекст операция тийген файлдын же папканын белгисине дал келиши керек. Эгер экөөнүн бири сиз кууп жүргөн катага дал келбесе, сиз башка окуяны окуп жатасыз.

Жазуунун жанына саясаттын версиясын жана аткарылуучу файлдын так жолун жазып алыңыз. Бир дистрибутивдин саясатында кездешкен домен аты ошол орнотуу тууралуу далил, бирок башка курулуш ошол эле эрежелерди жеткирет деген кепилдик эмес. Ушул контекст башка бирөөгө сиздин тыянагыңызды өз хостунда кайталоого мүмкүндүк берет. Ансыз жазуу далил эмес, аңгеме катары окулат.

Белги, конфигурация же саясат: үч оңдоо

Биринчи оңдоо — файлдын орнотулган жерине дал келбеген белги. cp менен ордуна көчүрүлгөн же редактор менен жазылган скрипт кызмат домени колдоно албаган демейки белгини алып жүрүшү мүмкүн, жана күтүлгөн контекстти калыбына келтирүү саясатка такыр тийбей эле аны оңдойт.

Экинчиси — конфигурация. Дистрибутив операцияны иштетүүнүн колдоого алынган ыкмасын, жардамчы үчүн документтелген папканы же ага мурунтан уруксат берген жаңыртылган саясат пакетин сунушу мүмкүн. Жайгашууңузду колдоого алынганга өзгөртүү саясат жазуудан арзан жана жаңыртууларга туруштук берет.

Үчүнчүсү — чындап жетишпеген эреже, жана ал акыркы чара болушу керек. Аудит куралдары менен талапкер жаратыңыз, анын чындап эмнеге уруксат берерин окуңуз, аны сиз байкаган операция жана домен менен чектеңиз, жана ал өндүрүшкө жакындаганга чейин башка бирөөгө текшертиңиз.

Эмнеге эски allow модулу жооп эмес

Бул кемчилик боюнча издөө жыйынтыктары даяр модулдарга толгон, көбүнчө hook мындан ары чакырбаган курал үчүн. Бирөөнү орнотуу сиздин баш тартууңузга тиешеси жок болушу мүмкүн болгон уруксаттарды берет жана чыныгы дал келбестикти ордунда калтырып, туруктуу тешик кошот.

Ал кийинки ишке ашпоону да жашырат. Операциялардын кең классына уруксат берген модуль бул катаны жоготуп, кийинкисин айыптоо алда канча кыйын нерсеге айландырат. Модулду кийин алып салуу да эч ким пландаштыргысы келбеген өзгөртүү, ошондуктан кыска жол туруктуу болууга ыктайт.

Тартиптүү салыштыруу — сиз окуй алган баш тартуу менен сиз сунуштаган өзгөртүүнүн ортосунда. Red Hatтын SELinux маселелерин чечүү боюнча колдонмосу белгилөө жана конфигурация текшерүүлөрүн генерацияланган саясаттан так ушул себептен мурун коёт. Эгер жазууда тиешелүү баш тартуу болбосо, SELinux сиздин маселеңиз эмес болушу мүмкүн, жана жол, sandbox же уруксат маселелери дагы эле ачык.

Тектеш макалалар