📘 Пункт 3. Работа с безопасностью в IIS
3.1. Пользователи и группы
-
IIS использует учетные записи Windows для контроля доступа.
-
Можно ограничивать доступ к сайту по:
-
отдельным пользователям Windows,
-
группам,
-
анонимным пользователям.
-
Совет для PHP-сайтов: создайте отдельного пользователя для Application Pool, чтобы PHP выполнялся не под системным администратором, а под ограниченной учетной записью.
3.2. Аутентификация
IIS поддерживает несколько видов аутентификации:
Тип | Описание | Применение |
---|---|---|
Anonymous | Доступ без логина | Сайты для всех (WordPress, Joomla, обычные PHP-сайты) |
Basic | Логин/пароль через браузер (не шифруется без HTTPS) | Административные разделы, тестовые сайты |
Windows Authentication | Проверка пользователя Windows | Корпоративные порталы, внутренние сайты |
Digest / Forms | Для старых приложений или кастомных форм | Редко используется |
💡 Для PHP чаще всего используется Anonymous, но если админка — Basic + HTTPS.
3.3. Авторизация
-
После аутентификации IIS решает, кто что может делать.
-
Можно ограничивать доступ по:
-
папкам,
-
IP-адресам,
-
ролям пользователей.
-
Пример: запретить доступ к /admin
всем, кроме определённого IP.
3.4. SSL / HTTPS
-
Шифрование трафика обязательно для авторизации и передачи данных.
-
В IIS:
-
- Получаем сертификат (Let’s Encrypt или платный).
- Добавляем привязку к сайту → HTTPS.
- Можно сделать редирект с HTTP → HTTPS.
💡 Для highload-сайтов с PHP лучше ставить Nginx перед IIS и обрабатывать SSL на нём, чтобы IIS работал быстрее.
3.5. Ограничение доступа и защита
-
IP Restrictions — блокировка нежелательных IP.
-
Request Filtering — фильтрация запросов, блокировка опасных URL, длинных строк, скриптов.
-
Application Pool Identity — PHP не должен работать под SYSTEM, а под отдельной учёткой с минимумом прав.
-
Logging — ведите логи (IIS + PHP) для обнаружения атак.
3.6. Дополнительные советы
-
Всегда обновляйте IIS и PHP до последних версий.
-
Не размещайте исходники PHP рядом с веб-корнем (или ограничивайте доступ через Request Filtering).
-
Используйте HTTPS даже для тестовых сайтов.
-
Разделяйте сайты на разные Application Pools, чтобы сбой одного не повлиял на другие.
✅ Практическое задание:
-
- Проверь Application Pool сайта → назначь отдельного пользователя с минимальными правами.
- Настрой Anonymous для PHP, но запретите доступ к
/admin
по IP или Basic-аутентификацией. - Установи HTTPS и сделай редирект с HTTP → HTTPS.
- Включи логирование всех запросов и ошибок PHP.