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