Вопрос или проблема
Мониторя журналы брандмауэра, я заметил 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=
в вопросе я думаю, что:
00:c0:ca:52:bf:8e
– это адрес назначенияMAC
. Это соответствуетMAC
адресу устройстваwlan0
, указанному в вопросе. С помощью инструмента OUI Lookup Tool известно, что это производительAlfa, Inc.
, поставщик WiFi адаптеров.10:a3:b8:f5:f7:28
– это адрес источникаMAC
. Это адрес для производителяIskratel d.o.o.
, поставщика сетевого оборудования для широкополосного подключения и конвергентных коммуникаций.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 групп. Давайте разберемся, что означает каждая часть:
- 00:c0:ca:52:bf:8e — это MAC-адрес устройства, которое отправляет или получает пакет. Он соответствует вашему интерфейсу WLAN (например, wlan0).
- 10:a3:b8:f5:f7:28 — это вторичный MAC-адрес, который, возможно, принадлежит другому устройству в сети или на другом конце соединения.
- 08:00 — это EtherType, который указывает на тип протокола, передаваемого в кадре. В данном случае
08:00
указывает на IPv4.
Таким образом, формат длинного MAC-адреса в логах nftables может включать как отправляющий, так и принимающий MAC-адреса, а также информацию о типе протокола.
Ответ на вопрос 2: Почему MAC-адреса появляются из Интернета и как их фильтровать?
MAC-адреса, которые вы видите в логах, могут принадлежать устройствам, находящимся далеко за пределами вашей сети, например, в Интернете. В случае NAT (Network Address Translation), когда вы соединяетесь с удалёнными адресами, возможна ситуация, когда удалённый узел включает свой MAC-адрес в передаваемые данные.
Это может происходить, если устройства используют NAT или если они передают свои данные так, что MAC-адрес становится доступным в логах. Это явление может произойти в определенных типах сетевых протоколов, таких как ARP, но обычно MAC-адрес не передается через маршрутизаторы, благодаря чему он не доступен за пределами локальной сети.
Рекомендации по фильтрации и управлению этими адресами:
-
Фильтрация MAC-адресов: Теперь, когда вы знаете, что длинные MAC-адреса включают информацию о нескольких устройствах, вы можете применять фильтры, основанные на частях адреса. Но на уровне nftables, целесообразно исключить ненужные длинные MAC-адреса (например, их вторичные части или адреса, которые не соответствуют вашим известным устройствам).
-
Настройка логирования: Вы можете изменить настройки логирования, включив флаг
ether
, чтобы более четко разграничивать адреса и улучшить возможности анализа. Это можно сделать, добавив опциюlog
с флагомether
в конфигурацию вашего nftables. -
Безопасность и мониторинг: Поддерживайте регулярный мониторинг ваших логов и сетевого трафика. Если вы заметите аномалии или неизвестные MAC-адреса, рассмотрите возможность блокировки соответствующих адресов или IP.
Таким образом, понимание структуры MAC-адресов и их источников в сетевом трафике является важной частью администрирования сети, и использование nftables и подходящих фильтров поможет вам лучше контролировать безопасность вашей сети.