Терминалдағы root, SELinux астында қабылданбады: hook неге сәтсіз
Қолмен мінсіз жұмыс істейтін hook қызметтің ішінде қабылданбауы мүмкін. Өңдеуге кіріспес бұрын процестің доменін, файл белгісін және қабылданбаған рұқсатты салыстырыңыз.
Сіз 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 немесе рұқсат мәселелері әлі ашық.