Сперва признаюсь, что я не профессионал в данной области. За жизнь я не прочел ни одной книги по программированию или информационной безопасности. Я — обычный юзер, который кое-чего захотел и не нашел готовых решений, которые бы ему подошли.
Известно, что в UNIX-подобных ОС (да и в Windows) любая программа, запущенная пользователем, наследует все права пользователя. По-умолчанию, нет ничего, что помешало бы любой запущенной нами программе удалить или передать кому-то наши приватные файлы. Да мы такой активности и не заметим.
Существует множество способов ограничить права недоверенным программам: запуск от имени другого пользователя; песочницы; виртуальные машины; SELinux итп.
Взглянем на концепцию domain transition в SELinux. Не вдаваясь в подробности, это работает как-то так:
- В SELinux существуют «домены», которые могут накладывать на программы дополнительные ограничения (в добавок к стандартным).
- Изначально пользователь работает в доверенном домене (назовем его «A»). Любая программа, запущенная пользователем, наследует домен и имеет доступ к приватным файлам пользователя.
- Пользователь может создать ограниченный домен («B») и запретить ему доступ к приватным файлам.
- Пользователь может указать следующее: «Если доверенный домен A запускает программу, помеченную такой-то меткой, то я хочу, чтоб эта программа работала в домене B, а не наследовала домен A».
Круто ведь? Если мы не доверяем, скажем, приложению «Skype», то можем ограничить его в правах аж так, чтоб он вообще не имел доступа ни к чему, что не является критически необходимым для его работы. Вот только создание такой политики лично у меня занимало часы. И я хотел иного.
Читать полностью »