Безопасность сайта: какие бывают угрозы и как их избежать

2 августа 2018
15 мин. 20096
image
image
Алексей Семёнов редактор
Безопасность сайта: какие бывают угрозы и как их избежать
Атаке может подвергнуться любой сайт вне зависимости от размера и коммерциализации. В результате ресурс потеряет работоспособность, а конфиденциальные данные пользователей окажутся под угрозой. Для вас это выльется в репутационные и финансовые потери. Рассказываем, что еще может грозить вашему сайту и как защититься от злоумышленников.
Кроме прямой атаки, ваш сайт могут использовать для причинения вреда другим ресурсам — рассылки спама и DDoS-атак, нападений на пользователей, заражения устройств и приложений. Если такое произойдет, сайт будет заблокирован со стороны хостинга, поисковой системы или браузеров.

Коммерческие сайты атакуют с целью получения пользовательских данных. Затем эти данные используют в мошеннических схемах. Корпоративные сайты подвергают угрозе, чтобы получить точку доступа в сеть компании, похитить клиентскую базу, получить конфиденциальную информацию.

Где сайт может быть уязвим:
В серверной части.
Программной части — CMS, скриптах, плагинах.
Системе администрирования — мошенники могут подобрать или украсть пароли от административной панели, FTP.
Атаки могут носить бессистемный, массовый характер на основе автоматических действий роботов. А могут быть целенаправленными, когда хакеры стремятся взломать именно ваш сайт.

Разберем, какими могут быть уязвимости.

Классы атак и уязвимостей

Аутентификация (Authentication)

Использование уязвимостей в механизмах проверки идентификатора пользователя, службы или приложения, которые направлены на обход системы.

Авторизация (Authorization)

Авторизация требуется для определения уровня прав доступа пользователя, службы или приложения. Атаки проводят, чтобы получить доступ к скрытому содержимому или функциям.

Логические атаки (Logical Attacks)

Атаки данного класса используют уязвимости логики или функций приложения. Логика приложения — ожидаемый процесс при выполнении определенных действий. Для решения определенной задачи приложение требует произвести несколько последовательных действий. Пример: регистрация учетных записей, восстановление паролей, покупка в интернет-магазине и т. д. Механизмы можно обойти или использовать в своих целях.

Разглашение информации (Information Disclosure)

Большинство серверов предоставляют чрезмерный объем служебной информации. Эта уязвимость дает возможность определить используемые дистрибутивы программного обеспечения, номера версий клиента и серверов, а также установленные обновления. Далее эта информация используется для взлома и последующих действий.

Выполнение кода (Command Execution)

Атаки, цель которых — выполнение кода на стороне сервера. Серверы используют данные, которые передают при обработке запросов. Эти данные могут использоваться при составлении команд для генерации динамического содержания. Если требования безопасности не соблюдаются, злоумышленник может модифицировать исполняемые команды.

Атаки на клиентов (Client-side Attacks)

Атаки на пользователей сервера во время посещения сайта.

Как защитить сайт

Надежные пароли. Для генерации и хранения паролей можно применять специальные менеджеры. Нельзя хранить пароли просто на компьютере, в браузерах и FTP-клиентах, нужно регулярно их менять.
Ограничение доступа. Круг лиц, которые имеют доступ к учетной записи администратора сайта, должен быть строго ограничен.
Безопасные протоколы. При подключении к сайту через файлообменные и прочие подобные программы необходимо использовать только безопасные протоколы с шифрованием SFTP или SCP.
Сервер. Системные функции по возможности должны быть отключены, а сайты максимально изолированы. Учетную запись «по-умолчанию» необходимо отключить, а в новой назначить минимум необходимых прав.
Программное обеспечение сервера. Необходимо регулярно обновлять программное обеспечение, поскольку большая часть атак производится через уязвимости устаревшего ПО.
Файлы и каталоги. Файлы и каталоги должны быть доступны только для чтения. Необходимо запретить выполнение скриптов в каталогах загрузки.
Дополнения и компоненты. Все компоненты, которые не используются, необходимо отключить.
Антивирусы. Компьютер администратора сайта должен быть максимально защищен. Периодически проверяйте сайт на вирусы.
Бэкапы. Регулярно создавайте резервные копии сайта. Лучше, если хостинг будет делать это автоматически.
Панели вебмастера. Обращайте внимание на предупреждения безопасности в панелях вебмастеров «Яндекс» и Google.
HTTPS. Если принимаете оплату или передаете данные пользователей, используйте безопасный протокол шифрования данных.
CMS. Выбирайте надежные системы управления сайтом, которые имеют встроенные системы защиты. Например, «1С-Битрикс. Управление сайтом» с единой системой авторизации и бюджетом пользователя для всех модулей, многоуровневым разграничением прав доступа, независимой системой контроля доступа, возможностью шифрования при передаче данных, журналированием, политикой работы с переменными и внешними данными, методикой двойного контроля критически опасных участков ввода. Регулярно обновляйте CMS.
Аудит безопасности. Для профилактики уязвимостей можно проводить аудит с помощью программ-сканеров либо привлекать для оценки специалистов.

Профилактика угроз

Аудит безопасности — упреждающая мера, которая позволяет выявить уязвимости, оценить защищенность сайта и возможные сценарии атак, а затем сформировать рекомендации по защите ресурса.

Комплексный аудит безопасности включает в себя:
Атаку подбором паролей.
Внедрение XML-сущностей.
Поиск компонентов с известными уязвимостями.
Проверку на удаленное выполнение произвольного кода.
Поиск уязвимостей серверных компонентов и в веб-окружении сервера.
Проверку на наличие «инъекций» кода.
Попытки обхода системы аутентификации.
Поиск XSS/ CSRF-уязвимостей.
Попытки перехвата привилегированных аккаунтов или их сессий.
Проверку на возможность файловых инъекций Remote File Inclusion/ Local File Inclusion.
Сканирование директорий с помощью перебора и взлома через индекс Google.
Анализ всех форм на сайте: регистрации, авторизации, поиска и т.д.
Попытки обхода системы аутентификации.
Проверку на возможность открытого получения конфиденциальной информации.
Проверку на атаки класса Race Condition — ошибки проектирования многопоточных систем и приложений.
Для аудита используются сканеры уязвимостей — специальные программы, которые проверяют ресурс и зондируют типичные уязвимые места, тем самым анализируют общую защищенность сайта.

Сканеры бывают 3-х типов:
Сетевые. Проверяют дистанционно, подключаясь через сетевые сервисы. Самый популярный вид сканеров.
Пассивные. В качестве источника данных используют сетевой трафик, при этом, в отличие от сетевых, минимизируют влияние сканера на уязвимости.
Локальные. Устанавливаются непосредственно на проверяемом узле, благодаря чему обеспечивают высокую достоверность. Ищут уязвимости, сравнивая атрибуты файлов.
Самые распространенные сканеры: MaxPatrol, N-Stealth, Shadow Security Scanner, Acunetix, ISS Internet Scanner, XSpider, Nessus.

Обеспечение безопасности сайта — постоянный процесс, который не ограничивается проверками. По результатам сканирования ресурс необходимо дорабатывать, закрывать дыры, а некоторые вопросы решать на стороне сервера. Аудит безопасности позволяет определить ряд мер и работ, которые надо выполнить. Это могут быть доработки программной части, услуги инженеров, которые решат технические вопросы, и набор организационных мер.

Расскажите
о вашем проекте