nf_conntrack: table full, dropping packet

Cent OS, Scientific Linux

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

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

Re: nf_conntrack: table full, dropping packet

Сообщение oper777 »

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

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

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

Как Вы изначально и писали, с помощью fail2ban.



Жесть. Вы решили, что суриката "не вывезет" этого трафика, а питоновский скрипт (коим и является fail2ban) значит справится? А еще выше предлагали sed, bash и т.д.

2spool
Чексумма в UDP пакетах находится на конкретном месте. Не хотите suricata с её готовыми шаблонами -- сделайте через iptables, для этого есть модули string, u32, bpf.

А вообще suricata очень легко готовится.

P.S. кстати, по поводу неверной чексуммы в исходящих UPD пакетах -- это нормально. Выяснил, когда разбирался с крафтингом пакетов. Чексумму считает сам драйвер сетевой карты, нужно лишь в хидере указать специальное magic word, типа, "чексумма не посчитана, посчитай, пожалуйста". А libpcap, на которой работает tcpdump, работает в userspace и не "видит", какими пакеты выходят из сетевой карты на самом деле.
Хороший вопрос, чтоб отсеять непонравившегося кандидата на собеседовании -- "в данный момент с сервера уходит поток в 2 гигабита, но tcpdump не видит ни одного пакета. Что это за трафик и почему его не видит tcpdump?". Пока никто сходу не ответил.
Спасибо сказали:
spool
Сообщения: 126
ОС: CentOS 6.6

Re: nf_conntrack: table full, dropping packet

Сообщение spool »

oper777 писал(а):
06.01.2015 18:30
сделайте через iptables, для этого есть модули string, u32, bpf.

Дайте, пожалуйста, хоть намек, как именно это сделать.

Bizdelnick писал(а):
06.01.2015 17:41
logrotate

Как я понял, там минимальный период ротации - час. Там за час размер того файла перевалит за десяток ГБ
Спасибо сказали:
Аватара пользователя
oper777
Сообщения: 411
ОС: gentoo

Re: nf_conntrack: table full, dropping packet

Сообщение oper777 »

spool писал(а):
06.01.2015 18:45
oper777 писал(а):
06.01.2015 18:30
сделайте через iptables, для этого есть модули string, u32, bpf.

Дайте, пожалуйста, хоть намек, как именно это сделать.

Bizdelnick писал(а):
06.01.2015 17:41
logrotate

Как я понял, там минимальный период ротации - час. Там за час размер того файла перевалит за десяток ГБ

+ ненужная нагрузка на файловую систему



По идее команда

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

tcpdump -nni eth0 udp[6:2]=0x0


должна вывести только пакеты с нулями вместо чексуммы

Аналогично

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

tcpdump -nni eth0 ip[26:2]=0x0


Т.е. в udp-заголовке udp-чексумма находится по смещению 6(десятичное) и в ip-заголовке по смещению 26 (десятичное). (Банально открыть пакет в wireshark).

Значит правило для u32 будет примерно такое:

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

iptables -I INPUT -p udp --dport YOUR_PORT_NUMBER -m u32 --u32 "24&0xFFFF=0x0000" -j LOG


Если в логи стали попадать те самые пакеты, значит меняем -j LOG на -j DROP
Спасибо сказали:
spool
Сообщения: 126
ОС: CentOS 6.6

Re: nf_conntrack: table full, dropping packet

Сообщение spool »

oper777
Спасибо

oper777 писал(а):
06.01.2015 19:32
По идее команда
tcpdump -nni eth0 udp[6:2]=0x0

должна вывести только пакеты с нулями вместо чексуммы

Да, так и есть

oper777 писал(а):
06.01.2015 19:32
tcpdump -nni eth0 ip[26:2]=0x0

А эта что выводит? Там такое

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

18:54:17.904956 IP 188.239.67.34 > myserver: ICMP echo request, id 62985, seq 0, length 40
18:54:17.904977 IP myserver > 188.239.67.34: ICMP echo reply, id 62985, seq 0, length 40
18:54:18.996546 IP myserver > 144.76.16.194: ICMP myserver udp port 27098 unreachable, length 41
18:54:19.005566 IP 188.239.67.34 > myserver: ICMP echo request, id 64077, seq 0, length 40


oper777 писал(а):
06.01.2015 19:32
Значит правило для u32 будет примерно такое:

iptables -m u32 --u32 "26&0xFFFF=0x0000"

Это сразу можно ввести в терминал или его еще нужно подпиливать? И что оно делает: блокирует ip или отклоняет все пакеты без чексуммы?
Спасибо сказали:
spool
Сообщения: 126
ОС: CentOS 6.6

Re: nf_conntrack: table full, dropping packet

Сообщение spool »

Да, это то правило, которое было нужно. Спасибо большое за помощь.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21279
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: nf_conntrack: table full, dropping packet

Сообщение Bizdelnick »

oper777 писал(а):
06.01.2015 18:30
Вы решили, что суриката "не вывезет" этого трафика, а питоновский скрипт (коим и является fail2ban) значит справится?
Так он же не пропускает весь трафик через себя в реальном времени.

spool писал(а):
06.01.2015 18:45
Как я понял, там минимальный период ротации - час.
logrotate дёргается из cron, можно написать отдельную задачу, если периодичность не устраивает.

oper777 писал(а):
06.01.2015 19:32
+ ненужная нагрузка на файловую систему
Не без этого, конечно.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: