Длина MAC-адресов, отображаемая nftables в журналах, не всегда состоит из 12 шестнадцатеричных цифр

Вопрос или проблема

Мониторя журналы брандмауэра, я заметил MAC адреса, указанные в журналах nftables, которые не соответствуют стандартной длине.

Я понимаю, что MAC адрес состоит из 48 бит, что должно представляться как 12 шестнадцатеричных цифр, так как каждая шестнадцатеричная цифра требует 4 бита, следовательно, 48 / 4 = 12 шестнадцатеричных цифр (разделенных на 6 групп по 2 цифры в каждой).

Это соответствует тому, что утверждает википедия:

Как обычно представлено, MAC адреса распознаются как шесть групп по две шестнадцатеричные цифры, разделенные дефисами, двоеточиями или без разделителей.

Согласно википедии пример такого адреса – это 01:23:45:67:89:AB, это означает, что имеются 12 шестнадцатеричных цифр (6 групп x 2 на группу = 12), и именно так я распознаю устройства в своей LAN и как я осуществляю фильтрацию трафика в LAN.

Такие 6-групповые шестнадцатеричные цифры также видны в журналах брандмауэра (например, ARP запись), так что это ясно, и я не буду приводить пример..

Тем не менее, есть также журналы, такие как этот:

2024-09-29T14:44:21.000498+02:00 debian kernel: [ 2520.417160] DROP default new_in_4: IN=wlan0 OUT= MAC=00:c0:ca:52:bf:8e:10:a3:b8:f5:f7:28:08:00 SRC=157.48.189.170 DST=192.168.1.34 LEN=132 TOS=0x08 PREC=0x20 TTL=43 ID=0 PROTO=UDP SPT=35165 DPT=3451 LEN=112

Этот пример приводит 14 групп шестнадцатеричных цифр MAC адреса или 28 шестнадцатеричных цифр в общей сложности.
Все такие адреса начинаются с 00: и заканчиваются на :00 как первая и последняя группа цифр.

Следовательно, этот MAC адрес, видимый в журнале nftables, более чем вдвое превышает размер, чем он должен быть (с учетом группы префикса и группы суффикса 00).

Вопрос 1: что представляет собой этот 14-групповой 28-значный MAC адрес и что он означает в журналах nftables?

А вопрос 2, возможно, даже более интересен: как можно получить MAC адрес для узла где-то в интернете? Я предполагаю, что этот MAC адрес поступает снаружи NAT брандмауэра, потому что я его не распознаю.

Как я могу фильтровать эти странные MAC адреса и стоит ли это делать?

Этот пример записи журнала исключает входящий UDP трафик, сгенерированный пиром bittorrent, потому что я закрыл клиент.

редактировать:

ip link show wlan0

3: wlan0 <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DORMANT group default qlen 1000
    link/ether 00:c0:ca:52:bf:8e brd ff:ff:ff:ff:ff:ff

Я взглянул на исходный код, чтобы попытаться выяснить, что сообщает MAC=.

Нашел функцию dump_mac_header в ядре Linux для netfilter, которая содержит следующий относящийся блок:

    if (!(logflags & NF_LOG_MACDECODE))
        goto fallback;

    switch (dev->type) {
    case ARPHRD_ETHER:
        nf_log_buf_add(m, "MACSRC=%pM MACDST=%pM ",
                   eth_hdr(skb)->h_source, eth_hdr(skb)->h_dest);
        nf_log_dump_vlan(m, skb);
        nf_log_buf_add(m, "MACPROTO=%04x ",
                   ntohs(eth_hdr(skb)->h_proto));
        return;
    default:
        break;
    }

fallback:
    nf_log_buf_add(m, "MAC=");
    if (dev->hard_header_len &&
        skb->mac_header != skb->network_header) {
        const unsigned char *p = skb_mac_header(skb);
        unsigned int i;

        if (dev->type == ARPHRD_SIT) {
            p -= ETH_HLEN;

            if (p < skb->head)
                p = NULL;
        }

        if (p) {
            nf_log_buf_add(m, "%02x", *p++);
            for (i = 1; i < dev->hard_header_len; i++)
                nf_log_buf_add(m, ":%02x", *p++);
        }

Что означает:

  • Если лог-флаг NF_LOG_MACDECODE установлен, будет сообщаться о полях MACSRC, MACDST и MACPROTO.
  • В противном случае просто сообщает MAC= и список байтов, разделенных двоеточием.

Я ещё не пробовал это, но из Таблицы 60. лог-флаги в man nft вы должны иметь возможность установить флаг ether, чтобы вызвать декодирование MAC адресов:

Флаг Описание
ether Декодировать MAC адреса и протокол.

MAC=00:c0:ca:52:bf:8e:10:a3:b8:f5:f7:28:08:00

Из iptables периодически записывают MAC адреса. Почему?, как предложил ilkkachu, тогда для этого 14-байтового MAC= в вопросе я думаю, что:

  1. 00:c0:ca:52:bf:8e – это адрес назначения MAC. Это соответствует MAC адресу устройства wlan0, указанному в вопросе. С помощью инструмента OUI Lookup Tool известно, что это производитель Alfa, Inc., поставщик WiFi адаптеров.
  2. 10:a3:b8:f5:f7:28 – это адрес источника MAC. Это адрес для производителя Iskratel d.o.o., поставщика сетевого оборудования для широкополосного подключения и конвергентных коммуникаций.
  3. 08:00 – это EtherType для IPv4.

Ответ или решение

Когда вы наблюдаете в логах nftables адреса MAC, которые не соответствуют стандартному формату, это может вызвать путаницу. Важно понимать, что стандартный MAC-адрес действительно состоит из 48 бит, представленных в виде 12 шестнадцатеричных символов, сгруппированных в шесть пар, например, 01:23:45:67:89:AB. Однако логи nftables могут отображать более длинные адреса, что вызывает вопрос о том, что они представляют.

Ответ на вопрос 1: Что такое 14 групп из 28 шестнадцатеричных символов в логах nftables?

В приведенном вами примере лог MAC=00:c0:ca:52:bf:8e:10:a3:b8:f5:f7:28:08:00 действительно содержит адрес, состоящий из 14 групп. Давайте разберемся, что означает каждая часть:

  1. 00:c0:ca:52:bf:8e — это MAC-адрес устройства, которое отправляет или получает пакет. Он соответствует вашему интерфейсу WLAN (например, wlan0).
  2. 10:a3:b8:f5:f7:28 — это вторичный MAC-адрес, который, возможно, принадлежит другому устройству в сети или на другом конце соединения.
  3. 08:00 — это EtherType, который указывает на тип протокола, передаваемого в кадре. В данном случае 08:00 указывает на IPv4.

Таким образом, формат длинного MAC-адреса в логах nftables может включать как отправляющий, так и принимающий MAC-адреса, а также информацию о типе протокола.

Ответ на вопрос 2: Почему MAC-адреса появляются из Интернета и как их фильтровать?

MAC-адреса, которые вы видите в логах, могут принадлежать устройствам, находящимся далеко за пределами вашей сети, например, в Интернете. В случае NAT (Network Address Translation), когда вы соединяетесь с удалёнными адресами, возможна ситуация, когда удалённый узел включает свой MAC-адрес в передаваемые данные.

Это может происходить, если устройства используют NAT или если они передают свои данные так, что MAC-адрес становится доступным в логах. Это явление может произойти в определенных типах сетевых протоколов, таких как ARP, но обычно MAC-адрес не передается через маршрутизаторы, благодаря чему он не доступен за пределами локальной сети.

Рекомендации по фильтрации и управлению этими адресами:

  1. Фильтрация MAC-адресов: Теперь, когда вы знаете, что длинные MAC-адреса включают информацию о нескольких устройствах, вы можете применять фильтры, основанные на частях адреса. Но на уровне nftables, целесообразно исключить ненужные длинные MAC-адреса (например, их вторичные части или адреса, которые не соответствуют вашим известным устройствам).

  2. Настройка логирования: Вы можете изменить настройки логирования, включив флаг ether, чтобы более четко разграничивать адреса и улучшить возможности анализа. Это можно сделать, добавив опцию log с флагом ether в конфигурацию вашего nftables.

  3. Безопасность и мониторинг: Поддерживайте регулярный мониторинг ваших логов и сетевого трафика. Если вы заметите аномалии или неизвестные MAC-адреса, рассмотрите возможность блокировки соответствующих адресов или IP.

Таким образом, понимание структуры MAC-адресов и их источников в сетевом трафике является важной частью администрирования сети, и использование nftables и подходящих фильтров поможет вам лучше контролировать безопасность вашей сети.

Оцените материал
Добавить комментарий

Капча загружается...