Перед тем как создать тему или задать вопрос, ознакомьтесь с данной темой, там собраны наиболее распространенные уязвимости и способы устранения. Так же не поленитесь воспользоваться поиском, вполне возможно, что ваш вопрос уже поднимался на форуме. При создании новой темы уделите внимание ее названию, оно должно кратко описывать суть вашего вопроса/проблемы. Все вновь созданные темы с названиями "Помогите", "Объясните", "Подскажите" и т.д. будут удалены, а их авторы наказаны.
berq, они считают, что dproto это какая-то обязательная часть hlds, которая всегда будет решать все их проблемы. Видимо давно не обращались на официальный форум к разработчику, который в самом деле обязан решать их проблемы.
На официальном форуме сидит "решатель", который всё рушит.
я так понял это фишка выдает инфу о сервере, а не проще тогда вообще не париться и ограничить все новые пакеты по той же схеме или я что-то недопонимаю?
я так понял это фишка выдает инфу о сервере, а не проще тогда вообще не париться и ограничить все новые пакеты по той же схеме или я что-то недопонимаю?
Данная фишка как раз и ограничивает новые пакеты инфы о сервере. Тем самым блокируя Amplification данного действия
Поблагодарили 0 раз Поблагодарили 0 раз
svgr
9.1.2015, 8:54
Сообщение
Стаж: 15 лет
Сообщений: 17
Благодарностей: 6
Полезность: 0
Цитата(berq @ 9.1.2015, 3:13)
Итого, 16777216 * 8 = 128Мбайт памяти надо на каждый запущенный hlds на машине Если у вас 20 hlds-ов, уже 2 гигабайта надо. Логичнее, наверное, такую таблицу сделать один раз на всё машину, а не плодить ее в каждом процессе? А еще, даже если все злодеи забанятся на уровне hlds-а, это никак не спасет вашу таблицу conntrack-а от засирания спуфом.
Что-то алгоритм похож на лечение насморка методом отрубания головы. И рекомендацией использовать ядерное оружие, что бы избавиться от насморка на раз, а не рубить каждому заболевшему голову. dproto уже давно превратился из мультипротокольной поддержки на стороне сервера в волшебную палочку, закрывающую дыры в решете hlds'а. Тем более, что проблема-то, по-сути, именно в hlds'е и лечить проблему hlds'а iptables'ами или роутером - это тоже не верный вариант. Единтсвенно-правильный вариант - это решение со стороны разработчика. Но на valve уповать глупо, все это понимают. И не уповают.
Совершенно не ломал голову над алгоритмом реализации защиты, но даже если пойти влоб, по предложенному Вами алгоритму, и блочить сети класса B (практика показывает, что сейчас мы блочим минимум B-сетки), а не C, то получаем красоту: 2 ^ 16 = 65 536 * 8 = 512кб памяти на каждый экземпляр hlds. Пренебрежительно малое значение. На мой взгляд, можно сделать проще: ввести ограничение на кол-во ответов сервера на запросы A2S. Лучше, в конфиг (у кого-то сервак с 2 землекопами в час не добавленый в мониторинги, а кто-то всем бустам и мониторингам руки позолотил). При нормальном поведении кол-во запросов будет менее предельного, при DDoS'е сервер тупо ответит на первые N запросов (легитимные они будут или спуфные - уже не важно), а потом будет молчать до окончания временного интервала и обнуления счетчика (например, раз в минуту). Гораздо менее ресурсоёмко, чем iptables'ом все пакеты просматривать...
Если у всех будет защита даже по второму варианту, смысл в такой амплификации утратится. Точнее, амплификации уже не будет. Наступит мир, дружба, жвачка. )
svgr, да уже при ServerInfoAnswerType = 0 амплификация уменьшается в разы. Отслеживание по подсети класса B чревато детектом игроков из одной подсети провайдера.
Поблагодарили 0 раз Поблагодарили 0 раз
Ghost_SS
9.1.2015, 9:55
Сообщение
Стаж: 15 лет
Сообщений: 50
Благодарностей: 3
Полезность: 48
У меня винда под раутером на linuxe (один под ipfire - просто и удобно, второй под cent os 6.5 - ручная настройка. ) Может давно пора изучить такую связку, гда четыре назад когда на проект стали нападать, а скудные возможности win не позволяли фильтровать пакеты, обратился к линукс и начал изучать. Чего и вам желаю. mazdan - монстрер программирования))) он может себе настраивать зашиту при помоши плагинов, а мы нет.
У меня винда под раутером на linuxe (один под ipfire - просто и удобно, второй под cent os 6.5 - ручная настройка. ) Может давно пора изучить такую связку, гда четыре назад когда на проект стали нападать, а скудные возможности win не позволяли фильтровать пакеты, обратился к линукс и начал изучать. Чего и вам желаю. mazdan - монстрер программирования))) он может себе настраивать зашиту при помоши плагинов, а мы нет.
svgr, да уже при ServerInfoAnswerType = 0 амплификация уменьшается в разы. Отслеживание по подсети класса B чревато детектом игроков из одной подсети провайдера.
Уменьшается, но по-прежнему продолжается. Выщёлкивая роутеры. Детект игроков возможен и на подсети класса C. Только они в любом случаи не будут сыпать десятки/сотни/тысячи pps с A2S... Ну, а если будут - то выпиливать их без сожаления.
С чего это вдруг какой-то там модуль какого-то там приложения должен заниматься аналитикой, вычисляя, с каких именно подсетей льется спуфнутый флуд?
Но ок, давайте предположим, что все таки должен. В адресном пространстве IPv4 2^32 адресов и 2^24 = 16777216 подсетей класса Цэ (/24) Чтобы занимацца простейшей аналитикой, нам надо на каждую подсеть завести счетчик принятых пакетов (4 байта) и время последней очистки этого счетчика (еще 4 байта) Итого, 16777216 * 8 = 128Мбайт памяти надо на каждый запущенный hlds на машине Если у вас 20 hlds-ов, уже 2 гигабайта надо. Логичнее, наверное, такую таблицу сделать один раз на всё машину, а не плодить ее в каждом процессе? А еще, даже если все злодеи забанятся на уровне hlds-а, это никак не спасет вашу таблицу conntrack-а от засирания спуфом.
Так что можете дальше уповать на то, что все ваши проблемы решатся плагином для метамода. Не решатся. Пришло время включать свою голову, ага.
ты уже весь мир хочеш забанить, мой скрипт забанил 3500 IP, это вся бот сеть тех уёбкoв, и это не 100 терабайт данных (4 bytes * 3500 ips = 14000 bytes = 14kb), 14kb * 10 servs on same machine = 140kb ram used. не сети надо банить а IP адреса которые выeбываются. баняться на 1 час, после чистится массив, и рама ешё меньше используется.
Что-то алгоритм похож на лечение насморка методом отрубания головы. И рекомендацией использовать ядерное оружие, что бы избавиться от насморка на раз, а не рубить каждому заболевшему голову.
Есть проблема - флуд со спуфом, равномерно размазанный между несколькими десятками (может сотнями) /24 подсетей. Предложите свой вариант блокирования такого флуда.
Цитата(svgr @ 9.1.2015, 10:54)
Тем более, что проблема-то, по-сути, именно в hlds'е
Какая из проблем? Их у нас две: 1) Переполняется таблицы контрака/хэшлимита/еще чего-нибудь в netfilter 2) Возможность амплификации Первая не может решаться на уровне hlds-а в принципе Вторая проблема должна решаться редизайном протокола. Любая попытка решить ее другим способом - костыль. Так что, у нас нет проблем, которые "именно в Hlds'e"
Цитата(svgr @ 9.1.2015, 10:54)
Единтсвенно-правильный вариант - это решение со стороны разработчика.
Вот это правильно! Но мы же все знаем, как господин А* решает проблемы :)
Цитата(svgr @ 9.1.2015, 10:54)
Совершенно не ломал голову над алгоритмом реализации защиты
А стоит попробовать. Вот, например, АСка, с флуда на которую всё началось: Флуд лился с (на?) 87.120.198.0/23 87.120.208.0/21 87.120.252.0/22 87.121.0.0/23 Если я еще не разучился считать, это около 4000 адресов. Если забанить 87.120.0.0/16 и 87.121.0.0/16, в бане будет 131 тысяча адресов. Вам не кажется странным, что 131к-4к = 127 тысяч адресов должны просто так сидеть в бане? Потому, что кто-то там не подумал над защитой?
Цитата(svgr @ 9.1.2015, 10:54)
На мой взгляд, можно сделать проще: ввести ограничение на кол-во ответов сервера на запросы A2S. Лучше, в конфиг (у кого-то сервак с 2 землекопами в час не добавленый в мониторинги, а кто-то всем бустам и мониторингам руки позолотил). При нормальном поведении кол-во запросов будет менее предельного, при DDoS'е сервер тупо ответит на первые N запросов (легитимные они будут или спуфные - уже не важно), а потом будет молчать до окончания временного интервала и обнуления счетчика (например, раз в минуту).
Допустим, ввели лимит 50 запросов в секунду. Теперь, если зафлудить сервак на 500запросов/сек, он 90% времени будет не виден в Favorites/Internet вкладках на клиентах. Хреновая идея, имхо
Цитата(svgr @ 9.1.2015, 10:54)
Гораздо менее ресурсоёмко, чем iptables'ом все пакеты просматривать...
Любая защита, сделанная на иптаблесе, будет менее ресурсоёмкой ее аналога, сделанного в юзерспейсе. Потому что не надо таскать пакеты между ядром и юзерспейсом.
Цитата(svgr @ 9.1.2015, 10:54)
Если у всех будет защита даже по второму варианту, смысл в такой амплификации утратится. Точнее, амплификации уже не будет. Наступит мир, дружба, жвачка. )
Любая защита от амплификации - это костыль, и этот костыль не убирает проблему амплификации полностью. Амплификация по-прежнему останется возможной, атакующему нужно просто увеличить пул hlds-ов (кстати все сурс игры и всякие там батлфилды тоже могут быть использованы), через которые делается амплификация и уменьшить нагрузку на каждый из них, чтобы не попадать под установленные лимиты. Так что увы, жвачки, дружбы и мира не будет :)
Success story о победе над ботсетью из одной машины, лол :) Вы, батенька, к своим 140 килобайтам прибавьте размер вашей распухшей таблички контрака А потом подумайте, что с ней случится, если мощность флуда увеличится раз в 5
Придумали уже хоть что-то, что бы не вредило, да плевать скольо бы оно жрала мне лично не жалко гига оперативки для сервера и 2х тоже, если надо поставлю еще, у меня раньше хлдс не ел больше 200 мегабайт, но сейчас заметил что 1н из серверов распух до 1.5 гига. И проблем как-то не чувствую.(хотя интересно было бы знать почему так) berq, ответ очень интересный, только для приятного завершения отшива всех идей, своей гениальной нету)
Придумали уже хоть что-то, что бы не вредило, да плевать скольо бы оно жрала мне лично не жалко гига оперативки для сервера и 2х тоже, если надо поставлю еще, у меня раньше хлдс не ел больше 200 мегабайт, но сейчас заметил что 1н из серверов распух до 1.5 гига. И проблем как-то не чувствую.(хотя интересно было бы знать почему так) berq, ответ очень интересный, только для приятного завершения отшива всех идей, своей гениальной нету)
Я был бы рад даже если бы придумали как снизить нагрузку на процессор раза в 2 за счет оперативной памяти, хоть пусть жрет ее раз в 5 больше. Добивать оперативку дешевле чем менять процессор на более мощный, а сейчас смена проца может сопровождаться сменой матери из-за не сходства сокетов. И кстати berq, вроде говорил про 20 хлдс на одной машине? это что за машина которая тянет 20 хлдс (разве что кластер) или ты про пустые сервера? и разве если даже она тянет 20 хлдс при игроках больше 25 на каждом(а на мой взгляд это чудо машина) то разве у такой машины была бы проблема с оперативкой?)
Я был бы рад даже если бы придумали как снизить нагрузку на процессор раза в 2 за счет оперативной памяти, хоть пусть жрет ее раз в 5 больше. Добивать оперативку дешевле чем менять процессор на более мощный, а сейчас смена проца может сопровождаться сменой матери из-за не сходства сокетов. И кстати berq, вроде говорил про 20 хлдс на одной машине? это что за машина которая тянет 20 хлдс (разве что кластер) или ты про пустые сервера? и разве если даже она тянет 20 хлдс при игроках больше 25 на каждом(а на мой взгляд это чудо машина) то разве у такой машины была бы проблема с оперативкой?)