nf_conntrack: table full, dropping packet

Cent OS, Scientific Linux

Модератор: Модераторы разделов

spool
Сообщения: 126
ОС: CentOS 6.6

nf_conntrack: table full, dropping packet

Сообщение spool »

Приветствую. Создаю новую тему по совету дока.
На сервер идет атака пакетами вида
Spoiler

Код: Выделить всё

134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 321
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 333
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 337
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 352
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 337
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 337
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 337
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 337
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 352
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 337
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 337
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 367
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 352
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 337
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 337
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 352
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 333
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 50
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 50
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 78
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 78
    134-255-136-60.k-telecom.org.27005 > myserver.27001: [no cksum] UDP, length 92



В это время в /var/log/messages начинают появляться сообщения

Код: Выделить всё

nf_conntrack: table full, dropping packet


Дамп пакета сделать можно, но толку это не даст, т.к. такие же пакеты шлют и нормальные пользователи, лишь с тем отличием, что у этих самых пользователей этот пакет имеет чексумму. Атака идет с разных IP и пакеты, как вы можете заметить, имеют совершенно разный размер. Каким образом можно отклонять пакеты без чексуммы или с плохой чексуммой? Спасибо.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: nf_conntrack: table full, dropping packet

Сообщение drBatty »

spool
Что значит 'имеют чексумму'? И почему этот критерий не подходит для фильтрации?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
spool
Сообщения: 126
ОС: CentOS 6.6

Re: nf_conntrack: table full, dropping packet

Сообщение spool »

drBatty
Хороший пакет

Код: Выделить всё

xxx.xxx.xxx.xxx.27005 > myserver.27050: [udp sum ok] UDP, length 43


Плохой пакет

Код: Выделить всё

87.120.10.45.56650 > myserver.27090: [no cksum] UDP, length 9


Пока временно решил проблему блокировкой двух наиболее активных подсетей, но не надолго этого хватит, полагаю.

drBatty писал(а):
05.01.2015 17:42
И почему этот критерий не подходит для фильтрации?

О каком конкретно критерии речь?

upd: знатно шуруют

Код: Выделить всё

 642K   33M DROP       udp  --  *      *       87.120.0.0/16        0.0.0.0/0
 3820  199K DROP       udp  --  *      *       87.121.0.0/16        0.0.0.0/0
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: nf_conntrack: table full, dropping packet

Сообщение drBatty »

Сделайте дамп пакетов, я не помню, как они там устроены внутри.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
spool
Сообщения: 126
ОС: CentOS 6.6

Re: nf_conntrack: table full, dropping packet

Сообщение spool »

drBatty

Код: Выделить всё

16:57:59.736225 IP 87.120.213.109.40091 > myserver.27093: UDP, length 9
        0x0000:  4500 0034 68fc 0000 fa11 59d3 5778 d56d  E..4h.....Y.Wx.m
        0x0010:  5bd3 7530 9c9b 69d5 0011 0000 ffff ffff  [.u0..i.........
        0x0020:  5453 6f75 7263 6520 456e 6769 6e65 2051  TSource.Engine.Q
        0x0030:  7565 7279                                uery


Но там 3 вида этих пакетов. И, как я уже писал в предыдущей своей теме, обычные пользователи также эти пакеты шлют лишь с тем отличием, что у них [udp sum ok]
Спасибо сказали:
spool
Сообщения: 126
ОС: CentOS 6.6

Re: nf_conntrack: table full, dropping packet

Сообщение spool »

Если быть точнее, но входящий пакет идет без чексуммы, а исходящий - с плохой чексуммой. Собственно, необходимо как-то фильтровать именно no cksum.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21258
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: nf_conntrack: table full, dropping packet

Сообщение Bizdelnick »

А Вы уверены, что это именно атака? Что на сервере крутится?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
spool
Сообщения: 126
ОС: CentOS 6.6

Re: nf_conntrack: table full, dropping packet

Сообщение spool »

Bizdelnick
Игровые сервера крутятся. То, что это атака - инфа 100%, т.к. на тематических форумах люди говорят о таких же проблемах, но решения пока нет. Вот я и обратился сюда.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: nf_conntrack: table full, dropping packet

Сообщение drBatty »

spool писал(а):
05.01.2015 18:01
drBatty

Код: Выделить всё

16:57:59.736225 IP 87.120.213.109.40091 > myserver.27093: UDP, length 9
        0x0000:  4500 0034 68fc 0000 fa11 59d3 5778 d56d  E..4h.....Y.Wx.m
        0x0010:  5bd3 7530 9c9b 69d5 0011 0000 ffff ffff  [.u0..i.........
        0x0020:  5453 6f75 7263 6520 456e 6769 6e65 2051  TSource.Engine.Q
        0x0030:  7565 7279                                uery


Но там 3 вида этих пакетов. И, как я уже писал в предыдущей своей теме, обычные пользователи также эти пакеты шлют лишь с тем отличием, что у них [udp sum ok]

Ну тут только разве что свой модуль к iptables писать, так просто это не распарсить наверное.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
spool
Сообщения: 126
ОС: CentOS 6.6

Re: nf_conntrack: table full, dropping packet

Сообщение spool »

drBatty
А если, допустим, к этому делу приспособить fail2ban, то норм будет, если в цепочке iptables будет под 1к правил?

udp: только вот в случае с fail2ban нужно будет еще куда-то логировать ip, которые шлют пакеты без чексуммы, а в связи с этим размер лога может быть неимоверным.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: nf_conntrack: table full, dropping packet

Сообщение drBatty »

spool
Можно логгировать прямо в sed, которая и будет добавлять правила.

1к правил имхо немного.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
spool
Сообщения: 126
ОС: CentOS 6.6

Re: nf_conntrack: table full, dropping packet

Сообщение spool »

drBatty
Не покажете, как сие можно реализовать? :) Или это трудоемко?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: nf_conntrack: table full, dropping packet

Сообщение drBatty »

spool
Не слишком. А бывает, что хороший юзер плохой пакет кидает?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
oper777
Сообщения: 411
ОС: gentoo

Re: nf_conntrack: table full, dropping packet

Сообщение oper777 »

При необходимости использовать много правил для iptables можно воспользоваться ipset.

Примерно так:

Создали цепочку banned

Код: Выделить всё

ipset create banned hash:ip family inet hashsize 1024 maxelem 65536


Добавили правило в iptables:

Код: Выделить всё

iptables -t raw -I PREROUTING -m set --match-set banned src -j DROP

(Дропать лучше в raw, чтобы не забивать голову коннтраку).

Когда вычислили тем или иным способом вредный ip-адрес, добавляем командой:

Код: Выделить всё

ipset -exist add banned X.X.X.X



Если iptables не умеет банить по чексумме, наверняка это умеют suricata или snort.

UPD упоминания в сети о проверки чексум сурикатой есть, suricata более рекомендованный способ, чем различные костыли.
В инете все примеры с действием ALERT, а вы поменяйте на DROP
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21258
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: nf_conntrack: table full, dropping packet

Сообщение Bizdelnick »

oper777 писал(а):
06.01.2015 11:11
suricata или snort.

Каким боком они тут?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21258
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: nf_conntrack: table full, dropping packet

Сообщение Bizdelnick »

Вообще у меня есть большие сомнения на предмет корректности различения лигитимного трафика и DDoS по наличию чексуммы. Чтобы использовать специально оформленные UDP-пакеты для атаки, нужно большое число порутанных машин. Проще слать мусор через netcat, для этого рут не нужен. Но в таком случае чексумму формирует сам сетевой драйвер независимо от злоумышленника.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
oper777
Сообщения: 411
ОС: gentoo

Re: nf_conntrack: table full, dropping packet

Сообщение oper777 »

Bizdelnick писал(а):
06.01.2015 11:13
oper777 писал(а):
06.01.2015 11:11
suricata или snort.

Каким боком они тут?


Не понял вопроса. Каким боком в теме про предотвращению атак упоминаются системы предотвращения атак?.. Ну даже не знаю...
Спасибо сказали:
Аватара пользователя
oper777
Сообщения: 411
ОС: gentoo

Re: nf_conntrack: table full, dropping packet

Сообщение oper777 »

Bizdelnick писал(а):
06.01.2015 11:24
Вообще у меня есть большие сомнения на предмет корректности различения лигитимного трафика и DDoS по наличию чексуммы. Чтобы использовать специально оформленные UDP-пакеты для атаки, нужно большое число порутанных машин. Проще слать мусор через netcat, для этого рут не нужен. Но в таком случае чексумму формирует сам сетевой драйвер независимо от злоумышленника.



Согласен на счет критерия отбора по наличию/отсутствию чексуммы. Злоумышленнику ничего не стоит подстроиться по новые правила игры, добавить чексумму и тогда все костыли будут беспомощны. Банить по src-ip тоже не вариант, это же UDP, тут SCR может быть любой. Вообще, тема защиты UDP-сервисов от DDoS-атак обширна.

Или вот, отходя от конкретно UDP. Например, атака флудом. Как не изголяйся, а если у вас тариф на 1 гигабит, то даже если на своей стороне вы будете дропать этот гигабит, канал всё равно будет забит.



Но если вернуться к теме "здесь и сейчас", то можно заблокировать трафик с кривыми чексуммами через suricata.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21258
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: nf_conntrack: table full, dropping packet

Сообщение Bizdelnick »

oper777 писал(а):
06.01.2015 11:42
Каким боком в теме про предотвращению атак упоминаются системы предотвращения атак?

В теме о борьбе с DDoS упоминиются системы предотвращения вторжения.
Если ложится netfilter, то они и подавно лягут.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
oper777
Сообщения: 411
ОС: gentoo

Re: nf_conntrack: table full, dropping packet

Сообщение oper777 »

Bizdelnick писал(а):
06.01.2015 11:56
oper777 писал(а):
06.01.2015 11:42
Каким боком в теме про предотвращению атак упоминаются системы предотвращения атак?

В теме о борьбе с DDoS упоминиются системы предотвращения вторжения.


У "вторжения" и "DDoS" используются какие-то принципиально разные пакеты?

Если ложится netfilter, то они и подавно лягут.


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



Во это всё, опять же, только до того момента, пока злоумышлиник не постарается сделать свои пакеты более похожими на валидные.
Спасибо сказали:
spool
Сообщения: 126
ОС: CentOS 6.6

Re: nf_conntrack: table full, dropping packet

Сообщение spool »

drBatty писал(а):
06.01.2015 02:31
spool
Не слишком. А бывает, что хороший юзер плохой пакет кидает?

Быть может бывает, но это скорее исключение.

Bizdelnick писал(а):
06.01.2015 11:24
Вообще у меня есть большие сомнения на предмет корректности различения лигитимного трафика и DDoS по наличию чексуммы. Чтобы использовать специально оформленные UDP-пакеты для атаки, нужно большое число порутанных машин. Проще слать мусор через netcat, для этого рут не нужен. Но в таком случае чексумму формирует сам сетевой драйвер независимо от злоумышленника.

Там не нужны порутаные тачки. Такое большое кол-во IP достигается спуфингом.

oper777 писал(а):
06.01.2015 11:51
Злоумышленнику ничего не стоит подстроиться по новые правила игры, добавить чексумму и тогда все костыли будут беспомощны.

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


Почитал о сурикате в инете - я не осилю -_-
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21258
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: nf_conntrack: table full, dropping packet

Сообщение Bizdelnick »

spool писал(а):
06.01.2015 12:34
Там не нужны порутаные тачки. Такое большое кол-во IP достигается спуфингом.

Пусть спуфингом. Тем более атакующий не формирует пакет самостоятельно и не способен влиять на наличие/отсутствие чексуммы. Есть она или нет - как повезёт. Ищите другие признаки для фильтрации: размер пакета, их число и т. п.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
spool
Сообщения: 126
ОС: CentOS 6.6

Re: nf_conntrack: table full, dropping packet

Сообщение spool »

Bizdelnick
Да, но допустим, что плохие пакеты бывают с чексуммой и без чексуммы. И если зафильтровать хотя бы пакеты без чексуммы, то их уже будет меньше.
Но на деле же там в данный момент точно идут только БЕЗ чексуммы.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: nf_conntrack: table full, dropping packet

Сообщение drBatty »

Насколько я знаю, там в пакетах своя чексумма, этого игрового сервера. И 'нет чексуммы' тоже пишет игровой сервер.

И ещё: в данном случае у злоумышленника очень мало ресурсов, и его будет достаточно заблокировать на уровне netfilter'а. Главное, чтобы его пакеты не дошли до игрового сервера. Имхо специализированный костыль тут как нельзя кстати.

Заблокировать пакеты без чексуммы вряд-ли получится.
Проще заблокировать ip, если с него за минуту приехало десять пакетов без чексуммы. Т.е. нужно парсить лог, и если с одного ip приехало десять кривых пакетов, то этот ip нужно заблокировать.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
spool
Сообщения: 126
ОС: CentOS 6.6

Re: nf_conntrack: table full, dropping packet

Сообщение spool »

drBatty
Да в том и дело, что игровой сервер принимает эти пакеты за легитимные и ничего не пишет. Суть в том, что злоумышленник посылает 1 пакет с запросом о статусе сервера и подставным src ip, а игровой сервер отправляет на этот подставной ip 3 пакета с информацией о сервере. То есть, по сути, производят ддос атаку на подставной ip за счет моего сервера. А я не один такой. Да и злоумышленнику не нужно иметь множество ресурсов, ведь 1 пакет не так много весит, чтобы слать его по n раз в секунду на сотни-тысячи дедиков.

drBatty писал(а):
06.01.2015 15:32
Проще заблокировать ip, если с него за минуту приехало десять пакетов без чексуммы. Т.е. нужно парсить лог, и если с одного ip приехало десять кривых пакетов, то этот ip нужно заблокировать.

А это как сделать?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: nf_conntrack: table full, dropping packet

Сообщение drBatty »

spool
Кто же у вас пишет, что нет чексуммы?

Как сделать? Написать небольшой скрипт на любом ЯП, хоть на баше.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21258
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: nf_conntrack: table full, dropping packet

Сообщение Bizdelnick »

spool писал(а):
06.01.2015 16:43
Суть в том, что злоумышленник посылает 1 пакет с запросом о статусе сервера и подставным src ip, а игровой сервер отправляет на этот подставной ip 3 пакета с информацией о сервере.

Если так, то это нехилая уязвимость в сервере.
Неужели в его настройках нельзя хотя бы выставить лимит на такие запросы с одного адреса?

spool писал(а):
06.01.2015 16:43
А это как сделать?

Как Вы изначально и писали, с помощью fail2ban.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
spool
Сообщения: 126
ОС: CentOS 6.6

Re: nf_conntrack: table full, dropping packet

Сообщение spool »

drBatty писал(а):
06.01.2015 16:51
Кто же у вас пишет, что нет чексуммы?

tcpdump -vvv

Bizdelnick писал(а):
06.01.2015 16:52
Как Вы изначально и писали, с помощью fail2ban.

Но ведь если логировать все приходящие пакеты, пусть даже только без чексуммы, то файл лога будет очень большого размера. Или эту проблему можно как-то решить?

Bizdelnick писал(а):
06.01.2015 16:52
Неужели в его настройках нельзя хотя бы выставить лимит на такие запросы с одного адреса?

Средствами игрового сервера никак.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21258
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: nf_conntrack: table full, dropping packet

Сообщение Bizdelnick »

spool писал(а):
06.01.2015 17:19
Но ведь если логировать все приходящие пакеты, пусть даже только без чексуммы, то файл лога будет очень большого размера. Или эту проблему можно как-то решить?

logrotate
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: nf_conntrack: table full, dropping packet

Сообщение drBatty »

Bizdelnick
Этот сервер полное РЕШЕТО.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: