22 октября 2018

Рекомендации по защите: Web-серверы. Windows

Общая информация об угрозе

Web-серверы часто подвергаются атакам со стороны злоумышленников. Благодаря взломанным web-серверам недоброжелатели могут получить доступ к конфиденциальной информации пользователей, нарушить целостность работы организации или использовать web-сервер, как «входную» точку в локальную сеть.
Internet Information Services (IIS) — это проприетарный web-сервер разработки компании Microsoft, который занимает третье место на рынке вслед за Apache и Nginx и чаще всего используется на серверах с ОС windows. IIS предоставляет простую в управлении, модульную и расширяемую платформу для надежного размещения web-сайтов, служб и приложений на базе операционной системы Windows.
Как любой другой web-сервер, IIS имеет свои особенности. И ,конечно, немаловажным фактором является уровень безопасности, который может быть предложен данным программным обеспечением.

Ниже мы рассмотрим рекомендации по настройке IIS для увеличения уровня его безопасности и отказоустойчивости.

Рекомендации по защите

1. Регулярное обновление безопасности.
Проверяйте обновления вручную или настройте ваш web-сервер на автоматическое получение важных обновлений через Центр обновлений. Установка обновлений должна производиться в запланированное время, которое выставляется администратором. Также перед обновлениями рекомендуется сделать снимок инфраструктуры, чтобы при возникновении ошибок можно было вернуться к предыдущей версии.
2. Уменьшение количества пользователей и ограничение их прав.
Отключите лишние гостевые учетные записи и не наделяйте пользователей, работа которых не требует административных привилегий, лишними правами. Если в администрировании вашей инфраструктуры задействовано несколько человек, создайте для каждого из них отдельную учетную запись. Это поможет отследить, кто именно совершил то или иное действие в системе.
С помощью локальных и групповых политик безопасности активируйте автоматическое завершение сессий пользователей при бездействии в течение определенного времени (например, 15 минут).
3. Изолирование ролей сервисов.
В идеале, один сервер — одна функция. То есть сервер должен выполнять какую-то конкретную функцию: контроллер домена, файловый сервер или другие. Конечно, на практике такого сложно добиться, но можно выполнить эту рекомендацию, например, с помощью виртуальных машин, развернутых для выполнения отдельных ролей.

4. Отключение SSL2.0 и SSL3.0.
Данные версии протокола считаются криптографически небезопасными. Используйте протокол TLS не ниже версии 1.2.

5. Использование HTTP версии не ниже 1.1.
Все новые версии популярных web-серверов и браузеров уже поддерживают HTTP/2. Новая спецификация быстрее и производительнее существующего HTTP 1.1 и давно устаревшего HTTP версии 1.0.
6. HttpOnly и Secure cookie.
Похищение cookie из приложения может привести к захвату авторизованного сеанса пользователя. Кражу cookie можно осуществить с помощью атаки типа XSS. Атрибут HttpOnly позволяет снизить эту угрозу, ограничивая доступ к cookie из JavaScript.

7. Настройка доступных Internet Media Types (MIME).
Это проверка содержимого файлов, которая может защитить вас от все тех же атак типа XSS. С помощью MIME можно выбрать типы файлов, которые могут храниться и быть обработанными на сервере. Все остальные файлы, в том числе и те, которые попытается загрузить злоумышленник, не будут загружены, и система выдаст ошибку.
8. Настройка пула приложений.
Пул приложений IIS обслуживает сайты и web-приложения, размещенные на вашем сервере. Выделенный пул приложений IIS обеспечивает вашим клиентам определенный уровень изоляции между сайтами. Полная изоляция пулов между собой позволяет исключить возможность влияния вредоносного сайта на соседние пулы, находящиеся на одном сервере. Если один из пулов будет скомпрометирован, другие останутся защищенными.
9. Использование IP Address and Domain Restrictions.
Составьте с помощью Domain Restrictions белые списки IP-адресов для ограничения доступа к сайту. Например, для того чтобы открыть доступ к панели администратора только с определенного IP-адреса.

10. Настройка Request Filtering.
Добавьте фильтрацию по заголовку, методам, URL, расширению, чтобы оградить себя от возможных методов DoS атак. А фильтрация query-параметров поможет защититься от попытки получить доступ к конфигурационному файлу web.config или файлу с паролями.

11. Dynamic IP Address Restrictions.
Используя эту особенность, ограничьте частоту запросов, чтобы IIS на аномально огромное количество запросов с одного IP-адреса выдавал ошибку как результат. Будьте осторожны, при неправильной настройке можно заблокировать доступ со стороны серверов CDN.
12. Настройка страниц ошибок.
К каждому типу ошибок, которые могут возникнуть при работе с сайтом, необходимо создать и привязать
страницу-заглушку для того, чтобы скрыть конфиденциальную информацию. В IIS есть возможность выдачи различных страниц с ошибками для конечных пользователей и администраторов.

13. Защита от Clickjacking атак.
Для этого во вкладке «Соединения» в списке функций найдите «заголовки HTTP-ответов» и добавьте новый подпункт под названием «X-Frame-Options» со значением «SAMEORIGIN».

14. Проверка конфигурационного файла.
В модуле «Configuration» расположен элемент «Credentials», который позволяет указывать дополнительные логины и пароли для учетных записей. Рекомендуется не хранить пароли в файле конфигурации, даже в виде хеша. Аутентификационные учетные данные всегда должны храниться в защищенных местах, чтобы уменьшить риск их кражи.

15. Изоляция web-контента от системных файлов.
Создайте отдельный раздел на жестком диске для хранения файлов web-контента. Это позволит снизить нагрузку на дисковое пространство, в котором хранятся системные файлы и уменьшить риск нарушения их конфиденциальности и целостности.
16. Размещение заголовков «Host» на всех сайтах.
Заголовок хоста указывает, какой web-сайт или web-приложение должно обрабатывать входящий HTTP-запрос. Каждое
web-приложение, размещенное на одном и том же IP-адресе, обычно называется виртуальным хостом. Большинство
web-серверов настроены на передачу нераспознанного «Host» заголовка на первый виртуальный хост в списке. При такой настройке злоумышленник может получить доступ к внутренним хостам или осуществить атаку типа межсайтовый скриптинг. Чтобы избежать этого, нужно разместить «Host» заголовки и их проверку на каждом web-сайте или
web-приложении на сервере.
17. Отключение возможности просмотра каталогов.
Просмотр каталога позволяет отображать содержимое каталога по запросу от 
web-клиента. Если просмотр каталогов включен для каталога в Internet Information Services, пользователи получают страницу, в которой перечисленo содержимое каталога.

18. Отключение метода «Trace».
На действующем web-сайте трассировка должна быть отключена, поскольку она может отображать конфиденциальную информацию всем, кто просматривает страницы на сайте. При необходимости атрибуту localOnly может быть присвоено значение true, чтобы информация о трассировке отображалась только для запросов с локального хоста.
19. Выбор правильных алгоритмов шифрования и хэширования.
Элемент «machineKey» в конфигурационном файле web.config задает алгоритм и ключи, которые ASP.NET будет использовать для шифрования и хеширования служб приложений. Настройте его на использование алгоритмом шифрования AES и хеширования SHA1.

20. Проверка режима отладки (debug).
По умолчанию режим отладки отключен, но он очень удобен для разработки при исправлении неполадок. Этот режим компилирует приложения с выводом дополнительной информации, которая позволяет внимательно отслеживать и контролировать выполнение кода. Часто, уже после устранения проблем с кодом, его забывают отключать.

21. Логирование и аудит.
Настройте ведение подробных логов, хотя бы по работе критически важных сегментов вашей инфраструктуры и регулярно инспектируйте их.

Действия в случае инцидента

К признакам взлома сервера можно отнести: значительное повышение трафика, перебои в работе и другое аномальное поведение системы в целом. Но не всегда легко понять, что ваш web-сервер был взломан. Каждый день появляются новые пути, которые злоумышленник может использовать для планирования своей атаки.
Общие шаги следующие:


  1. По возможности изолируйте сеть. Это действие позволит остановить активную атаку и помешает нарушителю скомпрометировать другие системы.
  2. Выявите и ликвидируйте слабое место. Важно понять, каким образом злоумышленник получил доступ в сеть. В этом вам могут помочь средства агрегации и мониторинга логов со всех систем.
  3. Определите, чем занимался хакер на вашем сервере. Проведите тщательное исследование журналов взломанного сервера для получения информации о характере взлома и действиях злоумышленника. Может случиться так, что, закрыв дыры на web-сервере, вы пропустите, например, ботнет, который появился на других машинах.
  4. Очистите все следы злоумышленника. Для этого неплохо бы иметь утилиты, позволяющие отследить появление/редактирование файлов. Отдельно стоит заметить, что журналы, в которых сохранилась информация о деятельности преступника, лучше оставить, так как они могут пригодиться в дальнейшем расследовании.
    После проведения мероприятий по реагированию на инцидент, когда все последствия устранены, и можно вернуться к нормальной работе, следует провести аудит безопасности. В рамках него необходимо проанализировать допущенные ошибки и исправить их, чтобы не избежать взлома в будущем.
    Контакты для связи
    Контактные данные обрабатываются на условиях полной конфиденциальности.
    Отправляя заявку, вы даете свое согласие на обработку персональных данных на условиях, указанных в Политике конфиденциальности.
    Другие публикации по теме