Журнал LinuxFormat - перейти на главную

LXF158:Руб­ри­ка си­сад­ми­на: Знать свои сла­бо­сти

Материал из Linuxformat
Перейти к: навигация, поиск


(thumbnail)
Д-р Крис Браун. Доктор обучает, пишет и консультирует по Linux. Ученая степень по физике элементарных частиц ему в этом совсем не помогает.

По рецептам доктора Брауна

Содержание

Эзо­те­ри­че­ское сис­тем­ное ад­ми­ни­ст­ри­ро­ва­ние из при­чуд­ли­вых за­во­ро­тов ки­шок сер­вер­ной

Знать свои сла­бо­сти

Что­бы за­щи­тить свои ком­пь­ю­те­ры от на­па­дения, нуж­но знать свои уяз­ви­мо­сти. Вам по­мо­жет OpenVAS.

Мож­но ли быть уве­рен­ным в том, что сис­те­ма за­щи­ще­на? Ну, на 100 % нель­зя никогда. Но мож­но су­ще­ст­вен­но по­вы­сить свою уве­рен­ность, за­пустив сканер уяз­ви­мо­стей, и во мно­гих ор­ганиза­ци­ях это де­ла­ет­ся на ре­гу­ляр­ной осно­ве.

OpenVAS – од­на из та­ких про­грамм. Это от­ветв­ление Nessus, по­пу­ляр­но­го сканера, ко­то­рый в 2005 го­ду пре­вра­тил­ся из от­кры­то­го в ком­мер­че­­ский. К мо­мен­ту чтения этой ста­тьи долж­на вый­ти OpenVAS 5. OpenVAS за­пуска­ет на глав­ном ком­пь­ю­те­ре сканирую­щий де­мон, ко­то­рый вы­пол­ня­ет се­рию про­ве­рок на уяз­ви­мость для за­дан­но­го на­бо­ра объ­ек­тов. Эти про­вер­ки на­зы­ва­ют­ся про­вер­ка­ми се­те­вой уяз­ви­мо­сти (NVT – network vulnerability tests) и пи­шут­ся на про­стом скрип­то­вом язы­ке (Nessus Attack Scripting Language – язык опи­сания атак Nessus).

Ты­сяч­ное вой­ско

Сейчас та­ких тес­тов чуть менее 25 000, и ка­ж­дый день до­бав­ля­ют­ся но­вые в от­вет на но­вую ин­фор­ма­цию об уг­ро­зах безо­пас­но­сти, по­сту­паю­щую от про­из­во­ди­те­лей ПО и из от­че­тов ис­сле­до­ва­те­лей. Око­ло 16 000 из этих тес­тов осно­ва­ны на ин­фор­ма­ции от про­из­во­ди­те­лей ПО, обыч­но в та­кой фор­ме: «О, у вас вер­сия X при­ло­жения Y. Зна­чит, у вас есть уяз­ви­мость Z». Дру­гие тес­ты ре­аль­но взаи­мо­дей­ст­ву­ют с сис­те­мой, оп­ре­де­ляя уяз­ви­мо­сти. Ка­че­­ст­во ра­бо­ты OpenVAS, оче­вид­но, за­ви­сит от ка­че­­ст­ва тес­тов и свое­вре­мен­но­сти их соз­дания и рас­про­странения по ме­ре об­на­ру­жения но­вых уг­роз. OpenVAS обес­пе­чи­ва­ет бес­плат­ный при­ток тес­тов; есть так­же и ком­мер­че­­ский, от немец­кой ком­пании Greenbone, раз­ра­бот­чи­ка OpenVAS. Что­бы по-бы­ст­ро­му это по­про­бо­вать, ска­чай­те вир­ту­аль­ный эк­зем­п­ляр OpenVAS4 с сай­та openvas.org; он со­вмес­тим с VirtualBox и VMWare (сам я про­бо­вал толь­ко по­следнее) и пре­достав­ля­ет сер­вер OpenVAS – с ним мож­но ра­бо­тать через ути­литы команд­ной стро­ки или с по­мо­щью брау­зе­ра че­рез порт 9392. На­до ска­зать, что хо­тя его лег­ко за­гру­зить и уста­но­вить, кри­вая его изу­чения до­воль­но кру­та. Для прак­ти­че­­ско­­го ис­поль­зо­вания уста­но­ви­те са­ми па­ке­ты OpenVAS. Воз­мож­но, они есть в ре­по­зи­то­ри­ях ва­ше­го ди­ст­ри­бу­ти­ва.

На­конец, заост­рим, что за­пуск сканера уяз­ви­мо­стей сам по се­бе вол­шеб­ным об­ра­зом не по­вы­сит вам безо­пас­ность. Кто-то дол­жен его от­че­ты чи­тать и принимать ме­ры. И во мно­гих слу­ча­ях доста­точ­но про­сто об­но­вить уяз­ви­мое при­ло­жение до бо­лее поздней вер­сии.

Linux уп­роч­ня­ет за­щи­ту

У SELinux ре­пу­та­ция не­ве­ро­ят­но слож­ной сис­те­мы, но он слиш­ком ва­жен, что­бы его иг­но­ри­ро­вать. Рас­смот­рим этот важ­ный ру­беж обо­ро­ны.

Дол­жен при­знать­ся, что при упо­ми­нании SELinux я ве­ду се­бя как страус – пря­чу го­ло­ву в пе­сок и на­де­юсь, что он ис­чезнет. Но RedHat принима­ет его все­рь­ез, и сис­тем­ным ад­мин­ст­ра­то­рам при­хо­дит­ся иметь с ним де­ло все ча­ще. И я ре­шил, что луч­ше рас­ска­зать об его осно­вах, хо­тя бы немно­го.

Пре­ж­де все­го, за­чем он ну­жен? В двух сло­вах – его на­зна­чение в том, что­бы ог­раничить ущерб сис­те­мы из-за ата­ки, восполь­зо­вав­шей­ся уяз­ви­мо­стью в про­грам­ме. Что­бы по­нять, как это ра­бо­та­ет, начнем с тра­ди­ци­он­ной мо­де­ли прав досту­па к фай­лам в Linux, под ко­то­рой я имею в ви­ду из­вест­ные раз­ре­шения rwx. В этой мо­де­ли ав­то­ри­за­ция про­ис­хо­дит ис­клю­чи­тель­но по UID и GID про­цес­са, вы­пол­няю­ще­го за­прос. Ес­ли про­цесс за­пуска­ет­ся от имени поль­зо­ва­те­ля chris, я ви­жу одни пра­ва досту­па, ес­ли от имени root – дру­гие, и т. д. На­при­мер, пусть я поль­зу­юсь Firefox. Ра­зу­ме­ет­ся, брау­зе­ру ну­жен доступ к неко­то­рым ка­та­ло­гам фай­ло­вой сис­те­мы – что­бы кэ­ши­ро­вать cookie, за­пи­сы­вать ис­то­рию и т. д., но все мои фай­лы ему ни к че­му. Од­на­ко ес­ли от­крыть в нем ак­тив­ное вре­до­носное со­дер­жи­мое, умею­щее ис­поль­зо­вать уяз­ви­мость в брау­зе­ре, зло­умыш­ленник по­тен­ци­аль­но по­лу­чит доступ к тем же фай­лам, что и я (как поль­зо­ва­тель chris).

С се­те­вы­ми сер­ви­са­ми про­бле­ма час­то и то­го ост­рее, ведь мно­гие из них за­пуска­ют­ся от имени суперпользователя-root, и восполь­зо­вав­шись уяз­ви­мо­стью в та­ких сер­ви­сах, ата­кую­щий мо­жет по­лу­чить доступ ко всей сис­те­ме.

Как на­пи­са­но в ру­ко­во­дстве поль­зо­ва­те­ля по SELinux в RedHat, «Мно­гие сис­тем­ные сер­ви­сы и про­грам­мы за­пуска­ют­ся со вчерне за­дан­ны­ми при­ви­ле­гия­ми, на­мно­го пре­восхо­дя­щи­ми их по­треб­но­сти, и ошиб­ка в лю­бой из этих про­грамм мо­жет быть ис­поль­зо­ва­на для по­лу­чения досту­па к сис­те­ме».

Здесь тра­ди­ци­он­ная мо­дель безо­пас­но­сти в Linux ста­но­вит­ся бес­силь­ной, и управ­ление на се­бя бе­рет SELinux. Важ­но понимать, что ре­шения об ав­то­ри­за­ции, принимае­мые SELinux, до­пол­ня­ют, а не за­ме­ня­ют тра­ди­ци­он­ную мо­дель. Ес­ли пра­ва rwx не раз­ре­ша­ют досту­па – точ­ка. Но ес­ли они раз­ре­ша­ют, по­ли­ти­ки SELinux да­ют сис­те­ме до­полнитель­ную воз­мож­ность за­пре­тить его.

Не­во­об­ра­зи­мая слож­ность

Де­та­ли уст­рой­ст­ва SELinux, мяг­ко го­во­ря, непро­сты. Но да­вай­те окунем­ся в них и уз­на­ем, смо­жем ли мы хо­тя бы по­чув­ст­во­вать их аро­мат. Ес­ли на­чи­нать с са­мо­го на­ча­ла, то у ка­ж­до­го фай­ла и ка­ж­до­го про­цес­са в сис­те­ме SELinux есть кон­текст безо­пас­но­сти, в ко­то­рый вхо­дят че­ты­ре со­став­ляю­щих:

Текст ячейки1 Текст ячейки1


ПОЛЬЗОВАТЕЛЬ [USER]

Это поль­зо­ва­тель SELinux, ко­то­ро­му «при­над­ле­жит» файл или про­цесс. Эти поль­зо­ва­те­ли на­пря­мую не со­от­вет­ст­­ву­ют учет­ным за­пи­сям в /etc/passwd; на са­мом де­ле, боль­шин­ст­­во обыч­ных учет­ных за­пи­сей в Linux свя­за­ны с поль­зо­ва­те­лем unconfined_u SELinux.

РОЛЬ [ROLE]

Ис­поль­зу­ет­ся для управ­ления досту­пом на осно­ве ро­лей (role-based access control – RBAC). Поль­зо­ва­те­ли ав­то­ри­зу­ют­ся для по­лу­чения оп­ре­де­лен­ных ро­лей, а ро­ли оп­ре­де­ля­ют, к ка­ким ре­сур­сам у поль­зо­ва­те­ля есть доступ. Ро­ли ис­поль­зу­ют­ся в управ­лении про­цес­са­ми, но фай­лы, ко­то­рые по су­ти пас­сив­ны, на са­мом де­ле не поль­зу­ют­ся ро­ля­ми, и для них ис­поль­зу­ет­ся «пустая роль» object_r.

ТИП [TYPE]

Это глав­ные ат­ри­бу­ты безо­пас­но­сти, ко­то­ры­ми SELinux ру­ко­во­дству­ет­ся при при­ня­тии ре­шения о досту­пе. При при­менении к про­цес­сам ти­пы так­же на­зы­ва­ют­ся до­ме­на­ми и по су­ти оп­ре­де­ля­ют име­но­ван­ную «пе­сочницу», в ко­то­рой вы­пол­ня­ет­ся про­цесс.

УРОВЕНЬ [LEVEL]

С по­мо­щью это­го ат­ри­бу­та реа­ли­зу­ет­ся много­уровневая сис­те­ма досту­па – в ее осно­ве ле­жит идея о том, что до­ку­мен­ты мо­гут быть «пуб­лич­ны­ми», «кон­фи­ден­ци­аль­ны­ми», «со­вер­шен­но сек­рет­ны­ми» и т. д.

Персональные инструменты
купить
подписаться
Яндекс.Метрика