Отбрасывать права процесса под windows
Я ищу способ отбросить права на процесс по соображениям безопасности. Я хочу начать как пользователь с привилегиями и закончить как пользователь с ограниченными правами.
Например, я хочу, чтобы мой веб-сервер работал под ограниченным пользователем, я все еще хочу прослушивать порт 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 ответ
Взгляните на описание Марка Руссиновича о снятии привилегий в Windows с помощью CreateRestrictedToken
а также CreateProcessAsUser
, Как он объясняет, это не пуленепробиваемо, поскольку учетная запись, под которой запущен процесс, сохраняет свои привилегии.
И, конечно же, его утилита PsExec sysinternals поможет вам по крайней мере убрать Administrator
привилегии, не требуя кодирования.
Для существующего процесса, кажется, AdjustToken
а также AdjustTokenGroup
разрешить манипулирование (первый, по-видимому, требует XPSP2 или выше), но требует самих привилегий... может быть возможно передать привилегию seppuku таким образом, но я не пробовал их: они могут препятствовать манипулированию привилегиями текущего процесса.