Эксперты с Crowdsec

jeka_coder

Участники
Сообщения
34
Реакции
5
Баллы
15
6.3. Помещайте темы в соответствующий раздел.
На днях админ мне прислал скриншот из cloudflare

1743862782855.png

Частенько проскакивают дудос по L7. Мы после этого решил поставить crowdsec.
Есть такая штука как "crowdsec". Это IPS/IDS opensource беспллатный. Там есть модули для nginx, cloudflare, wordpress и т.д. Подключаешь логи и он детектит и выполняет действие (блок, капча и т.д). Поскольку у нас CLOUDFLARE, он блочил айпишники клауда =) Пришлось настраивать nginx, чтобы получать реальные ip клиента с помощью специального хедерса. Казалось бы дело сделано. Да, он находит злоумышленника, да он банит. Обрывается ssh соединение, так как мой айпи в бане из-за брутфорса, а на сам сайт зайти могу, т.к используется прокси cloudlare😂😂😂

Я такой окей, думаю. Установлю модуль cloudflare, настрою api, конфиг этот. Все настроил, выдал нужные права. Через curl работает, акки банит. А вот этот софт нет =) Пытался понять причину, по итогу забил, т.к скорее всего этот вариант пойдет тем у кого Pro/Enterprise тариф, чтобы было больше возможностей и лимит на запросы, т.к надо больше 100 запросов в минуту или сколько дается в бесплатном тарифе, не помню точно.

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

Не знаю насколько это будет эффективно при мощной атаке, надо ли сервак nginx перезагружать когда новые айпи добавляются в файл и какие тайминги выставлять для мониторинга. Надо тестить.

sqlite3 /var/lib/crowdsec/data/crowdsec.db

в crowdsec.db хранятся айпи адреса из глобального списка и с нашего сайта. Они помечены отдельным флагом - crowdsec.

CAPI - глобальный список (crowdsec api)


SELECT DISTINCT value FROM decisions WHERE origin = 'crowdsec';


Вот небольшой список айпи, который нашел crowdsec чуть меньше чем за сутки, тут всякие, кто хотел сервер использовать в качестве открытого прокси, искал админки и т.д. Вывели мы без дубликатов записи. Прежде, чем пытаться автоматизировать процесс блокировки ip через nginx, попробуем вручную заблокировать айпи.

По итогу с заблокированного айпи адреса все равно можно попасть на сайт, хотя в логах nginx прям пишет этот заблокированный айпи, что он выполняет GET запросы и все ок 200 отдает. Почему так?

И есть ли вообще смысл старые логи анализировать и блокировать ip с которых шел ddos?! Или это бессмысленно, т.к все равно поменяют пулл айпи.
 
  • Мне нравится
Реакции: nond
Тема в текущем виде непонятно о чём: то ли проблемы, то ли мысли "как можно юзать".
Если проблема, то в теме остро не хватает ни конфигов (парсеры?), ни установленных модулей (баунсеры те же).

Да, он находит злоумышленника, да он банит. Обрывается ssh соединение, так как мой айпи в бане из-за брутфорса, а на сам сайт зайти могу, т.к используется прокси cloudlare
Баунсер для ныкса установите, либо проверьте что он активировался.
1743882403039.png

Установлю модуль cloudflare, настрою api, конфиг этот.
Очень быстро упрётесь в лимиты флары, если не настроите конфиг вменяемо, о чём они говорят у себя в доке.

Пока я думаю нормальный способ этот в реал-тайм мониторить бд с заблокированными айпишниками
Зойчем? Вы ставите инструмент и игнорируете имеющееся у него API, которое позволяет получать нужную вам информацию хоть с другого сервака?

скриптом делать формат под nginx и постоянно сохранять в файл, который указан в конфигурации nginx
/
И ныкс сам начнёт давать отбивки как на картинке выше, не доводя реквест до PHP. Если интересует прям 444, то можно запилить, т.к. у модуля апишка норм.
 
Тема в текущем виде непонятно о чём: то ли проблемы, то ли мысли "как можно юзать".
Если проблема, то в теме остро не хватает ни конфигов (парсеры?), ни установленных модулей (баунсеры те же).


Баунсер для ныкса установите, либо проверьте что он активировался.
Посмотреть вложение 157881


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


Зойчем? Вы ставите инструмент и игнорируете имеющееся у него API, которое позволяет получать нужную вам информацию хоть с другого сервака?


/
И ныкс сам начнёт давать отбивки как на картинке выше, не доводя реквест до PHP. Если интересует прям 444, то можно запилить, т.к. у модуля апишка норм.
у меня айпишник не блокируется даже если через nginx конфигурацию добавляю айпишник, все равно на сайт попасть могу. Точно также и с crowdsec, не блокирует. Сижу если что за клаудом и порты открыты только для cloudflare
 
Не вчитывался в тему, но на скриншоте четко видно 950 уникальных пользователей и почти 60кк запросов.
Вам стоит ограничить через nginx количество запросов с одного ip адреса, в данном случае IDS не нужен.
 
у меня айпишник не блокируется даже если через ngрinx конфигурацию добавляю айпишник, все равно на сайт попасть могу.
Тема в текущем виде непонятно о чём: то ли проблемы, то ли мысли "как можно юзать".
Если проблема, то в теме остро не хватает ни конфигов (парсеры?), ни установленных модулей (баунсеры те же).

Не вчитывался в тему, но на скриншоте четко видно 950 уникальных пользователей и почти 60кк запросов.
Вам стоит ограничить через nginx количество запросов с одного ip адреса, в данном случае IDS не нужен.
CS буквально дефолтно на основании превышения RPS и срабатывает стандартно (но дополнительно читает весь акцес лог). Если кто-то превысил ограничение, и активно делает это и дальше, то айпишник улетает в бан, и уже баунсеры принимают меры против адреса:
  • Баунсер флары - вкидывает через апишку флары.
  • Баунсер файрвола - блокирует в iptables/nftables.
  • Баунсер ныкса - срезает запросы ещё до захода в любой location через access_by_lua_block. Чтобы не создать ещё одну точку отказа в лице апишки краудсека на сервере, перечень заблокированных кэшируется.
Помимо всего прочего, CS умеет объединять заблокированные адреса в подсети, подсети в автономки, и срезать сразу весь вредоносный буллшит. И этим он сильно выделяется на фоне того же fail2ban, который пытаются применять по сути для таких же целей.

Это всё можно реализовать и на уровне nginx, но зачем мучать жопу, если уже есть готовое решение, которым можно буквально пользоваться, произведя небольшую настройку?..
 
CS буквально дефолтно на основании превышения RPS и срабатывает стандартно (но дополнительно читает весь акцес лог). Если кто-то превысил ограничение, и активно делает это и дальше, то айпишник улетает в бан, и уже баунсеры принимают меры против адреса:
  • Баунсер флары - вкидывает через апишку флары.
  • Баунсер файрвола - блокирует в iptables/nftables.
  • Баунсер ныкса - срезает запросы ещё до захода в любой location через access_by_lua_block. Чтобы не создать ещё одну точку отказа в лице апишки краудсека на сервере, перечень заблокированных кэшируется.
Помимо всего прочего, CS умеет объединять заблокированные адреса в подсети, подсети в автономки, и срезать сразу весь вредоносный буллшит. И этим он сильно выделяется на фоне того же fail2ban, который пытаются применять по сути для таких же целей.

Это всё можно реализовать и на уровне nginx, но зачем мучать жопу, если уже есть готовое решение, которым можно буквально пользоваться, произведя небольшую настройку?..
Я не привык к IDS для https, что сейчас что 10 лет назад limit_req_zone в nginx отлично защищал от подобных стрессоров. Не требует глубокой настройки, отсутствуют ложные срабатывания при правильно выставленных лимитах и, что важно, не требует ресурсов под себя в отличии от различных ips/ids.
По этим причинам, с точки зрения новичка я бы выбрал этот простой путь и от него уже шел далее к более сложным системам. У человека появится понимание что он делает, что делает его IDS и зачем.

На моем примере, было достаточно много ddos атак и CF заканчивался и сервера уходили в black hole на сутки. Это очень редкие ситуации даже в моей тематике, 99% атак это запуск какого-нибудь goldenEye с пары vps и исчерпание лимитом php-fpm/mariadb.

Ну а сейчас основная проблема с AI, которые в поисках информации на сайте грузят сервера 24/7 без каких либо задержек, лимитов и совести)

PS,
Учту выше сказанное и изучу возможность использования этой IDS, сейчас использую модули на C для nginx.
 
Я не привык к IDS для https, что сейчас что 10 лет назад limit_req_zone в nginx отлично защищал от подобных стрессоров. Не требует глубокой настройки, отсутствуют ложные срабатывания при правильно выставленных лимитах и, что важно, не требует ресурсов под себя в отличии от различных ips/ids.
По этим причинам, с точки зрения новичка я бы выбрал этот простой путь и от него уже шел далее к более сложным системам. У человека появится понимание что он делает, что делает его IDS и зачем.

На моем примере, было достаточно много ddos атак и CF заканчивался и сервера уходили в black hole на сутки. Это очень редкие ситуации даже в моей тематике, 99% атак это запуск какого-нибудь goldenEye с пары vps и исчерпание лимитом php-fpm/mariadb.

Ну а сейчас основная проблема с AI, которые в поисках информации на сайте грузят сервера 24/7 без каких либо задержек, лимитов и совести)

PS,
Учту выше сказанное и изучу возможность использования этой IDS, сейчас использую модули на C для nginx.
Говорят что если канал забивают, то уже ничего не поможет. Дудосят ж не школьники нас.
 
jeka_coder, а вам канал забивают-то?)
Я типа вам могу такие же красивые картинки покидать:
1743935606817.png
Причём заметьте: вы скинули картинку со статистикой ЗА СУТКИ, где всего лишь жалкие 200Гб ушло из кэша флары и 150Гб не из кэша (посчитайте кст на досуге "сколько нужно ширины канала, чтобы отдать столько за 1 день"), а я вам за 1 час с 643Гб из кэша и ~30Гб с сервера.
И при этом в моём заббиксе красовался незагруженный до упора процессор, потому что всё срезается Краудсеком и его баунсером.

Зы: скриншот из заббикса чуть позже, снятый и сохранившийся каким-то чудом до сих пор. Инфа за конкретно тот час, увы, не сохранилась: прилетело почти 50к рпс, и у сервера оставался небольшой запас по ресурсам:
1743935850200.png
Это, если что, не-серверная, самая обычная десктопная платформа:
1743935942508.png
 
Последнее редактирование:
jeka_coder, а вам канал забивают-то?)
Я типа вам могу такие же красивые картинки покидать:
Посмотреть вложение 157884
Причём заметьте: вы скинули картинку со статистикой ЗА СУТКИ, где всего лишь жалкие 200Гб ушло из кэша флары и 150Гб не из кэша (посчитайте кст на досуге "сколько нужно ширины канала, чтобы отдать столько за 1 день"), а я вам за 1 час с 643Гб из кэша и ~30Гб с сервера.
И при этом в моём заббиксе красовался незагруженный до упора процессор, потому что всё срезается Краудсеком и его баунсером.

Зы: скриншот из заббикса чуть позже, снятый и сохранившийся каким-то чудом до сих пор. Инфа за конкретно тот час, увы, не сохранилась: прилетело почти 50к рпс, и у сервера оставался небольшой запас по ресурсам:
Посмотреть вложение 157885
Это, если что, не-серверная, самая обычная десктопная платформа:
Посмотреть вложение 157886
user www-data; worker_processes auto; pid /run/nginx.pid; error_log /var/log/nginx/error.log; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; ## # Gzip Settings ## gzip on; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ## # Virtual Host Configs ## limit_req_zone $binary_remote_addr zone=req_limit:10m rate=5r/s; limit_conn_zone $binary_remote_addr zone=addr:10m; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*;

у меня вот в nginx.conf вот так настроены лимиты. Что мне может помочь еще? почему тебя так мало с сервера отдает гб
}
 
Говорят что если канал забивают, то уже ничего не поможет. Дудосят ж не школьники нас.

Они не знают IP конечного сервера, и не знают что флудить. Не первый день живем)
+ в Вашем случае это обычный стрессер.
 
Последнее редактирование:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу