Кіріспе

Linux ядросының компьютерлік қауіпсіздіктің әртүрлі модельдерін қолдауға мүмкіндік беретін құрылым – Linux қауіпсіздік модульдері (LSM). LSM Linux ядросына компьютерлік қауіпсіздіктің әртүрлі модельдерін кез келген жағдайға қарамастан қолдауға мүмкіндік береді. LSM GNU General Public License шарттарымен лицензияланады және Linux 2.6 нұсқасынан бері Linux ядросының стандартты бөлігі болып табылады. AppArmor, SELinux, Smack және TOMOYO Linux – ресми ядрода мақұлданған қазіргі қауіпсіздік модульдері.

Дизайн

LSM міндетті кіруді басқару модулін сәтті жүзеге асыру үшін қажетті барлық талаптарға жауап беру мақсатымен жасалған, сонымен бірге Linux ядросына мүмкіндігінше аз өзгерістер енгізуді көздеді. LSM, Systrace қолданған жүйелік шақыруларды араластыру әдісін пайдаланбайды, себебі ол көппроцессорлық ядролар үшін кеңейтілмейді және TOCTTOU (жарыс) шабуылдарына осал. Оның орнына, LSM ядроның әрбір нүктесіне "ілгектерді" (модульге шақырулар) енгізеді, онда пайдаланушы деңгейіндегі жүйелік шақыру инодтар және тапсырмаларды басқару блоктары сияқты маңызды ішкі ядролық объектілерге қол жеткізуге алып келеді. LSM кіруді бақылау мәселесін шешуге қатысты, бірақ негізгі ядроға үлкен және күрделі өзгерістер енгізбейді. Ол жалпы "ілгек" немесе "шақыру" механизмі ретінде қарастырылмаған, сондай-ақ операциялық жүйе деңгейіндегі виртуализацияны қолдамайды. LSM-нің кіруді бақылау мақсаты жүйелік аудит мәселесімен тығыз байланысты, бірақ одан сәл өзгеше. Аудит әрбір қол жеткізу әрекетінің тіркелуін қажет етеді. LSM мұны іске асыра алмайды, өйткені ядроның "қысқа тұйықталуы" салдарынан сәтсіз жүйелік шақыруларды анықтау және маңызды объектілерге жақындамас бұрын қате кодын қайтару жағдайларын анықтау үшін көптеген ілгектер қажет болар еді. LSM дизайны USENIX Security 2002 конференциясында ұсынылған "Linux Security Modules: Linux ядросы үшін жалпы қауіпсіздік қолдауы" атты мақалада сипатталған. Сол конференцияда "Авторизациялық ілгектерді орналастырудың статикалық талдауы үшін CQUAL-ды пайдалану" атты мақала да жарияланды, ол Linux ядросына барлық қажетті ілгектер енгізілгенін тексеру үшін ядро кодының автоматты статикалық талдауын зерттеді.

Тарих

2001 жылғы Linux Kernel саммитінде NSA SELinux-ты Linux 2.5 нұсқасына қосуды ұсынды. Линус Торвальдс сол кезде SELinux-ты қабылдамады, себебі ол көптеген қауіпсіздік жобаларының дамуда екенін және олардың барлығы әртүрлі болғандықтан, қауіпсіздік қауымдастығы әлі де қауіпсіздіктің түпкілікті моделі бойынша келісімге келмегенін байқады. Оның орнына Линус қауіпсіздік қауымдастығына «модуль ретінде жасауды» тапсырды. Оған жауап ретінде Криспин Коуэн LSM-ді ұсынды: Linux ядросының ішінде модульге жүктелетін модульге қажетті «қосылыстарды» (қайырымдауларды) қамтамасыз ететін Linux ядросы үшін интерфейс, осылайша модульге міндетті кіруді бақылау мүмкіндігін береді. Келесі екі жылда LSM-ді LSM қауымдастығы дамытты, Immunix Corporation, NSA, McAfee, IBM, Silicon Graphics және көптеген тәуелсіз үлес қосушылар үлкен үлес қосты. LSM Linux ядросының негізгі ағынына қабылданды және 2003 жылдың желтоқсанында Linux 2.6 нұсқасының стандартты бөлігі ретінде енгізілді. 2006 жылы кейбір ядроны дамытушылар SELinux-тың Linux ядросының негізгі ағашына енгізілген жалғыз кеңінен қолданылатын LSM модулі екенін байқады. Егер кеңінен қолданылатын бір ғана LSM модулі болса, онда LSM-нің аралық қабат ретінде қажеттілігі жоқ, сондықтан LSM алынып тасталып, оның орнына SELinux-тың өзі қолданылуы керек деп есептелді. Алайда, негізгі ядро ағашының сыртында басқа LSM модульдері де бар (AppArmor, Linux Intrusion Detection System, FireFlier, CIPSO, Multi ADM және т.б.), сондықтан бұл аргумент екі нәтижеге әкелді: 1. осы модульдерді дамытушылар өз модульдерін негізгі ядроға енгізуге күш салуын бастады және 2. 2006 жылғы Kernel саммитінде Линус тағы да LSM-нің қалатынын мәлімдеді, өйткені ол қауіпсіздіктің ең жақсы моделіне қатысты төрелік етуді қаламайды. LSM-нің сақталуы мүмкін, себебі негізгі ядроға қосымша қауіпсіздік модульдері Smack (2.6.25 нұсқасы), TOMOYO Linux (2.6.30 нұсқасы, 2009 жылдың маусымы) және AppArmor (2.6.36 нұсқасы) қабылданды.