Как бесплатно защитить свой сайт от DDoS-атак и ботов?


Отзывы, история сайтов

Бесплатный антибот.

Капчу не нужно разгадывать, а нужно просто кликнуть в квадратик.

Антибот

Качаем отсюда - Антибот.

Технические требования.

  • PHP >= 5.6.4 (тестировался на PHP 5.6.4 и 7.1.33, 8.3.15)
  • SQLite (ваш хостинг должен поддерживать SQLite или вы можете установить SQLite на VPS самостоятельно при его отсутствии)

Данный Антибот предназначен для блокировки ботов, которые умеют эмулировать браузер, JavaScript, а так же классических ботов.

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

Основные фильтры:

  • Белый список ip, network
  • Индексирующие роботы (определяет полезных ботов по обратной DNS записи)
  • Черный список ip, network
  • Исключение по User-agent (для ваших ботов)
  • Исключение по URL (например для JSON и REST API)
  • Без JavaScript (блокировка, кроме исключений)
  • Без Cookie (блокировка, кроме исключений)
  • IPv6
  • Протокол HTTP
  • Мобильный девайс
  • Прямые заходы
  • Открытие сайта в iframe
  • Переход из Tor-сети
  • Анализ User-Agent
  • Блокировка по FingerPrint
  • Блокировка по ASN
  • и другое

Каждый пункт проверки можно включить или отключить — всё через конфигурационный файл.

Когда кто-то впервые заходит на страницу, скрипт сразу смотрит, нет ли совпадений по белым или чёрным спискам, а также проверяет user-agent и индексирующих роботов. Если ни одно правило не сработало, показывается страница-пустышка (заглушка), где уже запускаются дополнительные проверки — они требуют немного времени. Пока идёт проверка, пользователь видит индикатор загрузки. По итогу страница либо попросит его ввести капчу, либо сразу заблокирует.

Программа работает максимально быстро, потому что не использует базу данных и никакие другие тяжёлые операции.

Чтобы не портить себе поведенческие факторы, не ставьте счётчик Яндекс Метрики на заглушку (файл template.inc.php в папке templates). Иначе боты, которые зависли на этой заглушке, будут портить вам статистику в Яндексе. Лучше поставьте на эту заглушку (как и на все остальные страницы) счётчик от Matomo.

Считаем всё, что происходит: ставим Matomo

Конечно, на сервере и так хранятся логи — это большие текстовые файлы, где записываются IP-адреса, время визитов, какие страницы открывали, какой браузер (User-Agent) и так далее. Туда попадает вообще всё: и обычные люди, и поисковые роботы, и всякие боты.

Но чтобы смотреть статистику только по реальным посетителям, нужна нормальная, удобная статистика на русском, с графиками и фильтрами.

Я советую поставить Matomo. Она бесплатная, все данные хранятся прямо на вашем хостинге, и никто, кроме вас, к ним не подлезет. Matomo можно установить на отдельный домен. А в FASTPANEL для такого домена легко подобрать нужную версию PHP — даже если ваш основной сайт работает на старой версии, для Matomo можно поставить посвежее. Официальный сайт: https://matomo.org

Статистика Matomo

Вот пример. После того как поставишь Антибота, в Matomo будет видно, как какой-нибудь хитрый бот, который притворяется обычным пользователем, 8 часов 34 минуты долбится в защиту, 80 раз пытается её пройти — и не может:

Статистика Matomo

Хостинг в России и бесплатная защита от DDoS

Для российских сайтов хостинг должен стоять физически в России — иначе РКН может заблокировать. Плюс по нашим законам, если сайт собирает, хранит или обрабатывает персональные данные россиян, он обязан лежать на российских серверах.

Очень важно сразу выбрать надёжный, стабильный и при этом недорогой хостинг, который давно на рынке и даёт бесплатную защиту от DDoS-атак на уровне L3-L4. На виртуальном сервере (VPS) или выделенном сервере можно держать сколько угодно сайтов и поддоменов — главное, чтобы места на диске хватило. Плюс вы сами настраиваете что хотите, на обычном хостинге такой свободы нет.
Защита L3-L4 — это самый базовый, но критически важный рубеж обороны. Он отбивает самые мощные и массовые атаки. Все современные антиддос-сервисы (например, Cloudflare) обязательно включают такую защиту.

Какой хостинг выбрать — решать вам. Чтобы было проще ориентироваться по цене и мощности, вот пример хостинга, который мне нравится. У них VPS с бесплатной защитой от DDoS L3-L4 и с бесплатной панелью FASTPANEL (о ней дальше).

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

Панель управления FASTPANEL

Панель FASTPANEL — бесплатная, удобная, с кучей функций. Там можно раздавать бесплатные SSL-сертификаты Let's Encrypt для сайтов, для каждого сайта выбирать свою версию PHP, прямо из панели смотреть логи сайта и ошибки. Но самое главное — в FASTPANEL есть раздел Настройки → Безопасность. Там выставляются лимиты на количество запросов с одного IP в секунду или минуту, а также максимальная «волна» таких запросов. Это очень полезная штука, которая в один клик блокирует ботов, долбящихся с одного и того же IP.

FASTPANEL раздел Безопасность

Ещё в FASTPANEL есть удобная настройка логов: Настройки → Логирование. Можно включить или отключить запись входящих запросов и ошибок, задать, сколько логов хранить и как часто их ротировать. Если в критический момент отключить логирование, нагрузка на сервер сильно упадёт. Но логи важны для анализа, так что это просто опция на случай, когда сервер реально «кипит».

FASTPANEL раздел Логирование

Раздел HTTPS: там есть галочки «Включить HTTP2» и «Включить HTTP3» — нажал и готово. В критический момент их можно отключить. Тогда допустимая частота запросов снизится, и вместе с настройками лимитов из раздела «Безопасность» вы заблокируете больше ботов. Когда атака закончится — включаете обратно. HTTP2 и HTTP3 — современные протоколы, они позволяют делать много запросов одновременно и работать быстрее. Если их отключить, браузер сам переключится на старый протокол HTTP1.1.

FASTPANEL раздел HTTPS

Анализируем трафик


Теперь, когда сайт защищён, смотрите логи и статистику, особенно в моменты сильной нагрузки. Любой подозрительный IP можно проверить здесь: Проверить IP.

Самое важное — узнать, принадлежит ли IP хостингу, и использует ли этот адрес прокси, VPN или Tor.
Обычные люди в подавляющем большинстве случаев не сидят через прокси, VPN или Tor — хотя иногда такое бывает. Эти адреса динамические и со временем переходят к разным пользователям. Если надо, их можно временно заблокировать, например на месяц, прямо в Антиботе.
А вот IP-адреса, принадлежащие хостингам, — постоянные. Именно с них чаще всего идут атаки на сайты. Если эти адреса не приносят пользы (например, это не поисковые роботы), их лучше сразу блокировать целиком — по подсетям CIDR в корневом .htaccess или по номеру AS в настройках Антибота.

Краткая справка

Обратный DNS — это когда IP-адрес превращают обратно в доменное имя. Выдачу IP иногда подделывают, так что обратный DNS позволяет проверить, соответствует ли IP заявленному домену. Вбейте в форму проверки доменное имя обратного DNS и посмотрите, совпадает ли IP. На этой странице обратный DNS может отображаться с задержкой — если не показалось, попробуйте проверить IP ещё раз.

AS (автономная система) — это набор IP-сетей и маршрутизаторов, которые управляются одной организацией. Такими организациями могут быть:
— Поисковые системы
— Интернет-провайдеры
— Хостинги
— Компании, предоставляющие сетевые услуги
— Другие
По номеру AS можно понять, что разные IP принадлежат одной конторе — если у разных адресов один и тот же номер AS, значит, они от одной организации.
Иногда один IP-адрес может относиться к разным организациям, иметь разные номера AS и разные подсети.

Подсети IP (CIDR) — это подсети в формате IP/префикс, куда входит проверяемый адрес. Можно заблокировать всю подсеть в файле .htaccess. Иногда один IP-адрес используют несколько организаций, и у него есть несколько номеров AS и несколько подсетей.

WHOIS IP — регистрационные данные IP-адреса в формате WHOIS.

RDAP — то же самое, но в более новом формате RDAP.

Проверка IP на спам — пробивка адреса по чёрным спискам (блок-листам) массовых рассылок. Если IP отмечен как спамер, напротив списка будет красное FAIL.

Трассировка IP-адреса — это traceroute, маршрут от вашего устройства до целевого IP. Помогает понять, на каком участке дороги возникают задержки или теряются пакеты.

Как этим пользоваться

По логам сервера или статистике сайта вы видите, какие IP-адреса ходят к вам на сайт. Самые подозрительные можно заблокировать. Например, если с какого-то хостинга идёт куча запросов — это явно боты. Если они не полезны для сайта (не поисковые), можно заблокировать их по одному IP, по всем их диапазонам (подсетям) или вообще всех разом по номеру AS.

Отдельные IP блокируются добавлением записей в конец файла .htaccess (лежит в корневой папке сайта). Если у вас уже есть правила исключения Allow, пример записи такой:

Order Allow,Deny
Allow from all
Deny from 123.123.123.123
Deny from 122.122.122.122


Здесь 123.123.123.123, 122.122.122.122 — это IP, которым доступ запрещён.
Если правил Allow нет, можно написать проще:

Deny from 123.123.123.123
Deny from 122.122.122.122

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

По ссылке ПОДСЕТИ IP (CIDR) можно узнать и заблокировать все подсети, в которые входит нужный IP. Например:

Deny from 194.33.62.0/23
Deny from 194.93.84.0/22

Чтобы заблокировать все IP-адреса целой организации разом, по номеру её AS, через .htaccess так просто не получится. Придётся использовать прокси-сервисы вроде Cloudflare (но для России не советую из-за блокировок РКН) или поставить на сайт бесплатный Антибот, про который я уже говорил, — он умеет блокировать по номерам AS.

Мониторинг: кто следит, что сайт жив

Когда всё настроено, нужно убедиться, что сайт доступен 24/7.

Есть много сервисов, которые проверяют работоспособность сайтов. Выбирайте сами. Главное, чтобы сервис при внезапном падении сайта сразу же сообщал вам по СМС и на почту — тогда вы успеете что-то сделать, чтобы сайт снова заработал как надо.

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

сервис проверки доступности сайтов Ping Admin

Неплохой сервис, присылает уведомления по СМС и email, гибко настраивается. Есть бесплатные проверки.

Блокировка по странам — крайний случай

Если всё перечисленное не помогло, остаётся самый радикальный способ — заблокировать трафик по странам. Большинство кибератак на российские ресурсы идёт из-за границы.

Сейчас для российских сайтов это очень эффективно: Google AdSense из России ушёл, иностранные пользователи вам больше ничего не платят, а РСЯ за зарубежный трафик денег не даёт.

То есть российским сайтам зарубежный трафик сейчас — никакой пользы. Поэтому вполне разумно заблокировать его весь.

Заблокировать страну на сервере можно через настройки фаервола (iptables) или с помощью модуля GeoIP. Инструкций в интернете полно, без труда найдёте.

Поделиться:

Читайте далее: Как проверить любой интернет-магазин перед покупкой и не потерять свои деньги?