selinux

Из чата asterisk-support.ru вынесу свое отношение к selinux:

напишу таки свои пять копеек про selinux ко вчерашнему разговору

Андрей думает, что это мало кого беспокоит. Но так и есть. Все спокойно хранят свои данные в облаках и умают, что о них должны заботиться компании. Только небольшое количество спецов понимают, что да как, где дыряво, где не заштопано. При этом менять архитектуру/основу системы не каждому дано, по большей части люди используют только верхние готовые упрощенные интерфейсы. И зачастую такой подход работает. А уж если речь идет о дополнительной настройке (да еще и не обязательной), то тут как бы и вовсе о чем говорить?

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

Но для обычных прикладных чижей, к коим отношу например и себя, она вообще побоку.

Но время покажет. Т.е. чтобы эта тема вошла в обиход, ее должны начать поддерживать и использовать как раз производители ПО. Т.е. в мануалах, заметках, how-to’сах должно быть написано, что делать чтобы повысить безопасность приложения. Чтобы ты не сам придумывал, как да что. А были уже предзаготовленные решения, которые устанавливались сразу при установке, а не надо было раскурить трубку, попить чаю, раздуплить два раза тему и потом настроить абы как. Пока этого нет.

И еще про время. Время покажет, что удобно, а что нет. Возьмем к примеру docker. Технология зашла и начала резкий взлет совсем не так давно, хотя cgroups, на которых она базируется, уже 10 лет как есть в линуксе. Просто нашлись чижы которые раздуплили как из этого сделать удобную конфету с человекопонятными командами и донесли до сообщества. Теперь у нас даже есть рецепты как между двух докеров засунуть третий и маслом намазать.

Когда я вижу asterisk_t и метку типа ast_cod_lib_t – я думаю, еб№на мать, если я к этому вернусь через полгода, фиг чего я разберу, зачем я это сделал, лучше я с этим связываться вообще не буду. Когда я вижу cgcreate, cgexec, cgclassify – о, боже, как это все бросать в суп – вместе или по очереди, а посолить-поперчить? когда я пользую docker exec, docker build – ну на порядок структурированней и понятней (в общем, cli тоже надо уметь варить)

Хотя selinux тоже уже давненько присутствует, его использование пока не дает “а-а-а!.. дайте два” эффекта. Возможно, кто-то сядет и напишет тулзу, которая будет все аккуратно за тебя делать, возможно разработчики будут видеть пользу от применения при эксплуатации своего ПО и рекомендовать использовать, или что-то еще. Но пока… хз.

Теперь попробую привести примеры. Вот допустим у нас есть веб-сервис, который пускает только авторизованных пользователей. С определенных ip. По https. Но в нашем веб-сервисе есть возможность загрузить файл, который как-то затем обрабатывается, например загружаем картинку и изменяем ей размер. И мы знаем, что у этого веб-сервиса используетс ядля ресайза либа, которая для определенных gif с котиками, выполняет код. Наш пользователь может что-то у нас сделать, что мы ему не разрешали делать. Это печаль.

Или еще пример. Я написал прогу. Говорю, эй парни, у меня есть хорошая прога, agi-сервер для астериска, который все делает хорошо. Бинарник, однако, извините. Но в него добавил exploit, который на определенных линуксах запускает код. Т.е. вы сами поставили троянского коня. Это тоже печаль.

Здесь selinux может помочь. Но он должен быть или абсолютно не заметен, или настолько прост и удобен, что его не использование вызывало вопросы. Но это на уровне опять же повторюсь обычных прикладных чижей.

Если у вас более масштабное решение, т.е. кол-во пользователей исчисляется тысячами и много больше пользователей. То тут как раз и встает вопрос о том, что всем им просто так доверять тоже не стоит. Каждый из них имеет определенный уровень доступа и уже что-то может делать с вашей системой. Вы же их не забаните по ip? Отсюда, следует, чтобы все процессы и данные, к которым имеют доступ такие пользователи не делали всего того, что не следует. А значит их нужно ограничить. И у вас есть для этого средства: а) писать свои проги так, чтобы пользователи не пихали туда все, что не нужно, б) эти проги должны быть существенно ограничены системой.

Ну, и наверное стоит помнить, что это разработка АНБ. Т.е. АНБ заказали разработку какого-то демона, допустим конвертит wav в mp3, чтобы места хватило для записи всех разговоров всех американцев. Но вдруг этот конвертер еще и Сноудену будет mp3 отправлять? Ай-вай. Было бы хорошо, дать доступ к двум папкам и запретить использовать сеть вообще. ок, selinux.

Как-то так.

Advertisements
selinux

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s