LINUX.ORG.RU

вопрос про kernel mode


0

1

объясните про user mode и kernel mode: правильно ли я понимаю, что если процесс перешёл в kernel mode он получает возможность полного контроля памяти? есть ли в linux механизмы фильтрации определённых сигналов для определённых программ в kernel mode? допустим есть программа, которой не очень доверяешь, или просто необходимо заблокировать её от выполнения определённых вызовов или оградить от неё определённую область памяти - есть ли такая возможность? т.е создать правило фильтрации, и определённые вызововы определённой программы не будут исполняться? что-нибудь вроде ACL или политик фаервола но для вызовов... если нет возможности фильтрации , то какой самый эффективный способ для обеспечения максимальной защиты на чтение/модификацию процессов и ядра от других процессов?
извиняюсь если вопрос очень тупой, гуглил очень долго на эту тему - единственным разумным результатом был совет на чтение книги understanding the linux kernel, книгу то я со временем прочитаю, но хотелось бы получить ответ сейчас

★★★★★

Если процесс перешёл в kernel mode (ака вызвал сисвызов) он уже подвергся фильтрации и огораживанию, так что на

он получает возможность полного контроля памяти?

ответ «нет» (если не учитывать баг в ядре). Для более полного контроля есть разные sandbox-ы, selinux-ы итд.

anonymous ()

Процесс не переходит в kernel mode, а вызывает функцию ядра, которая работает в kernel mode и возвращает какой-то результат. Эти функции ядра проверяют аргументы, проверяют права пользователя, от которого запущен процесс и учитывают всё это при своей работе.

Legioner ★★★★★ ()
Ответ на: комментарий от anonymous

спс. в генту хендбуке есть страница про RSBAC, который включает SELinux, MAC и ещё много чего: как из этих модулей выбрать нужный, т.е там нет детального сравнительного описания каждых. достаточно ли какого нибудь одного? или лучше какойнибудь sandbox?(какой?)

teod0r ★★★★★ ()
Ответ на: комментарий от teod0r

selinux и есть mac :) бери или его, или аппармор - они более-менее обкатаны, в отличие от tomoyo.

leave ★★★★★ ()

если процесс перешёл в kernel mode он получает возможность полного контроля памяти?

Если коротко, то да; если более длинно - да, но при переходе в режим ядра начинает выполняться кодя ядра, которому можно доверять (за исключением багов).

есть ли в linux механизмы фильтрации определённых сигналов для определённых программ в kernel mode?

Нет. Есть SELinux и подобные, но всё это расчитано на сдерживание кода пользовательского режима.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

всё это расчитано на сдерживание кода пользовательского режима

т.е эти фильтры работают в user mode и не дадут выполнить определённый вызов в кернель мод? т.е осуществить задуманные блокировки получится, только они работают ДО kernel mode? просто не совсем понятен смысл ответа «Нет» на последнюю цитату - всмысле это просто как раз поправка про то что оно действует до вызовов kernel mode да или что?

teod0r ★★★★★ ()
Ответ на: комментарий от teod0r

всё это расчитано на сдерживание кода пользовательского режима

т.е эти фильтры работают в user mode

Нет, в kernel.

и не дадут выполнить определённый вызов в кернель мод?

Собственно выполнить вызов они дадут, ты перейдешь в режим ядра, но потом код ядра проверит полномочия и при отсуствии полномочий зафейлит вызов. Короче говоря, единственный доверенный код в системе - это ядро; все проверки безопасности начинаются там (честно говоря, я не знаю таких, которые выходили бы из ядра в userspace).

Или ты спрашиваешь о средствах фильтрации системных вызовов? Там тоже сначала выполняется вход в режим ядра, но да, тебе просто не дают выполнить системный вызов.

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)

всем спасибо за столь подробные ответы

teod0r ★★★★★ ()

man x86, а конкретнее - шлюзы.

segfault ★★★★★ ()

User mode - работа в непривилигированном уровне (access ring x86), находясь в виртуальной памяти, ограничения по командам (например запрет прерываний) Kernel mode - ядро, доступ ко всей памяти и командам. Есть Системы безопасности позволяющие ограничить доступ на уровне ядра. Основные - grsecurity и selinux.

sartakov ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.