Перейти к содержанию

Переключаем Redis-server в режим работы через socket


Рекомендуемые сообщения

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

Первое - надо настроить redis-сервер, тут всё просто, редактируем /etc/redis/redis.conf и пишем следующее:

# ставим 0 вместо стандартного 6379, после этого redis перестает слушать сетевой интерфейс. 
port 0

# раскомментариваем строки и редактируем (папка /var/run/redis/ уже существует, там живет pid файл, поэтому просто добавим туда файл сокета)
unixsocket /var/run/redis/redis.sock

#права на файл - должен быть доступен для чтения www-data или под чем вы там запускаете php.. Можно добавить этого пользователя в группу redis и поставить права 750, а я не заморачивался и поставил 777, всё равно на сервере только я. 
unixsocketperm 777

Сохраняем конфиг файл. Если сейчас перезапустить redis-server, то ничего не получится, IPS не может подключится к redis и ругается на странице настроек "Хранение данных".

Учим IPS...

Интерфейс к redis живет в system/Redis/Redis.php, там нам надо найти строчку 

if( @static::$connections[ $identifier ]->connect( $useConfig['server'], $useConfig['port'], 2 ) === FALSE )

и заменить ее на 

if( @static::$connections[ $identifier ]->connect( '/var/run/redis/redis.sock' ) === FALSE )

Сохраняем и рестартуем redis-server, всё должно заработать как раньше. На странице настроек redis в админке останется IP и порт, удалять их не надо, редактировать тоже. Сообщение о неработающем кеше появляться не должно. 

Сильные духом могут написать плагин, а я пойду дальше сражаться с ddos :)

Будут вопросы - пишите.

 

Ссылка на комментарий
Поделиться на другие сайты

Мне оно не надо, но почитать было интересно 🧐 

Ссылка на комментарий
Поделиться на другие сайты

Статью надо в базу знаний https://ipbmafia.ru/ips4docs/ 

Ссылка на комментарий
Поделиться на другие сайты

Работает уже сутки, из плюсов - в соединениях больше не висят отмирающие коннекты к 127.0.0.1, при атаках перестал отваливаться redis-server.
Из минусов - для запуска redis-cli надо указывать путь к сокету.. (ну так себе минус :) )

root@comp:~# redis-cli -s /var/run/redis/redis.sock

Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, Desti сказал:

при атаках

Одно время я замечал сильную нагрузку на процессор. Виной всему оказались атаки на get запросы. Их еще инъекциями называют.

Это когда бот в запросах подсовывает данные не того типа который ожидает скрипт.

Например если ?appid=int то он делает ?appid=string или подсовывает числа не из диапазона итп.

А разрабы  IPS  почти нигде не реализовали проверку входных данных а тупо завернули всё в try catch, который во всех языках программирования является ресурсоемким решением. И за этого процессор и закипел. Некоторые багованные запросы могут сгенерировать неимоверно большое количество eception`ов, бот по ним и долбил.

В логах системы форума погляди внимательно на адреса вызвавшие исключения.

И еще один видов атак это досрочный разрыв коннекта + инъекция. Там уже вебсервер что то типа 499 ошибки выдает.

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

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, aplayer сказал:

В логах системы форума погляди внимательно

Меня атакуют тупо на "GET / HTTP/1.1", но с нескольких сотен адресов. При этом (по непонятным причинам) засыпает redis и перестает отдавать шаблоны, форум останавливается. Никаких кривых запросов нет ни в логах nginx, ни в ошибках форума (ну кроме redis not responding). Так что ничего необычного, атака на исчерпание ресурсов. 

 

Ссылка на комментарий
Поделиться на другие сайты

Desti 

вот еще чем можно воспользоваться. Блокировка стран в nginx

 https://github.com/makhomed/nginx-geo

этот способ хорош тем что блочит страну на вебсервере. Тоесть до загрузки ядра форума. А так же не требует пересборки nginx с модулем geoip2

Если не получается зарегистрироваться из России на maxmind, можно глянуть как тут выкручиваются из ситуации. https://qna.habr.com/q/1142870

Большинство атак сразу отвалится если заблочить доступ из Китая CN а так же Тайваня Индии Бразилии и прочих стран Азии и Южной америки.

Ссылка на комментарий
Поделиться на другие сайты

6 минут назад, aplayer сказал:

Большинство атак сразу отвалится если заблочить доступ из Китая CN а так же Тайваня Индии Бразилии и прочих стран Азии и Южной америки.

Думаю мафии можно блочить весь бугор)

Ссылка на комментарий
Поделиться на другие сайты

aplayer я делаю то же самое, но не на уровне nginx, а на уровне ядра - через iptables/ipset, блокирую целые сети, с которых идут атаки. Для полноценного GeoIP надо держать огромные таблицы, это тоже не проблема для ipset, но администрирование начнет напрягать. Где найти списки - вопрос вторичный, сейчас много источников, полнота их не очень важна, основной трафик идет с крупных провайдеров. За ссылки спасибо, посмотрю. 

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

Ссылка на комментарий
Поделиться на другие сайты

Полезный ресурс для настройки GeoIP блокировок - www.ipdeny.com/ipblocks/data/countries/[код страны].zone

Код страны двухбуквенный, cn, kr, in и прочее, есть в инете как "двуxбуквенные коды стран ISO"

Полученный список можно обработать скриптом и запихать в именованный сет ipset и потом просто добавлять или удалять правило iptables

Все зоны можно получить по ссылке - www.ipdeny.com/ipblocks/data/countries/all-zones.tar.gz

 

Ссылка на комментарий
Поделиться на другие сайты

Мне кажется уже не стоит с головой погружаться в ipset`ы. Дело в том что создатели iptables прекратили поддержку этой программы и создали новую nftables. В ближайшем обозримом будущем iptables с обновлением операционных систем будет вытесняться.

Если есть желание заморочиться блокировкой на системном файерволе, то лучше смотреть в сторону nftables и писать скрипты для нее. Как я понял у nftables можно делать большие таблицы и у них будет высокая производительность как у ipset.

Ссылка на комментарий
Поделиться на другие сайты

Уже есть конвертеры правил ipset в сеты nft, так что это не очень большая проблема. Да и iptables под Debian 11 работает так же хорошо, как и раньше, так что паника преждевременна :)

Ссылка на комментарий
Поделиться на другие сайты

Почитал, поудивлялся, как люди из сервера делают танк. Пошел дальше настраивать фаервол по странам и ip на Cloudflare. Благо он там пока бесплатный. Да и защита от примитивного DDOS включается одной кнопкой.

nBkSUhL2gFMmncazPqzZvc62gYT28pj20yPFnuWR9mOBdDebBizCnTY8qdJf6ReJ58vU9meMMok3Ee2nhSR6ISeO9G1N_wjJ=EICU0k2waVBp7LvrbI1IKg.jpg

Изменено пользователем Zero108
Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, Zero108 сказал:

Да и защита от примитивного DDOS включается одной кнопкой.

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

Большинство же китайских ботов бьют по больному месту движка не создавая много запросов. Где-то я уже выше говорил. У движка хватает уязвимостей вызывающих большую нагрузку на серверное железо. Это не является DDOS атакой. И справиться с этим можно только либо своими руками. Либо у разрабов движка руки дойдут.

Ссылка на комментарий
Поделиться на другие сайты

Ой, да не нужно никаких уязвимостей, просто долбить в главную страницу, 200к ответа на каждый запрос, пусть даже из кеша, всё равно сервер начнет тупить. 

Ссылка на комментарий
Поделиться на другие сайты

Нe Cloudflare есть свой кеш. По поводу ботов также есть бесплатная опция. 1676335194_BotsSecuritya108.netIvangorshkovgmail.comsAccountCloudflare-GoogleChrome.thumb.jpg.e818b6cc9f70a0d807b67e04c0157fd5.jpg

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...