Назад | Перейти на главную страницу

Получены недопустимые файлы cookie SYN ,, но файлы cookie не отправлены?

cat /proc/net/netstat показывает, что:

SyncookiesSent:0
SyncookiesRecv:0
SyncookiesFailed:34954

Получено количество плохих файлов cookie, но система не отправляет никаких файлов cookie。 Я ожидаю, что количество плохих файлов cookie получено меньше, чем отправленных файлов cookie. Кто знает причину?

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;
}

Вот соответствующий раздел из cookie_v4_check в 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);

Так что если:

  1. Недавно произошло переполнение, требующее файлов cookie SYN, и
  2. Файл cookie не проверяется как действительный обычный пакет SYN или файл cookie SYN,

затем SyncookiesFailed увеличивается. В противном случае, SyncookiesRecv увеличивается. Так что если CONFIG_SYN_COOKIES включен в ядре, и вы столкнулись с новой нагрузкой на соединение, которая требует этого, вы ожидаете SyncookiesSent быть позитивным, и SyncookiesRecv быть положительным (но меньше). Как бы то ни было, похоже, что единственные, которые вы получили, недействительны.

Мы видим похожие цифры и думаем, что это потому, что UFWправила по умолчанию включают отбрасывание пакетов с недопустимым состоянием, которые могут включать исходящие и входящие файлы cookie SYN. Возможно, вы захотите проверить конфигурацию и журналы вашего брандмауэра, чтобы узнать, не происходят ли неожиданные отброшенные пакеты.

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