Вот мой личный опыт превращения сервера в неприступную крепость — и, главное, без жертв среди поисковиков. SEO — ценная вещь!
Когда я поднял свой интернет-магазин, я сразу понял: это как открыть элитный бутик посреди самого криминального района интернета. Белый IP повесил — и на меня посыпались все: боты, хакеры, парсеры, скрипт-киллеры. Кто‑то пытается вынести кассу, кто‑то вскрыть сейф, а кто‑то просто закидать витрину камнями, чтобы магазин захлебнулся трафиком и рухнул.
Я перепробовал кучу решений, но в итоге выстроил жёсткую многоуровневую оборону. Расскажу, как именно — без воды, по делу.

Уровень 1. Снайперы Fail2ban — бью точечно, но больно
Большинство админов лепят стандартные джейлы, которые банят всё, что шевелится. А мне нужны клиенты, а не пустой сервер. Поэтому я написал кастомные фильтры-снайперы под архитектуру именно своего магазина.
Мой скрипт читает access.log и ищет не просто «подозрительные» запросы, а конкретные паттерны взлома:
- Ломятся в админку (
/adminили что‑то подобное) — бан. - Пытаются сунуть SQL‑инъекцию в URL — бан.
- Ищут
.env,.gitили другие служебные файлы — мгновенный бан.
И самое вкусное: я добавил прогрессивное наказание. Если бот вылезает после первого бана, следующий срок растёт в геометрической прогрессии:
1 день → 2 дня → 4 дня → … → 180 дней. Поверьте, надоедает быстро.
Уровень 2. Рой дронов и умная ловушка против ботнетов
Когда хакеры поняли, что банить по одному IP — бесполезно, они запустили распределённый ботнет: сотни адресов, каждый делает по 1–2 запроса, чтобы не сработали мои пороги.
Тогда я сел и написал bash‑скрипт, который работает на уровне ядра Linux.
Он берёт последние 20 тысяч строк лога, группирует IP по подсетям (например, 154.193.x.x) и, если видит аномальную плотность трафика, банит не один IP, а всю подсеть целиком. А если атака сильно распылена — я режу целый блок /16.
И чтобы процессор не лёг от тысяч правил в iptables, я перешёл на ipset — это хеш‑таблица прямо в ядре. Проверка миллиона забаненных подсетей занимает наносекунды. Сервер даже не напрягается.
Уровень 3. Протокол «Свой-чужой» — и поисковики всегда живы
Это был мой главный страх: случайно забанить Google или Яндекс. Если это случится — сайт выпадает из поиска, и бизнесу конец.
Я придумал систему, которая работает сама.
- Создал отдельный текстовый файл
search-engines-whitelist.txt, куда вынес все известные подсети Google, Яндекса, Bing, Ahrefs и других легитимных ботов. - Мой скрипт банит в два этапа. Сначала — все подозрительные подсети. А сразу после этого запускается пост-проверка: он сканирует весь список забаненных IP и сверяет их с белым списком.
Если туда случайно залетел Яндекс — скрипт автоматически его разбанивает и пишет в лог: «⚠️ ОБНАРУЖЕН БАН ПОИСКОВИКА! Разбан».
Теперь мне вообще не нужно следить за этим вручную. Система самоконтролируется.
Уровень 4. Ядерная опция — Recidive для самых настырных
Некоторые хакеры не унимаются и прыгают между дверями: 10 минут долбят SSH, потом лезут в админку, потом пытаются подобрать пароль к БД.
Для таких я включил Recidive — это «мета‑тюрьма». Она читает не логи сайта, а лог самого Fail2ban. Если IP умудрился нарушить правила в трёх разных местах за сутки — Recidive видит рецидивиста и применяет ядерную опцию: глобальный бан по всем портам сервера на неделю. Хакер полностью отрезается от машины. Никаких лазеек.
Уровень 5. Матрёшка для phpMyAdmin — тройной контур
Базу данных я прячу не как все. У меня не просто скрытый URL, а тройной защитный круг:
- Секретная дверь — вход закрыт паролем на уровне веб‑сервера (Apache Basic Auth). Хакер даже страницу логина не увидит, пока не введёт этот пароль.
- Пулемёт — Fail2ban следит за этим паролем. Две ошибки — и бан IP на сутки.
- Сейф — внутри уже стандартный логин и пароль от MySQL, но до них ещё добраться надо.
Итог
Теперь мой сервер выглядит так:
- Ботнеты отсекаются на подступах, целыми подсетями, и почти не нагружают CPU.
- Точечные снайперы Fail2ban выкашивают всех, кто ищет уязвимости.
- Система самолечения гарантирует, что поисковики всегда на зелёном свете.
- Рецидивисты получают бан по всем фронтам.
Мой контент перестал быть лёгкой добычей. Теперь, чтобы взломать этот сервер, хакерам придётся попотеть куда сильнее, чем просто запустить готовый скрипт из интернета. А я сплю чуть спокойнее — и всё работает, и SEO на месте.
P.S. Но я всё равно продолжаю наблюдать логи сервера. Пытаюсь высмотреть паттерны хитрых ботов. И отследить ложные срабатывания, которых уже совсем нет после двух недель экспериментов.