Дозволи IIS_IUSRS та IUSR в IIS8


146

Я щойно відійшов від IIS6 на Win2003 до IIS8 на Win2012 для розміщення програм ASP.NET.

У межах однієї конкретної папки в моїй програмі мені потрібно створити та видалити файли. Після копіювання файлів на новий сервер я постійно намагався видалити файли:

Доступ до шляху "D: \ WebSites \ myapp.co.uk \ companydata \ filename.pdf" заборонено.

Перевіряючи IIS, я бачу, що програма працює під обліковим записом DefaultAppPool, однак я ніколи не налаштовував дозволи Windows на цю папку, щоб включати IIS AppPool \ DefaultAppPool

Натомість, щоб перестати кричати клієнтів, я надав наступні дозволи на папку:

IUSR

  • Читання та виконання
  • Перерахуйте зміст папок
  • Прочитайте
  • Пишіть

IIS_IUSRS

  • Змінити
  • Читання та виконання
  • Перерахуйте зміст папок
  • Прочитайте
  • Пишіть

Здається, це спрацювало, але я стурбований тим, що було встановлено занадто багато привілеїв. Я читав в Інтернеті суперечливу інформацію про те, чи дійсно тут потрібен IUSR . Чи може хтось уточнити, яких користувачів / дозволів вистачить для створення та видалення документів у цій папці? Також, чи є IUSR частиною групи IIS_IUSRS?

Оновлення та рішення

Будь ласка, дивіться мою відповідь нижче . Мені довелося це робити сумно, оскільки деякі останні пропозиції були недостатньо продумані або навіть безпечні (ІМО).


Щоб WordPress працював над IIS 8 на віртуальній машині Azure (Windows Server 2012 Datacenter), мені потрібно було надати дозволи, які ви вказали для IIS_IUSRS до IUSR, для каталогу блогу в inetpub / wwwroot
dumbledad

Для тих, хто приходить до цієї теми, оскільки вони намагаються запустити Joomla під IIS і мають проблеми з налаштуваннями безпеки файлів, я написав статтю в блозі з тим, що, на мою думку, є правильним рішенням. Можливо, також застосовно до WordPress або інших програм веб-сервера на базі PHP. renniestechblog.com/index.php/information/…
RenniePet

Можливий дублікат IIS AppPoolIdentity та дозволу на
запис

Чудово працює після додавання повного дозволу на папку для групи користувачів IIS_IUSRS.
Туласірам

@Thulasiram, але тоді ви надали повні привілеї всім користувачам IIS. Подумайте про це з точки зору хакера. Один слабкий сайт, і вони отримують повний контроль над усіма рештою
EvilDr

Відповіді:


146

Я ненавиджу публікувати власну відповідь, але останні відповіді останнім часом ігнорували рішення, яке я опублікував у своєму власному запитанні, пропонуючи підходи, які не відрізняються від дурного.

Коротше кажучи - вам взагалі не потрібно редагувати будь-які привілеї облікового запису користувача Windows . Це лише вводить ризик. Процесом повністю керується в IIS з використанням успадкованих привілеїв.

Застосування дозволу на зміну / запис до правильного облікового запису користувача

  1. Клацніть правою кнопкою миші домен, коли він відображається у списку Сайтів, і виберіть Редагувати дозволи

    введіть тут опис зображення

    На вкладці Безпека ви побачите, що MACHINE_NAME\IIS_IUSRSв списку. Це означає, що IIS автоматично має дозвіл лише для читання в каталозі (наприклад, для запуску ASP.Net на сайті). Вам не потрібно редагувати цей запис .

    введіть тут опис зображення

  2. Натисніть кнопку Редагувати , а потім Додати ...

  3. У текстовому полі введіть IIS AppPool\MyApplicationPoolName, замінюючи MyApplicationPoolNameдоменне ім’я або будь-який пул додатків, що отримує доступ до вашого сайту, наприкладIIS AppPool\mydomain.com

    введіть тут опис зображення

  4. Натисніть кнопку Перевірити імена . Текст, який ви ввели, перетвориться (зауважте підкреслення):

    введіть тут опис зображення

  5. Натисніть ОК, щоб додати користувача

  6. З обраним новим користувачем (вашим доменом) тепер ви можете безпечно надати будь-які дозволи для зміни чи запису

    введіть тут опис зображення


2
Це не спрацювало на моєму сервері IIS 8.5. Додавання IUSRтворів. Додавання IIS AppPool\Cache(назва мого пулу додатків) поступаєтьсяHTTP Error 401.3 - Unauthorized
Чарльз Бернс

14
@CharlesBurns У мене був той самий випуск, я виявив, що це моя основна причина: techras.wordpress.com/2016/03/09/… (анонімним автором було встановлено використання IUSR замість ідентифікації пулу додатків)
Jon

2
У мене була папка, яка використовувалася лише як віртуальна директорія, і вона працювала чудово, поки я не поділився нею (папкою Windows, на яку вона вказував) з іншим обліковим записом домену, щоб він міг переглядати файли через нашу інтранет. Коли я це зробив, файли у віртуальному каталозі раптом стали недосяжними. Мені довелося додати і те, MyComputerName\IIS_IUSRSі IUSRдозволу лише для читання, щоб воно знову працювало. Це лише для віртуальних каталогів (не для .net Apps), але думаю, хтось може вважати це корисним.
MikeTeeVee

13
Лише зауваження: Коли ви шукаєте користувача та комп'ютер є членом домену, IIS AppPool \ MyApplicationPoolName може бути не знайдений. У моєму випадку мені потрібно було натиснути кнопку Locations і змінити місце розташування на локальному комп'ютері.
statler

3
У моїх тестах ім'я спеціального користувача, який тут використовується, не має нічого спільного з доменним іменем. Це ім'я пулу програм, який присвоюється сайту в IIS. Цей пул додатків може мати або не мати імені, яке відповідає домену вашого веб-сайту. Таким чином, картина: IIS AppPool\[APPLICATION POOL NAME]. Пропуски в назві пулу додатків приймаються. Зауважте також, що цього користувача можна знайти, лише якщо "Вбудовані принципи безпеки" встановлені як тип об'єкта для пошуку імені (верхнє поле в діалоговому вікні "Вибрати користувачів або групи").
Jpsy

49

IUSR є частиною IIS_IUSER group. тому я думаю, ви можете видалити дозволи для IUSR, не хвилюючись. Подальше читання

Однак з часом виникла проблема, коли все більше системних служб Windows почали працювати як NETWORKSERVICE. Це відбувається тому, що служби, що працюють як NETWORKSERVICE, можуть змінювати інші служби, що працюють під однаковою ідентичністю. Оскільки IIS-робочі процеси за замовчуванням виконують сторонній код (Classic ASP, ASP.NET, PHP-код), настав час ізолювати робочі процеси IIS від інших системних служб Windows та запускати процеси IIS-робочого під унікальними особами. Операційна система Windows надає функцію під назвою "Віртуальні облікові записи", яка дозволяє IIS створювати унікальні ідентичності для кожного свого пулу додатків. DefaultAppPool - пул за замовчуванням, який призначається всім створеним пулом програм.

Щоб зробити це більш безпечним, ви можете змінити ідентифікатор замовчування IIS DefaultAppPool на ApplicationPoolIdentity.

Щодо дозволу "Створити та видалити" узагальнює всі права, які можна надати. Тому все, що ви призначили до групи IIS_USERS, це те, що вони вимагатимуть. Нічого більше, нічого менше.

сподіваюся, що це допомагає.


3
Щойно я встановив IIS 8 під Server Essentials 2012 R2. Ця машина також є контролером домену. У AD Користувачі та комп’ютери група IIS_IUSRS порожня - вона не містить користувача IUSR. Я думаю, я міг би додати його до групи, але для анонімних сайтів я просто надаю дозволи користувачеві IUSR.
Марк Беррі

7
Коли я надав дозволи на IUSR, він працював. Коли я надав дозволи IIS_IUSER, він не працював.
ihebiheb

Iusr не є членом IIS_Iusrs. (або у Windows є помилка) Зазвичай Windows використовує IIS_Iusrs. (виконання динамічних сторінок або доступ до статичних сторінок), але є деякі випадки, коли Windows використовує Iusr, а не IIS_Iusrs. завантаження файлів за допомогою PHP - один із таких випадків. (і якщо ви надали лише iis_iusr, ви зустрінете виняток з привілеїв). Я думаю, що M $ повинен дати "найкращу практику" для надання дозволу на Iusr та IIS_Iusrs ...
штраф несправедливості

Я думаю, тепер його змінили на групу пулів додатків, тобто (IWGP). Я дав дозволи на IWGP, і це спрацювало.
Рохіт Арора

6
IUSR є частиною IIS_IUSER. НІ, ЦЕ НЕ ТАК! IUSR - це анонімний користувач, IIS_IUSER - група для користувачів
apppool

6

Коли я додав дозвіл IIS_IUSRS до папки сайту - такі ресурси, як js та css, все ще були недоступними (помилка 401, заборонено). Однак, коли я додав IUSR - це стало нормально. Тож точно "ви НЕ МОЖЕТЕ видаляти дозволи для IUSR, не хвилюючись", шановний @Travis G @


7
Не забувайте, що (якщо у вас є IIS7 +) правильним рішенням є використання IIS AppPool\MyApplicationPoolNameвідповідно до моєї оновленої відповіді. Вам більше не потрібно возитися з IUSR (S)!
EvilDr

2
Я спробував вашу пропозицію, але це не працює. Я видалив IUSR (S) з дозволу і залишився лише ім'ям пулу, під яким працює програма. Ресурси стали недоступними. IIS 8.5. Коли я додав IUSR - він спрацював.
Олександр

Вам потрібно опублікувати власне запитання з якомога більше інформації про вашу ситуацію.
EvilDr

4

@EvilDr Ви можете створити обліковий запис IUSR_ [ідентифікатор] у вашому середовищі AD і дозволити конкретному пулу додатків працювати під цим обліковим записом IUSR_ [ідентифікатор]:

"Пул програми"> "Розширені налаштування"> "Ідентифікація"> "Спеціальний обліковий запис"

Встановіть свій веб-сайт на "Додаткові користувачі (через автентифікацію)", а не на "Конкретний користувач", у Додаткові налаштування.

Тепер дайте цьому IUSR_ [ідентифікатору] відповідні дозволи NTFS для файлів і папок, наприклад: змінити на даних про компанію.


Дякую, але я не використовую AD. Також згідно з останньою документацією на MS, IIS 7 і 8 вже налаштовані на роботу, як ви описуєте. Питання справді полягає в тому, чи потрібен один із зазначених облікових записів чи ні, а який - бізнес?
EvilDr

@EvilDr Дякуємо, що пояснили, що ви не використовуєте AD. Ну, IIS_IUSRS - це не користувач, це група. Як і IIS_WPG на IIS 6.0. Про IIS_IUSRS та IUSR ви можете прочитати тут: посилання . Ви можете встановити зміни дозволів на companydata * для облікового запису IUSR, і ви можете додати цього користувача до групи IIS_IUSRS і використовувати цей обліковий рахунок для запуску пулу додатків у. Вам потрібно отримати великі дозволи для IIS_IUSRS для спільних папок (наприклад, TMP), якщо у вас є кілька облікових записів IUSR_account.
Ян Рейлінк

Ян, я завжди вважав, що IUSR за замовчуванням входить до групи IIS_IUSRS? Як ви можете перевірити, чи це так, оскільки рахунок IUSR - це вбудований рахунок. Ви хочете сказати, що я повинен зняти прапорець Змінити для IIS_USRS і перевірити його на IUSR? Враховуючи вимогу одноразового застосування, я не думаю, що це дійсно зміниться, чи не так?
EvilDr

3

Група IIS_IUSRS має чільне місце лише в тому випадку, якщо ви використовуєте Identity ApplicationPool. Незважаючи на те, що ця група виглядає порожньою під час виконання, IIS додає до цієї групи для запуску робочого процесу згідно з літературою про Microsoft.


Не впевнений, чому це було знято. docs.microsoft.com/en-us/iis/get-started/planning-for-security/…
Грег

0

Я б використовував конкретного користувача (а НЕ користувача додатка). Тоді я вмикаю себе в заяві. Як тільки ви зробите це для будь-якого облікового запису, визначеного для конкретного користувача, ці облікові дані будуть використовуватися для доступу до локальних ресурсів на цьому сервері (не для зовнішніх ресурсів).

Конкретні налаштування користувача призначені спеціально для доступу до місцевих ресурсів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.