Tuesday, November 12, 2013

Готовим NSA SELinux

      Привет Хабр! Данным постом я хочу немножно отвлечь многоуважаемое сообщество от пересуд на тему АНБ, и вместо этого заполнить пробел в описании одной их технологии, написав нечто среднее между «отключайте SELinux» и «посвятите ему лучшие годы чтобы понять малую часть». На самом деле, обе эти точки зрения одинаково далеки от правды — технология достаточно проста, прозрачна и позволяет сделать очень многое. Однако, хочу предупредить об огромном количестве букв, и достаточно узкой целевой аудитории, т.к. нижеописанное будет интересно далеко не всем. Если вы давно хотели понять, что такое SELinux, но не знали с какой стороны подступиться — эта статья для вас. Если вы давно все это знаете и успешно применяете, то я допустил достаточно неточностей, чтобы мы смогли обсудить это в комментариях. Ну а эксперты по ИБ с мировым именем могут смело проматывать в самый конец и начинать играть, у меня есть планы на продолжение :-)
Я не буду в статье касаться тем связанных с АНБ в целом, способностью расшифровывать RSA, прослушкой и прочими медийными аспектами — no hype, no FUD, only technology. Мы будем с разной степенью активности влезать в разные исходники, добавлять свои условия в само сердце MLS, возможно внедряя свои уязвимости (мы тоже делаем ошибки), и после этого попытаемся взлететь проведем тесты. Иными словами, я описываю что и как, а вы после этого уже не смотрите на SELinux как на неведому зверушку и обитель зла от вероятного противника, а смело начинаете использовать эту технологию во благо. Особенно учитывая, что она уже включена во всех ваших андроидах (>4.3) и многих дистрибутивах.
Итак, если вам все еще интересно, и вы не боитесь просидеть неделю в одном из многочисленных спойлеров, то

Предварительные чтения

Я подразумеваю, что у вас уже есть опыт работы с Linux в достаточном объёме, чтобы развернуть свой любимый дистрибутив в виртуальном окружении. Я буду делать все на примере Debian, но если вы решите повторить сей путь, то все это можно (и очень даже нужно) проделать на наиболее вам удобном и привычном дистрибутиве — в процессе вы узнаете про него много нового. Я постарался написать эту статью как обучающий материал, чтобы любой желающий мог пошагово повторить. Так же я подразумеваю, что вас не затруднит читать техническую документацию на английском — информации по SELinux на русском пока что крайне мало.

Общая информация по технологии
Вокруг SELinux вертится столько слухов, что вы будете удивлены, насколько небольшая по объему у нас вводная, всего три ссылки:
  • RH Guide: если какая-то команда непонятна, с большой вероятностью вы найдете описание в нем. Откройте его в отдельном табе, пригодится.
  • Конспект лекции Eli Billauer: рассматривайте как основной сборник фактов. По нему можно быстро понять что к чему, и знать, что именно спрашивать у гугла.
  • Написание политик. Несмотря на десятилетнюю давность документа, в нем описано достаточно ключевых моментов для понимания внутреннего устройства SELinux, и как его ковырять.

Read more: Habrahabr.ru