Desti Опубликовано 8 июня, 2022 Поделиться Опубликовано 8 июня, 2022 Сокеты - это стильно, модно, молодежно, быстрее, чем 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 Будут вопросы - пишите. cyr4x, Zero108, aLEX49566 и 4 других 7 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
aLEX49566 Опубликовано 9 июня, 2022 Поделиться Опубликовано 9 июня, 2022 Мне оно не надо, но почитать было интересно 🧐 Desti 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
HooLIGUN Опубликовано 9 июня, 2022 Поделиться Опубликовано 9 июня, 2022 Статью надо в базу знаний https://ipbmafia.ru/ips4docs/ Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 9 июня, 2022 Автор Поделиться Опубликовано 9 июня, 2022 Работает уже сутки, из плюсов - в соединениях больше не висят отмирающие коннекты к 127.0.0.1, при атаках перестал отваливаться redis-server. Из минусов - для запуска redis-cli надо указывать путь к сокету.. (ну так себе минус ) root@comp:~# redis-cli -s /var/run/redis/redis.sock Zero108 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
aplayer Опубликовано 9 июня, 2022 Поделиться Опубликовано 9 июня, 2022 6 часов назад, Desti сказал: при атаках Одно время я замечал сильную нагрузку на процессор. Виной всему оказались атаки на get запросы. Их еще инъекциями называют. Это когда бот в запросах подсовывает данные не того типа который ожидает скрипт. Например если ?appid=int то он делает ?appid=string или подсовывает числа не из диапазона итп. А разрабы IPS почти нигде не реализовали проверку входных данных а тупо завернули всё в try catch, который во всех языках программирования является ресурсоемким решением. И за этого процессор и закипел. Некоторые багованные запросы могут сгенерировать неимоверно большое количество eception`ов, бот по ним и долбил. В логах системы форума погляди внимательно на адреса вызвавшие исключения. И еще один видов атак это досрочный разрыв коннекта + инъекция. Там уже вебсервер что то типа 499 ошибки выдает. Причем во всех случаях цель ботов была не sql инъекция, а именно замедление работы сервера. sql запросы туда не пихали. Zero108 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 9 июня, 2022 Автор Поделиться Опубликовано 9 июня, 2022 1 час назад, aplayer сказал: В логах системы форума погляди внимательно Меня атакуют тупо на "GET / HTTP/1.1", но с нескольких сотен адресов. При этом (по непонятным причинам) засыпает redis и перестает отдавать шаблоны, форум останавливается. Никаких кривых запросов нет ни в логах nginx, ни в ошибках форума (ну кроме redis not responding). Так что ничего необычного, атака на исчерпание ресурсов. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
aplayer Опубликовано 9 июня, 2022 Поделиться Опубликовано 9 июня, 2022 Desti вот еще чем можно воспользоваться. Блокировка стран в nginx https://github.com/makhomed/nginx-geo этот способ хорош тем что блочит страну на вебсервере. Тоесть до загрузки ядра форума. А так же не требует пересборки nginx с модулем geoip2 Если не получается зарегистрироваться из России на maxmind, можно глянуть как тут выкручиваются из ситуации. https://qna.habr.com/q/1142870 Большинство атак сразу отвалится если заблочить доступ из Китая CN а так же Тайваня Индии Бразилии и прочих стран Азии и Южной америки. Zero108 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
aLEX49566 Опубликовано 9 июня, 2022 Поделиться Опубликовано 9 июня, 2022 6 минут назад, aplayer сказал: Большинство атак сразу отвалится если заблочить доступ из Китая CN а так же Тайваня Индии Бразилии и прочих стран Азии и Южной америки. Думаю мафии можно блочить весь бугор) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 9 июня, 2022 Автор Поделиться Опубликовано 9 июня, 2022 aplayer я делаю то же самое, но не на уровне nginx, а на уровне ядра - через iptables/ipset, блокирую целые сети, с которых идут атаки. Для полноценного GeoIP надо держать огромные таблицы, это тоже не проблема для ipset, но администрирование начнет напрягать. Где найти списки - вопрос вторичный, сейчас много источников, полнота их не очень важна, основной трафик идет с крупных провайдеров. За ссылки спасибо, посмотрю. В общем не очень важно, где давить атаку, проблема в том, что канал эти запросы все равно забивают, а это может не понравится провайдеру и начнутся проблемы. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 10 июня, 2022 Автор Поделиться Опубликовано 10 июня, 2022 Полезный ресурс для настройки 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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
aplayer Опубликовано 10 июня, 2022 Поделиться Опубликовано 10 июня, 2022 Мне кажется уже не стоит с головой погружаться в ipset`ы. Дело в том что создатели iptables прекратили поддержку этой программы и создали новую nftables. В ближайшем обозримом будущем iptables с обновлением операционных систем будет вытесняться. Если есть желание заморочиться блокировкой на системном файерволе, то лучше смотреть в сторону nftables и писать скрипты для нее. Как я понял у nftables можно делать большие таблицы и у них будет высокая производительность как у ipset. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 10 июня, 2022 Автор Поделиться Опубликовано 10 июня, 2022 Уже есть конвертеры правил ipset в сеты nft, так что это не очень большая проблема. Да и iptables под Debian 11 работает так же хорошо, как и раньше, так что паника преждевременна avangcom 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zero108 Опубликовано 10 июня, 2022 Поделиться Опубликовано 10 июня, 2022 (изменено) Почитал, поудивлялся, как люди из сервера делают танк. Пошел дальше настраивать фаервол по странам и ip на Cloudflare. Благо он там пока бесплатный. Да и защита от примитивного DDOS включается одной кнопкой. Изменено 10 июня, 2022 пользователем Zero108 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
aplayer Опубликовано 10 июня, 2022 Поделиться Опубликовано 10 июня, 2022 3 часа назад, Zero108 сказал: Да и защита от примитивного DDOS включается одной кнопкой. Насколько я знаю DDOS защиты начинают работать когда трафик на сервер начинает исчисляться гигабайтами множественных запросов за короткие промежутки времени. Это явление довольно редкое. Большинство же китайских ботов бьют по больному месту движка не создавая много запросов. Где-то я уже выше говорил. У движка хватает уязвимостей вызывающих большую нагрузку на серверное железо. Это не является DDOS атакой. И справиться с этим можно только либо своими руками. Либо у разрабов движка руки дойдут. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 10 июня, 2022 Автор Поделиться Опубликовано 10 июня, 2022 Ой, да не нужно никаких уязвимостей, просто долбить в главную страницу, 200к ответа на каждый запрос, пусть даже из кеша, всё равно сервер начнет тупить. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zero108 Опубликовано 11 июня, 2022 Поделиться Опубликовано 11 июня, 2022 Нe Cloudflare есть свой кеш. По поводу ботов также есть бесплатная опция. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.