Cookies SYN inválidos recebidos, mas nenhum syncookie foi enviado?

2

cat /proc/net/netstat mostra que :

SyncookiesSent:0
SyncookiesRecv:0
SyncookiesFailed:34954

Numero de sincookies ruins é recebido, mas o sistema não envia nenhum syncookie。 O que eu espero é que os sysncookies ruins recebidos sejam menores que os syncookies enviados. Quem sabe o motivo?

2.6.32 :

static struct sock *tcp_v4_hnd_req(struct sock *sk, struct sk_buff *skb)
{
    struct tcphdr *th = tcp_hdr(skb);
    const struct iphdr *iph = ip_hdr(skb);
    struct sock *nsk;
    struct request_sock **prev;
    /* Find possible connection requests. */
    struct request_sock *req = inet_csk_search_req(sk, &prev, th->source,
                               iph->saddr, iph->daddr);
    if (req)
        return tcp_check_req(sk, skb, req, prev);

    nsk = inet_lookup_established(sock_net(sk), &tcp_hashinfo, iph->saddr,
            th->source, iph->daddr, th->dest, inet_iif(skb));

    if (nsk) {
        if (nsk->sk_state != TCP_TIME_WAIT) {
            bh_lock_sock(nsk);
            return nsk;
        }
        inet_twsk_put(inet_twsk(nsk));
        return NULL;
    }

#ifdef CONFIG_SYN_COOKIES
    if (!th->rst && !th->syn && th->ack)
        sk = cookie_v4_check(sk, skb, &(IPCB(skb)->opt)); <== check received ack.
#endif
    return sk;
}
    
por DaVid 05.03.2012 / 15:27

1 resposta

1

Aqui está a seção relevante de cookie_v4_check em net/ipv4/syncookies.c :

    if (tcp_synq_no_recent_overflow(sk) ||
    (mss = cookie_check(skb, cookie)) == 0) {
    NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_SYNCOOKIESFAILED);
    goto out;
}

NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_SYNCOOKIESRECV);

Então, se:

  1. Ocorreu um excesso recente ao exigir cookies SYN e
  2. O cookie não faz check-out como um pacote SYN regular válido ou um cookie SYN,

então SyncookiesFailed é incrementado. Caso contrário, SyncookiesRecv será incrementado. Portanto, se CONFIG_SYN_COOKIES estiver habilitado no kernel e você estiver sob uma nova carga de conexão que o exige, você esperaria que SyncookiesSent fosse positivo e SyncookiesRecv fosse positivo (mas menos). Assim, parece que os únicos que você recebeu são inválidos.

Estamos vendo números semelhantes, e achamos que é porque as regras padrão do UFW incluem descartar pacotes com um estado inválido, que pode incluir cookies SYN de saída e entrada. Você pode querer verificar sua configuração de firewall e logs para ver se pacotes perdidos inesperados estão ocorrendo.

Ou, você pode estar recebendo apenas cookies SYN inválidos, devido a algum invasor aleatório. Nesse caso, porém, eu esperaria alguns cookies SYN enviados.

    
por 15.05.2012 / 00:07

Tags