Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Настройка доступа к папкам для ApplixationPool / 21 сообщений из 21, страница 1 из 1
17.04.2013, 17:04
    #38229629
Alexey30
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Приветствую.
Имеется сервер на Win 2008 R2 на котором хостятся сайты на IIS 7.5.
Товарищ просит разместить его проект на сервере.
Интересует вопрос, как правильно установить ограничения безопасности, чтобы скрипты с данного сайта не могли читать структуру каталогов (и сами файлы) как на системном диске, та к и на диске с данными?
По умолчанию пулу назначается ApplicationPoolIdentity, позволяющая, например, получить список файлов в C:\Windows.
Правильно ли я понимаю, что нужно создать отдельного Windows пользователя, которому дать права на чтение / изменении только папки с сайтом? Что еще необходимо сделать?

Спасибо.
...
Рейтинг: 0 / 0
17.04.2013, 18:09
    #38229773
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Alexey30, учетная запись ApplicationPoolIdentity означает что для каждого пула создается одноименный пользователь давая таким образом возможность полностью изолировать приложения в разных пулах друг от друга.

Поэтому создаешь новый пул (например, NewPool), ставишь у него пользователя ApplicationPoolIdentity и затем даешь (или отбираешь) права пользователю "IIS AppPool\NewPool" на нужные ресурсы. Обрати внимание что пользователи с префиксом IIS AppPool не видны в списке пользователей и их имя нужно вводить вручную. Затем новому сайту назначаешь этот пул и работаешь.

У ApplicationPoolIdentity есть и подводные камни. Это локальные пользователи без прав на имперсонификацию по сети. Если веб-приложению требуется доступ к ресурсам (например MS SQL) на других серверах, то придется создавать отдельную доменную учетную запись для пула.

Alexey30По умолчанию пулу назначается ApplicationPoolIdentity, позволяющая, например, получить список файлов в C:\Windows.
Думаю что это нужно для корректной работы IIS т.к. он, наравне с веб-приложением в пуле, использует эту учетную запись. Сомневаюсь что доступ на чтение на C:\Windows даст увидеть что-то секретное. Наверняка доступ на чтение выдан выборочно, а не на всю папку.
...
Рейтинг: 0 / 0
20.04.2013, 19:18
    #38233954
Alexey30
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Уважаемый bazile, большое спасибо за столь подробный ответ.
В общем то получилось, но не совсем так, как нужно.
Дело в том, что пользователи из IIS AppPool состоят в группе Users, которая по умолчанию имеет доступ на чтение на все диски компьютера (в том числе частично на системный). Вследствии чего и Application Pool имеет доступ на чтение ко всему, что ему в явном виде НЕ запрещено (а это могут быть бэекапы или файлы других сайтов).
Я пытался создать отдельного пользователя, не включенного в группу Users, но при присваивании его пулу получал ошибку
Bad Data. (Exception from HRESULT: 0x80090005)
Подозреваю, это связано с тем, что у нового пользователя нет доступа к нужным разделам системного диска.
Как быть в таком случае? Может быть просто нужно группе Users запретить доступ на все диски, кроме системного?
Спасибо!
...
Рейтинг: 0 / 0
20.04.2013, 19:58
    #38233983
Alexey30
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
И что еще интересно.
Если я отбираю (НЕ запрещаю) у группы Users права на просмотр/чтение файлов в корневой папке сайта и даю эти права пользователю IIS AppPool\NAME, то сайт не стартует с ошибкой

401 - Unauthorized: Access is denied due to invalid credentials.
You do not have permission to view this directory or page using the credentials that you supplied.

Как с этим бороться?
...
Рейтинг: 0 / 0
25.04.2013, 17:38
    #38240456
Alexey30
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Уважаемый bazile и другие участники форума!
Возможно, у кого-то есть ответ?
Спасибо!
...
Рейтинг: 0 / 0
25.04.2013, 20:43
    #38240675
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Alexey30,

Не заморачивайтесь. Попробуйте.
...
Рейтинг: 0 / 0
27.04.2013, 17:38
    #38242682
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Самый лучший вариант это создать своего пользователя с нужными правами и запускать пул от его имени. Тогда у тебя будет полный контроль над правами.

Также не забывай что ASP.NET имеет собственную систему безопасности и на приложение можно наложить дополнительные ограничения. Смотри справку о <trustLevel> .

Alexey30Я пытался создать отдельного пользователя, не включенного в группу Users, но при присваивании его пулу получал ошибку
Bad Data. (Exception from HRESULT: 0x80090005)
Попробовал тоже самое - никаких ошибок и приложение сразу заработало без дополнительных настроек. Попробуй еще раз.

Alexey30Как быть в таком случае? Может быть просто нужно группе Users запретить доступ на все диски, кроме системного?
Я бы не стал так делать. Неизвестно как аукнется.

Alexey30Если я отбираю (НЕ запрещаю) у группы Users права на просмотр/чтение файлов в корневой папке сайта и даю эти права пользователю IIS AppPool\NAME, то сайт не стартует с ошибкой

401 - Unauthorized: Access is denied due to invalid credentials.
You do not have permission to view this directory or page using the credentials that you supplied.

Как с этим бороться?
Запускаешь Process Monitor и смотришь для какой папки и какого пользователя генерируется данная ошибка.
...
Рейтинг: 0 / 0
29.04.2013, 16:28
    #38244147
Alexey30
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
bazile, спасибо еще раз.
Проблема с ошибкой Bad Data решилась: дело в том, что я импортировал applicationHost.config с другого сервера, но при этом не перенес ключи шифрования. Сделал, как описывали здесь: http://serverfault.com/questions/230934/iis-7-5-encryption-keys-and-hresult-0x80090005 - теперь ошибки нет и я без проблем запускаю пул от иного пользователя.

Но проблема с папками так и осталась.
По порядку, как и что делал:

1) Создал пользователя TestUser1 и задал ему пароль.
2) Присвоил этого пользователя ApplicationPool'у.
3) Удалил участие пользователя в группе Users (т.е. пользователь НЕ является участником какой-либо группы): http://SSMaker.ru/45a81729/
4) Попытался открыть сайт и получил сообщение, что пользователь не имеет прав записи на C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files, права на запись именно в эту папку выдал.
5) Сайт запустился и никаких проблем нет.
6) Пытаюсь данным пользователем получить список папок каталога D:\Sites: Directory.GetDirectories(@"d:\sites") - и без проблем получаю, хотя данного пользователя в настройках безопасности нет: http://SSMaker.ru/25d509b7/

Помогите, пожалуйста, понять, что еще нужно сделать, чтобы пользователь имел доступ только к той папке, в которой находится сайт? Есть, наверное, вариант принудительно запретить доступ на все диски и папки, а разрешить только на нужной. Но мне кажется это не самый верный вариант (например, добавится еще диск - по умолчанию тогда пользователь будет иметь на него доступ)...

Спасибо!
...
Рейтинг: 0 / 0
29.04.2013, 17:57
    #38244302
Alexey30
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Появилась еще мысль, что в группу "Пользователи" автоматически входят все авторизованные пользователи: http://SSMaker.ru/a796c17d/ - т.е. каждый авторизованный пользователь входит в группу Users (которой дан доступ на D:\Sites)
...
Рейтинг: 0 / 0
29.04.2013, 18:19
    #38244328
Alexey30
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Но еще раз повторюсь.

Если я отбираю (НЕ запрещаю) права у группы Users на папку D:\Sites, то сайты, расположенные внутри нее, перестают работать с ошибкой 401 (у этих сайтов AppPoolIdentity).
При этом пользователи из группы IIS_IUSRS и пользователь из пула каждого сайта (IIS AppPool\POOLNAME) имеют права на чтение / запись.
Пытался с помощью ProcessMonitor отловить попытку доступа, но в нем ничего толком не понял: в основном все события SUCCESS...
...
Рейтинг: 0 / 0
29.04.2013, 18:57
    #38244377
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Alexey30,

Папке с сайтом необходимо дать полный доступ для группы LOCAL SERVICE

Папке с сайтом необходимо дать доступ на чтение и выполнение (read, list folders, read & execute) группе IIS_IUSRS

Если используется WebDeploy, то остальные нужные права на чтение установятся самостоятельно при публикации, если публикация происходит вручную путем копирования файлов, необходимо дать доступ на чтение всей папке для DefaultAppPool в случае, если у сайта будет данный пул приложений. Если в какую-то папку необходимо записывать, надо разрешить этой папке запись для DefaultAppPool. Но лучше настроить WebDeploy. Настоятельно рекомендую.

Все вышесказанное верно в отношение IIS 7.5 + Windows Server 2008 R2
...
Рейтинг: 0 / 0
29.04.2013, 19:00
    #38244379
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Больше ничего лишнего делать не нужно. Ковырять пользователей и группы пользователей — тем более.
...
Рейтинг: 0 / 0
29.04.2013, 19:06
    #38244394
Alexey30
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
hVostt, спасибо, но, к сожалению, эффект тот же:
http://ssmaker.ru/1f217d20/
http://ssmaker.ru/76d95bf9/
Имеем при обращении к сайту:
http://ssmaker.ru/9d5f47e5/
...
Рейтинг: 0 / 0
29.04.2013, 20:46
    #38244461
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Alexey30,

Значит лишнего перемудрил с пользователями и правами. У меня ни при каких обстоятельствах приложение не может ни увидеть, ни прочесть что-либо извне своей папки, не говоря уже о чем-то большем. Права у сайта есть только от имени *AppPool. Кроме того, WebDeploy.
...
Рейтинг: 0 / 0
29.04.2013, 21:05
    #38244473
Alexey30
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Специально ничего не мудрил - как win 2008 r2 поставил - так никаких изменений в безопасности не было.
...
Рейтинг: 0 / 0
29.04.2013, 21:06
    #38244475
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Alexey30,

Как публикуешь приложение? Копи файлес то фолдер?
...
Рейтинг: 0 / 0
29.04.2013, 21:06
    #38244477
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Вот все что нужно.
...
Рейтинг: 0 / 0
29.04.2013, 21:07
    #38244479
Alexey30
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
Да, без деплоймента - по ftp
...
Рейтинг: 0 / 0
29.04.2013, 21:10
    #38244486
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
LOCAL SERVICE - FULL
IIS_IUSRS - READ, LIST, EXECUTE
DefaultAppPool - READ (ставится автоматом при публикации, ничего специально делать не нужно)

Если последнее не ставится, то ставить вручную. Прям "DefaultAppPool" в списке на чтение загонять. Никаких II*\POOL
При запуске приложение имеет ровно те же права на чтение, что пул, никаких других у него нет. ISAPI фильтр выполняет приложение из папки bin\ обладая правами IIS_IUSRS поэтому нужны права на чтение. права на запись только у LOCAL SERVICE (вообще надо полный набор прав -- FULL CONTROL), нужно исключительно для WebDeploy.
...
Рейтинг: 0 / 0
29.04.2013, 21:12
    #38244488
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
для IIS_IUSRS важно наличие прав на EXECUTE ко всему прочему

для верности можно дать еще прав IUSR (только чтение), незнаю зачем нужно, но где-то рекомендуют.
...
Рейтинг: 0 / 0
30.04.2013, 16:16
    #38245480
Alexey30
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа к папкам для ApplixationPool
hVostt, bazile, огромное спасибо за желание помочь.
Кажется, получилось.
> для верности можно дать еще прав IUSR (только чтение), незнаю зачем нужно, но где-то рекомендуют.
Как оказалось - это самое важное! Пока не дал этот доступ - так и оставалась 401 ошибка.

Итого, для успешно работы нужно:

1 Вариант:
- Доступ на чтение для группы Users (и все, больше ничего!)

2 Вариант (если не хотим, чтобы все Users могли читать):
- Доступ на чтение IUSR
- Доступ на чтение IIS AppPool\PoolName (отображается БЕЗ IIS AppPool).

Во втором варианте IIS AppPool\PoolName можно заменить на IIS_IUSRS, но тогда и другие пулы получат доступ к этому каталогу.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Настройка доступа к папкам для ApplixationPool / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]