Загрузка

📘 Пункт 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:

    1. Получаем сертификат (Let’s Encrypt или платный).
    2. Добавляем привязку к сайту → HTTPS.
    3. Можно сделать редирект с 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, чтобы сбой одного не повлиял на другие.


Практическое задание:

    1. Проверь Application Pool сайта → назначь отдельного пользователя с минимальными правами.
    2. Настрой Anonymous для PHP, но запретите доступ к /admin по IP или Basic-аутентификацией.
    3. Установи HTTPS и сделай редирект с HTTP → HTTPS.
    4. Включи логирование всех запросов и ошибок PHP.