Suricata: nf_queue: completo, descartando pacotes (s)

0

Estou usando o Suricata IDS no modo NFQUEUE:

iptables -A PREROUTING -m mark ! --mark 0x1/0x1 -m comment --comment "Suricata NFQUEUE handler" -j NFQUEUE --queue-num 0 --queue-bypass

A porta do servidor atual ficou indisponível por algum tempo e essas mensagens apareceram em kern.log :

18:51:53 up02-lb kernel: nf_queue: full at 4096 entries, dropping packets(s)

Como posso aumentá-lo? Não é controlado por nenhum parâmetro sysctl e não consigo encontrá-lo em /proc/net/netfilter/nfnetlink_queue . Eu aumentei max-pending-packets em suricata.yaml , mas não tenho certeza se isso ajuda.

    
por Selivanov Pavel 06.06.2016 / 19:47

1 resposta

1

Este valor é definido pelo Suricata. Ele usa "max-pendentes-pacotes" do seu suricata.yaml e multiplica por 4

int r = NFQInitThread(ntv, (max_pending_packets * NFQ_BURST_FACTOR));
if (r != TM_ECODE_OK) {

Onde NFQ_BURST_FACTOR é 4. Consulte o link

Você pode aumentar o valor em seu suricata.yaml. Se você definir pacotes max-pendentes para 4096, você deve obter uma saída semelhante a:

[6146] 7/6/2016 -- 20:31:12 - <Info> -- binding this thread 0 to queue '0'
[6146] 7/6/2016 -- 20:31:12 - <Info> -- setting queue length to 16384

Outra coisa que você pode tentar é ativar o suporte a 'falha de abertura'. Isso significa que, no lado do kernel, o NFQ está transmitindo pacotes quando o Suricata não consegue acompanhar. Isso leva a um risco de segurança, pois alguns pacotes não serão inspecionados.

Do suricata.yaml:

# On linux >= 3.6, you can set the fail-open option to yes to have the kernel
# accept the packet if suricata is not able to keep pace.
nfq:
#  mode: accept
#  repeat-mark: 1
#  repeat-mask: 1
#  route-queue: 2
#  batchcount: 20
#  fail-open: yes

Se você descomentar a última abertura, o suporte fail-open será ativado.

Eu definitivamente recomendo aumentar o tamanho da fila antes de ativar o fail-open.

    
por 08.06.2016 / 08:01

Tags