Отбрасывать права процесса под windows - PullRequest
3 голосов
/ 19 октября 2010

Я ищу способ отбросить права на процесс по соображениям безопасности.Я хочу начать как пользователь с привилегиями и закончить как пользователь с ограниченными правами.

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

Как можноЯ делаю такие вещи под Windows.Что-то похожее на Unix:

bind_to_80();
chroot("/some/limited/dir");
setuid(limited_user_id);
setgid(limited_group_id);
chroot("/some/limited/dir");
// drop some more rights
fork(); // now I can't come back

Как я могу сделать что-то похожее в Windows?

Редактировать: Конечно, я понимаю, что в Windows нет форка или chroot, но я ищуотбрасывание различных прав, особенно пользователей - лучшие практики.

1 Ответ

3 голосов
/ 19 октября 2010

Взгляните на описание Марка Руссиновича о выделении прав в Windows с использованием CreateRestrictedToken и CreateProcessAsUser.Как он объясняет, это не является пуленепробиваемым, поскольку учетная запись, под которой запущен процесс, все еще сохраняет свои привилегии.

И, конечно, его утилита PsExec sysinternals поможет вам убрать хотя бы1013 * привилегий, без необходимости кодирования.

Для существующего процесса AdjustToken и AdjustTokenGroup разрешают манипуляции (первый, очевидно, требует XPSP2 или выше), но требуют самих привилегий ..Возможно, таким способом можно передать привилегии seppuku, но я их не пробовал: они могут barf при манипулировании привилегиями текущего процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...