История SELinux: Как спецслужбы США научили Пингвина ходить строем
Если вы хоть раз ставили серьезный дистрибутив или настраивали сервер, то наверняка видели в интернете вредный совет Тормозит? Что-то не запускается? Просто вырубай SELinux командой setenforce 0, и всё будет летать. Это, пожалуй, самый популярный способ прострелить себе колено в ИТ. Давайте разберемся, откуда вообще взялась эта штука и почему ее создатели ребята из АНБ (NSA) знали, что делают.
1) Как было раньше?
В старых системах всё работало по классике: если ты зашел под админом (root), ты царь и бог. Ты можешь удалить ядро, слить пароли и вообще делать что угодно. Это называлось DAC (избирательный контроль доступа). Проблема была в том, что если хакер взламывал какой-нибудь один сервис (например, почту) и получал права админа, он получал контроль над всей системой. Для военных и спецслужб это был кошмар. Им нужно было решение, где даже админ ограничен жесткими правилами.
2) Спецслужбы выходят из тени
В конце 90-х в АНБ решили, что пора наводить порядок. Они взяли свои секретные наработки по защите ОС и начали внедрять их в Linux. В 2000 году они официально выложили этот код в открытый доступ. Зачем спецслужбам это было нужно? Всё просто им нужна была максимально защищенная система для своих нужд, а Linux был идеальной базой, которую могло протестировать всё мировое сообщество.
3) Контексты и уровни секретности
В 2003 году Линус Торвальдс принял SELinux в основное ядро. С этого момента появилась модель MAC (принудительный контроль доступа). Теперь системе плевать, кто ты. Она смотрит на метку (контекст) процесса. Но самое крутое это MLS (Multi-Level Security). Это те самые уровни доступа из фильмов Секретно, Совершенно секретно. SELinux умеет разделять данные так, что даже если у тебя есть права на чтение файлов, ты не увидишь документ уровнем выше, чем разрешено твоему текущему процессу. Это делает систему стерильной данные разных уровней важности никогда не пересекутся.
4) Kernel Lockdown
С недавних пор в Linux (с ядра 5.4) появилась еще одна мощная штука Lockdown. Если SELinux следит за программами, то Lockdown следит за тем, чтобы никто не залез в само сердце в ядро системы. Даже если ты суперпользователь, Lockdown может запретить тебе менять параметры ядра на ходу или выуживать из него ключи шифрования. Это полная блокировка любой самоволки ядро становится неприступным монолитом, который нельзя подправить изнутри без цифровой подписи.
5) А что у других?
Идея оказалась настолько крутой, что её растащили везде В Ubuntu, Zorin OS, Debian есть AppArmor это Младший брат SELinux. Он проще, работает не по сложным меткам, а по путям к файлам. А в Windows есть MIC (Integrity Control) Microsoft в Windows 10/11 тоже ввела уровни целостности. Твой браузер работает на уровне Low, а системные папки на уровне System. Вирус из браузера просто не может записать себя в систему, потому что у него допуска нет. А у Apple есть Apple SIP и Sandbox В macOS и iOS админ тоже ограничен. Механизм SIP не дает даже руту менять системные файлы, а Sandbox запирает каждое приложение в свою песочницу, не давая ему воровать данные соседа. Но вы думаете что у Android нету защиты ошибаетесь у него тоже есть SeLinux начиная с 10-й версии Google ввел песочницу Scoped Storage. Приложение А не видит файлы приложения Б, а для доступа к твоим фото оно должно каждый раз запрашивать мандат.



6) Почему все советуют его отключать?
Потому что людям лень разбираться. SELinux штука суровая. Если он видит, что программа делает что-то подозрительное, он её блокирует. Вместо того чтобы выписать программе разрешение люди просто сносят всю защиту одной командой. Итог SELinux, Lockdown и их аналоги это ваша страховка. Не слушайте тех, кто предлагает снести забор, потому что в калитку трудно входить.
Ссылки
1) https://www.nsa.gov/portals/75/documents/resources/everyone/...
2) https://www.phoronix.com/linux/Linux+Security/2
3) https://docs.redhat.com/en/documentation/red_hat_enterprise_...
4) http://www.sl2.hu/sexample.pdf
5) https://docs.redhat.com/en/documentation/red_hat_enterprise_...
6) https://man7.org/linux/man-pages/man7/kernel_lockdown.7.html
7) https://man.archlinux.org/man/kernel_lockdown.7.en
8) https://help.ubuntu.ru/wiki/руководство_по_ubuntu_server/безопасность/apparmor 9) https://learn.microsoft.com/ru-ru/windows/win32/secauthz/man... 10) https://help.apple.com/pdf/security/ru_RU/apple-platform-sec...
11) https://developer.android.com/training/data-storage/use-case... 12) https://source.android.com/docs/security/features/selinux


