- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Читал тут как то тему где жаловались на какой то не понятный ддос, тупо грузят сервер http запросами с разных IP.
Меня так же эта хрень коснулась примерно года 2 назад.
По первости было плевать, потому как сервера выдерживали и все было отлично, к слову говоря сайтик у меня работает на 3х серверах.
1. Дохленькое облако под сам сайт + api для него
2. База данных
3. Файловый сервер
Из всего этого добра самое слабое место это база данных, при кучи запросов идет огромное потребление памяти и в итоге либо база грохается, либо сервер с базой зависает, ну и как следствие недоступность сайта от 2-10 минут.
Все что ниже напишу, это лишь мой личный опыт, при чем я далеко не профи в этом деле и тупо собирал информацию по крупицам и эксперементировал.
С одной стороны можно накинуть оперетивнки и процессор помощьнее взять, но это просто жесть как дорого, а с учетом того какие сегодня доходы приносит тот же РСЯ, так и в убыток придется работать.
История развивалась плавно и постепенно...
Началось все с того что моя база MongoDB начала грохаться, были мысли о том что идет какая то утечка памяти, на форумах из всех утюгов орали что у меня с софтом проблемы, угу.... Все оказалось намного проще, какой то китаеза начал заваливать сайт запросами, долбил он с передышками, 3-4 раза за сутки и так продолжалось очень долго.
Так как у меня сервер API работает под нодой, а именно логирование ведет pm2, было очень просто увидеть эти всплески спамного трафика и их IP.
Когда я впервые блокнул IP с которого шли запросы, спустя пару дней начали досить с разных IP, но с одной и той же подсетью. Блокнув подсеть, начали ддосить с других подсетей, при чем все с Китая, ну а когда забанил Китай, начали долбить с Сингапура, блок Сингапура как вы думаете к чему привел?
Правильно, начали долбить со вмего мира...
Моя аудитория на сайте это чисто русские, но так же и из за бугра в сутки порядка 1к заходит, нормальные ребята и поведенческие у них добротные, глупо банить их всех.
Решил настроить лимитку в nginx, чтобы переизбыток трафика бросать в ожидание, но есть проблемы, во время ддоса это конечно будет работать, только вот в лимитку будут попадать все без исключения, включая и ботов Яндекса и Гугла, поэтому самое простое решение что мне пришло в голову:
1. Настроить limit_req_zone в nginx
2. В nginx чекать "правильных/нужных" ботов
3. В nginx смотреть какой язык стоит в браузере пользователя, и сделать так чтобы limit_req_zone срабатывал только для указанных языков
4. Банить c помощью fail2ban весь этот шлак который подпадает под лимитку
К слову говоря на постояннку заносить все спамные IP я не стал, так как только за 1 сутки в последние дни fail2ban напушил в nftables более миллиона айпишников. Все конечно работало хорошо, но тупо память поджирала и постепенно расход памяти рос.
Данные по /etc/sysctl.conf
По fail2ban, создаем /etc/fail2ban/jail.local
Fail2ban будет смотреть в файлы логив nginx на предмет срабатывания лимита и банить на 30 секунд
Почему
Потому как при первом же сигнале нужно банить ip, ну и потому что дальше мы уже в nginx будет лимитку настраивать должным образом. Получает так что забугорный пользователь во время ддоса заходит на сайте, сайт делает 1 запрос в API, банится, а последующие 3-4 запроса попросту отваливаются, тем самым сервер базы данных задышал.
В /etc/nginx/nginx.conf в секцию http добавляем map который будет проверять правильный ли бот заходит на сайт
Переменная $is_search_bot будет содержать 1 если это поисковой бот и его ограничивать не нужно, это нам понадобится в следующем мапе
$locale_bad_country - по умолчанию пропускает всех, но если это не бот и если язык в браузере zh или en, явно не русский и его будем банить в случае когда срабатывает $limit_req_zone, т.е. в то время когда нас ддосят.
Создаем файл /etc/nginx/conf.d/limit.conf
О limit_req_zone понравилась статья _https://blog.rnds.pro/052-nginx-rate-limiting
Почитайте обязательно, не все так просто как кажется и нужно будет поиграться с цифрами в случае чего.
В самой секции location добавляем следующее
Собственно таким вот методом избавился от этого ддоса, как только на той стороне поняли что весь трафик идет в труху и банится, тут же перестали.
Да, в то время когда идет ддос на сервер пользователи из за бугра так же будет банится на 30 секунд, все будут подпаать под раздачу, а вот основная ЦА будет пользоваться сайтом без каких либо задержек и банов.
Fail2ban будет смотреть в файлы логив nginx на предмет срабатывания лимита и банить на 30 секунд
30 секунд 🤣
Тебе надо делать если 30 запросов в секунду то тогда включать и банился IP на более высокое время чем 30 сек. 😃
У меня сделано похожее, только сайт если много запросов в секунду идёт - защиту cloudflare включает автоматически.
А способ в статье, только от парсеров спасёт и от мамкиных хакеров. Дудосер грамотный по итогу всё равно канал заполнит и забьёт или отказами положит.
Но как индикатор надвигающейся проблемы думаю можно использовать. 😁
сервера выдерживали и все было отлично, к слову говоря сайтик у меня работает на 3х серверах.
30 секунд 🤣
Тебе надо делать если 30 запросов в секунду то тогда включать и банился IP на более высокое время чем 30 сек. 😃
У меня сделано похожее, только сайт если много запросов в секунду идёт - защиту cloudflare включает автоматически.
А способ в статье, только от парсеров спасёт и от мамкиных хакеров. Дудосер грамотный по итогу всё равно канал заполнит и забьёт или отказами положит.
Но как индикатор надвигающейся проблемы думаю можно использовать. 😁
Да 30 секунд, это чисто часный случай, и 30 секукнд мне по факту даже много. Как писал ранее одно обращение на страницу сайта = 4-5 запросов в базу, мне по факту можно даже и на 5 сек блокнуть и будет все работать. К тому же каждое новое обращение было с нового IP, за двое суток ниразу IP не повторялся, смысл хранить шлак на сервере...
Грамотный дудосер херней не занимается, если платят то ддосит, платить за топку конкурента в не комменрции такое себе удовольствие, поддосит день другой и угомонится =)
Грамотный дудосер херней не занимается, если платят то ддосит, платить за топку конкурента в не комменрции такое себе удовольствие, поддосит день другой и угомонится =)
Дидоссеры кладут целые дата-центры по заказу, твои мелкие сайты им точно не интересны.
Дидоссеры кладут целые дата-центры по заказу, твои мелкие сайты им точно не интересны.
Ну может кто то ходит на утку с гранатаметом =)
Ну может кто то ходит на утку с гранатаметом =)
Именно в этом больше интерес ( с миллиона сайтов получить траф или другой эффект), а не положить дата центр на заказ. Т.е желающих получить халяву миллионы, и только один идиот на дата центр
Именно в этом больше интерес ( с миллиона сайтов получить траф или другой эффект), а не положить дата центр на заказ.
Для этого не обязательно бомбить серверы обычных пользователей миллионами запросов в минуту. Достаточно долбить миллионы серверов по всему миру в спокойном режиме, не привлекая внимания санитаров. Когда заходишь через root, то сразу же видно, сколько раз пытались зайти на твой сервер методом подбора пароля.