Как защитить сайт от взломов и атак в 2021 🛡 [Конспект вебинара о безопасности сайта]

Содержание

В статье:

  • Почему нужно обеспечить безопасность сайта
  • Что угрожает безопасности сайта — классы угроз и способы решения:
    • Личная безопасность
    • Как проверить, были ли утечка пароля
    • Уязвимости в вашем коде
    • Уязвимости в CMS
    • Уязвимости в системном софте и библиотеках
    • Уязвимости открытых систем управления
  • Итоги

16 марта на площадке Collaborator прошел вебинар с сооснователем PR-CY Евгением Барановым. Он рассказал, какие методы взломов используют хакеры, какие методы защиты не работают в 2021 году и как обезопасить свой проект.

Смотреть вебинар:

Составили конспект вебинара для тех, кому удобнее читать текст.

Почему нужно обеспечить безопасность сайта

Как минимум такие причины:

  • Потеря трафика и денег
    Если сайт взломали, владельцы теряют клиентов, трафик и следовательно доход с сайта.

  • Санкции от поисковых систем
    Поисковики оберегают пользователей и их данные, у взломанного сайта будем пометка в выдаче, при переходе пользователь увидит страницу с предупреждением, что сайт небезопасен. Из-за этого сайт потеряет большую долю трафика.

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

  • Ответственность перед пользователями
    Пользователи — главная ценность сайта, потеря их данных и паролей подрывает их доверие. Контроль действует на законодательном уровне: в РФ есть Закон о персональный данных, в Европе GDPR.

Что угрожает безопасности сайта — классы угроз и способы решения

Проблемы безопасности можно разделить на классы в зависимости от причины уязвимости:

Личная безопасность

Безопасность данных, которые могут скомпрометировать администратора сайта. К таким данным можно отнести пароли, сетевую активность и файлы на дисках.

1. Компрометация паролей

Обычно злоумышленники, которые уводят пароль от админки, добавляют на сайт ссылки на платные ресурсы, размещают на нем контент 18+ или по-другому топят ваш проект.

С помощью чего уводят пароли:

Трояны

Вирусные программы, появляющиеся на вашем компьютере под видом легитимного программного обеспечения.

Фишинг

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

Брутфорс

Так называют перебор символов для подбора пароля. Элементарный пароль типа 1234 или 11111 подобрать будет довольно быстро. Также софт может быть уязвимым к подбору паролей. Например, если у админки нет какого-либо rate limiting — ограничения на количество запросов в единицу времени. Если она без ограничений позволяет очень быстро вводить пароли, злоумышленнику будет легко их перебирать.

Одинаковые пароли для разных сервисов

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

Проверить сайт на вирусы можно через сервис Анализ сайта, также он проанализирует сайт на санкции, оценит его техническую сторону и оптимизацию:

Как проверить сайт на вирусыПроверка сайта

2. Перехват сетевого трафика

Ваш трафик можно перехватить, а вместе с ним и пароли. В каких случаях это может произойти:

При использовании публичного Wi-Fi

Допустим, веб-мастер пришел в кафе и подключился к бесплатному Wi-Fi с открытой сетью. Кто-то с обычным ноутбуком сидит за соседним столиком и может перехватить его трафик с помощью специальных программ. Веб-мастер заходит на свой сайт, где не используется HTTPS, то есть трафик не шифруется, вводит пароль — он оказывается у злоумышленника. Если трафик не шифруется, даже не обязательно вводить пароль, злоумышленник может утащить авторизационные cookie.

В корпоративной сети

Такое может произойти и в корпоративной сети, поскольку многие администраторы и владельцы бизнеса используют специальное ПО для мониторинга действий своих сотрудников. Кто-то с доступом к вашим данным может захотеть ими воспользоваться.

При использовании бесплатных прокси

Бесплатный сыр бывает только в мышеловке. Раньше было популярно размещать бесплатные прокси для перехвата трафика. Владелец может невозбранно перехватывать трафик, поскольку весь он идет через прокси.

Через Wi-Fi в гостях

Перехватить ваши данные могут люди, к чьей сети вы подключаетесь. Если вы подключились к Wi-Fi дома у приятеля, которому интересно почитать ваши переписки или выложить что-то шуточное в вашем блоге, он может настроить перехват трафика на роутере.

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

Как проверить, была ли утечка пароля

Сайт haveibeenpwned.com сканирует публичные сливы приватных данных. Если вы введете пароль или email, он проверит их участие в сливах и покажет, когда они были, с каких сайтов и какие данные попали к злоумышленникам.

Проверка утечки пароляСервис нашел проблемы сливы паролейПочта участвовала в двух утечках

После проверки пароля его лучше поменять на новый в любом случае.

Что делать: решения для личной безопасности

Как обезопасить пароли:
  • Для каждого сервиса придумывайте свой уникальный пароль.

  • Для хранения учеток используйте менеджер паролей: 1Password, LastPass, Enpass, Dashlane или другой, есть бесплатные. Нужно будет запомнить один главный пароль для менеджера, а остальные можно сохранить в нем.

  • Не вводите пароли на чужих устройствах.

  • Используйте двухфакторную аутентификацию с подтверждением по sms, а лучше по специальному коду. К примеру, одноразовые пароли поддерживают Google Authenticator, Яндекс.Ключ или даже 1Password.

  • Поставьте пароль на SIM-карту на случай, если у вас ее украдут и будут использовать для двухфакторной аутентификации.

  • В админке сайта установите задержку для следующих попыток после ввода неправильного пароля, чтобы хакеру было сложнее их перебирать.

Как обеспечить сетевую безопасность:
  • Переведите свои сайты на HTTPS.

  • Если используете VPN, оценивайте, насколько доверяете провайдеру.

  • Не используйте публичный Wi-Fi.

  • Не используйте бесплатные прокси.

Уязвимости в вашем коде

RCE — удаленное выполнение кода

Это удаленное выполнение кода на взламываемом компьютере или сервере, злоумышленники могут получить доступ ко всем данным и учеткам.

Чаще всего это происходит через загрузку исполняемых файлов. Утрированный простой пример: злоумышленник берет php-файл, переименовывает его в shell.jpg.php и загружает в виде картинки на старую версию CMS WordPress в комментарии, галерею — в какое-то место, куда можно загружать файлы. Есть вероятность, что он загрузится и поместится в папку на сервере. После обращения к нему код из файла начнет исполняться и злоумышленник сможет запускать команды. Это немного устаревший способ, сейчас в чистом виде такое практикуют редко, но с сайтами на старых версиях WP может сработать.

SQL Injection — внедрение SQL-кода

Способ основан на внедрении в запрос какого-то SQL-кода, с его помощью можно получить доступ к базе данных, прочитать содержимое таблиц, изменить, удалить или добавить данные, выполнить команды, добавить еще одну учетную запись.

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

XSS — межсайтовый скриптинг

XSS или Cross-Site Scripting работает так: злоумышленник ищет уязвимости на сайте и благодаря им вставляет на сайт код JavaScript. В браузере пользователя этот код отображается как часть сайта. Вам как админу ресурса может прийти письмо с какой-то ссылкой, при переходе на нее запустится скрипт. Вы авторизуетесь на сайте как админ, а в это время авторизационные куки улетают злоумышленнику. Либо переходить по ссылкам даже не нужно, достаточно зайти на страницу и код активируется.

CSRF — межсайтовая подделка запроса

Атака CSRF использует недостатки протокола HTTP. Пользователь заходит на созданный злоумышленником сайт и выполняет действие — к примеру, решает капчу, где нужно передвинуть один объект в другой. В это время от лица пользователя JavaScript отправляет запрос на другой сервер и выполняет действие на другом сайте. Например, переводит деньги или меняет пароль.

Что делать: решения для уязвимостей в коде

Решение только одно — найти хорошего разработчика.

Без навыков программирования будет очень сложно найти такие уязвимости на своем ресурсе. Но есть и хорошая новость: у злоумышленников нет доступов к исходникам, так что находить уязвимости им будет еще сложнее. Если вы не владеете популярным сайтом, скорее всего ваш ресурс не очень интересен для взлома.

DoS и DDoS — атака на вычислительную систему

DoS (Denial of Service) — в первую очередь это ошибка программиста, связанная с плохой архитектурой. Злоумышленник создает такие условия, при которых пользователи не могут получить доступ к сайту.

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

DDoS отличается тем, что атака идет не с одного устройства, а сразу с нескольких компьютеров, которые отправляют запросы.

Что делать: решения для DoS и DDoS

  • Исправить проблемы в коде, чтобы страницы отвечали быстро. Для этого тоже нужно найти хорошего разработчика.

  • Добавить кэширование, но это не сработает для динамических сайтов с быстро обновляемым контентом.

  • Подключить Reverse Proxy / CDN для защиты от DDoS.

Уязвимости в CMS

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

С бесплатными CMS, включая WordPress, Drupal, Joomla и другие, тоже могут быть проблемы. Они имеют открытый исходный код, который может смотреть кто угодно. Хакеры тоже его смотрят и могут находить уязвимости. Дальше они ищут сайты на нужных им версиях WordPress, пишут скрипт и одной волной взламывают все эти сайты. И, например, размещают на них контент для взрослых или платные ссылки.

Что делать: решения уязвимостей CMS

  • Если нет денег на платный софт, используйте бесплатный, но легальный.

  • Не допускайте, чтобы версия движка устаревала, регулярно обновляйте.

  • Не используйте взломанные и неизвестные плагины для CMS.

  • Мониторьте уязвимости.

Для мониторинга можно использовать сервисы, для WordPress есть сканер с базой данных уязвимостей WPScan. Работает бесплатно с ограничением на количество проверок в сутки.

Проверка уязвимости CMSКоличество уязвимостей конкретного сайта на WP

Уязвимости в системном софте и библиотеках

Уязвимости софта сложнее эксплуатировать, но они опаснее.

Многие забывают обновлять системное программное обеспечение: Apache, php и так далее. Актуальные версии php на сегодняшний день начинаются с 7.4 — это значит, что более старые версии от 7.2 и ниже не поддерживаются. Они сильнее уязвимы и скорее всего имеют незакрытые дыры в безопасности.

Бывает, что пользователи не обновляют php из-за старых плагинов и расширений, которые поддерживаются только на какой-то устаревшей версии. Такие плагины почти на 100% уязвимы.

Что делать: решения для уязвимостей софта

  • Регулярно обновляйте софт на сервере. Иногда этим занимается хостинг-провайдер.

  • Если у вас стоит старый софт и обновить его по каким-то причинам невозможно, ограничьте к нему доступ — закрывайте порты с помощью Firewall. Почему это важно: к примеру, если в Базе данных, которую вы используете, будет какая-то уязвимость, благодаря Firewall снаружи никто не сможет до нее достучаться.

  • Устанавливайте только необходимое. Если можете обойтись без какого-то плагина — удалите его. Чем меньше софта, тем статистически менее вероятна уязвимость.

  • Разносите разные сайты на разные сервера — если вас взломают и вы что-то потеряете, то хотя бы не все сразу.

Уязвимости открытых систем управления

Открытые системы управления позволяют просматривать данные пользователей и другую информацию из баз данных сайта. К примеру, phpMyAdmin с открытым исходным кодом для администрирования СУБД MySQL. Если пароль от вашей базы данных будет слит, хакеру не придется ничего придумывать, он просто зайдет в админку и сделает все, что ему нужно.

Что делать: как закрыть уязвимости систем управления

  • Если нужен доступ к каким-то специфическим сервисам, установите VPN. Сначала подключайтесь к VPN, а потом получайте доступ к ресурсам, в том числе Базе данных.

  • Лучшее решение — удалить и не пользоваться открытыми системами управления.

Итоги

Злоумышленники ищут уязвимости и новые способы взлома, так что если вы не следите за безопасностью сайта и вас еще не взломали, скорее всего вы пока просто не нужны хакерам. Взламывают даже крупные корпорации, а они обычно инвестируют в безопасность и ищут уязвимости с помощью Bug Bounty — нанятых хакеров, которые специально пытаются их взломать.

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

Источник