Атаки MAC Flooding: Технічний глибокий аналіз та стратегії запобігання
MAC flooding — це мережева атака рівня 2, яка навмисно вичерпує таблицю CAM (Content Addressable Memory) комутатора Ethernet шляхом впровадження тисяч кадрів із підробленими, випадковими MAC-адресами джерела. Коли таблиця CAM досягає максимальної ємності, комутатор деградує до поведінки, подібної до концентратора, — транслюючи всі вхідні кадри на кожен порт — що відкриває весь широкомовний домен для пасивного перехоплення та активних маніпуляцій.
Ця атака не є теоретичною. Вона тривіально виконується за допомогою таких інструментів, як `macof` (частина набору `dsniff`), і може насичити типову таблицю CAM з 8 000 записів менш ніж за 70 секунд на гігабітному каналі. Розуміння механіки, режимів відмов та багаторівневих засобів захисту є необхідним для будь-якого мережевого інженера, відповідального за цілісність інфраструктури.
Як працює таблиця CAM і чому вона дає збій
Кожен керований комутатор Ethernet підтримує таблицю CAM, яка відображає MAC-адреси на конкретні фізичні порти. Коли надходить кадр, комутатор виконує пошук: якщо MAC-адреса призначення є в таблиці, кадр пересилається лише на відповідний порт (одноадресне пересилання). Якщо MAC невідомий, комутатор розсилає кадр на всі порти в тому самому VLAN — це нормальна, очікувана поведінка для невідомого одноадресного трафіку.
Таблиця CAM має обмежений розмір, який зазвичай варіюється від 8 000 записів на комутаторах рівня доступу до 128 000+ записів на корпоративних основних комутаторах. Записи видаляються після тайм-ауту неактивності (за замовчуванням: 300 секунд на більшості платформ Cisco IOS). Зловмисник використовує це, впроваджуючи кадри швидше, ніж записи застарівають, підтримуючи таблицю постійно заповненою сміттєвими записами.
Режим відмови «fail-open»
Коли таблиця CAM заповнена, комутатор не може зберігати нові легітимні відображення MAC-на-порт. Кожен кадр із MAC-адресою призначення, якої ще немає в таблиці, розсилається на всі порти у VLAN. Це називається поведінкою fail-open — комутатор надає пріоритет підключенню над безпекою, що є протилежністю того, що вимагає свідомий щодо безпеки дизайн.
Наслідки є негайними та серйозними:
- Пасивне прослуховування: Будь-який хост у сегменті може перехоплювати трафік, призначений для інших хостів, використовуючи мережевий адаптер у режимі promiscuous та аналізатор пакетів, наприклад Wireshark або tcpdump.
- Атаки «людина посередині» (MITM): Маючи повну видимість трафіку, зловмисник може поєднати MAC flooding з ARP-отруєнням для перехоплення, модифікації та ретрансляції трафіку між двома хостами, що спілкуються, без виявлення перехоплення жодною зі сторін.
- Збір облікових даних: Незашифровані протоколи (Telnet, FTP, HTTP Basic Auth, SMTP без STARTTLS) безпосередньо розкривають облікові дані. Навіть з TLS, метадані та шаблони сесій витікають цінні розвідувальні дані.
- Деградація продуктивності мережі: Великий обсяг розсіяних кадрів споживає пропускну здатність портів і цикли CPU на всіх підключених хостах, фактично створюючи умови відмови в обслуговуванні.
Виконання атаки: як це виглядає насправді
Реалістична атака з використанням `macof` на хості Linux:
“`bash
macof floods the network with random source MACs
-i specifies the interface, -n specifies the number of packets
macof -i eth0 -n 100000
“`
Кожен пакет має випадково згенеровану MAC-адресу джерела та призначення, змушуючи комутатор намагатися створити новий запис CAM для кожного кадру. На каналі 100 Мбіт/с `macof` може генерувати приблизно 155 000 пакетів на секунду — значно перевищуючи швидкість поповнення таблиці CAM.
MAC flooding проти ARP Spoofing проти ARP Poisoning
Ці три атаки часто плутають, але вони діють на різних рівнях і через різні механізми. Розуміння відмінності є критичним для вибору правильного засобу захисту.
| Атрибут | MAC Flooding | ARP Spoofing | ARP Poisoning |
|---|
| — | — | — | — |
|---|
| **Рівень OSI** | Рівень 2 (канальний) | Межа рівнів 2/3 | Межа рівнів 2/3 |
|---|
| **Ціль** | Таблиця CAM комутатора | Кеш ARP хоста | Кеш ARP хоста |
|---|
| **Механізм** | Вичерпує CAM фальшивими MAC | Надсилає підроблені ARP-відповіді | Безперервні підроблені ARP-відповіді |
|---|
| **Основна мета** | Примусове розсіювання, як у концентраторі | Перенаправлення трафіку до зловмисника | Постійний MITM |
|---|
| **Складність виявлення** | Помірна (великий обсяг трафіку) | Висока (тонка маніпуляція кешем) | Висока |
|---|
| **Основний засіб захисту** | Port Security | Dynamic ARP Inspection | Dynamic ARP Inspection + DHCP Snooping |
|---|
| **Потребує фізичного доступу** | Так (локальний сегмент) | Так (локальний сегмент) | Так (локальний сегмент) |
|---|
| **Інструменти** | macof, hping3 | arpspoof, Ettercap | Ettercap, Bettercap |
|---|
Стратегія захисту 1: Port Security на керованих комутаторах
Port Security є найбільш прямим та ефективним першим рівнем захисту проти MAC flooding. Вона діє на рівні порту, встановлюючи жорстке обмеження на кількість MAC-адрес, які можуть бути вивчені на будь-якому інтерфейсі.
Основні параметри конфігурації
Максимальна кількість MAC-адрес: Встановіть це значення на мінімальну кількість, необхідну для легітимної роботи. Порт, підключений до одного робочого місця, повинен дозволяти рівно одну MAC-адресу. Порт, підключений до IP-телефону з підключеним ПК (поширена топологія послідовного підключення), повинен дозволяти дві.
Режими порушення визначають, що відбувається при перевищенні ліміту:
- `protect` — Мовчки відкидає кадри від невідомих MAC. Без журналювання, без вимкнення порту. Корисно для середовищ, де хибні спрацьовування є проблемою, але не забезпечує видимості.
- `restrict` — Відкидає кадри від невідомих MAC та збільшує лічильник порушень, генеруючи повідомлення syslog. Порт залишається в робочому стані.
- `shutdown` — Негайно переводить порт у стан err-disabled та генерує сповіщення syslog. Це найбезпечніший варіант, але вимагає адміністративного втручання (або автовідновлення) для відновлення порту.
Sticky MAC addressing (`mac-address sticky`) інструктує комутатор динамічно вивчати MAC-адреси та записувати їх безпосередньо в поточну конфігурацію як статичні записи. Це усуває необхідність вручну заповнювати таблиці MAC-адрес, водночас прив’язуючи конкретні пристрої до конкретних портів.
Повний приклад конфігурації Cisco IOS
“`
interface GigabitEthernet0/1
switchport mode access
switchport access vlan 10
switchport port-security
switchport port-security maximum 2
switchport port-security violation shutdown
switchport port-security mac-address sticky
spanning-tree portfast
“`
Для перевірки стану port security:
“`
show port-security interface GigabitEthernet0/1
show port-security address
“`
Для відновлення порту в стані err-disabled після порушення:
“`
interface GigabitEthernet0/1
shutdown
no shutdown
“`
Для автоматичного відновлення налаштуйте `errdisable recovery cause psecure-violation` з відповідним інтервалом.
Критична пастка: транкові порти та аплінки
Ніколи не застосовуйте port security до транкових портів або аплінків комутатора. Ці порти легітимно переносять трафік від сотень MAC-адрес через кілька VLAN. Застосування ліміту MAC до транкового порту спричинить катастрофічні збої підключення. Port security є виключно функцією портів доступу.
Стратегія захисту 2: Сегментація VLAN та приватні VLAN
Сегментація VLAN обмежує радіус ураження атаки MAC flooding, звужуючи широкомовний домен. Якщо зловмисник заповнює таблицю CAM, лише VLAN, що містить порт зловмисника, переходить у режим fail-open — інші VLAN продовжують нормально працювати.
Стандартна сегментація VLAN
Сегментуйте мережу за функцією та рівнем конфіденційності:
- Management VLAN: Мережеві пристрої, інтерфейси позасмугового управління, доступ IPMI/iDRAC/iLO
- Server VLAN: Виробничі сервери, бази даних, рівні застосунків
- User VLAN: Робочі станції, принтери, кінцеві пристрої загального призначення
- DMZ VLAN: Сервіси, доступні з Інтернету, зворотні проксі, поштові шлюзи
- Voice VLAN: VoIP-телефони (також зменшує складність QoS)
Приватні VLAN (PVLAN)
Приватні VLAN розширюють ізоляцію в межах одного VLAN, визначаючи ролі портів:
- Promiscuous-порти: Можуть спілкуватися з усіма портами у PVLAN (зазвичай аплінк або шлюз)
- Isolated-порти: Можуть спілкуватися лише з promiscuous-портами — не з іншими isolated-портами
- Community-порти: Можуть спілкуватися з іншими портами в тій самій спільноті та з promiscuous-портами
PVLAN особливо цінні в хостингових середовищах, де кілька орендарів спільно використовують одну фізичну інфраструктуру. Навіть якщо порт одного орендаря скомпрометовано, поведінка isolated-порту запобігає бічному перехопленню трафіку. Якщо ви запускаєте робочі навантаження на платформі VPS Хостингу, розуміння того, як базова комутаційна структура реалізує ізоляцію VLAN, безпосередньо стосується вашої моделі загроз.
Стратегія захисту 3: DHCP Snooping
DHCP Snooping будує таблицю прив’язок, яка відображає MAC-адреси на IP-адреси, VLAN та порти комутатора. Ця таблиця прив’язок корисна не лише для атак, специфічних для DHCP — вона слугує авторитетним джерелом істини для Dynamic ARP Inspection та IP Source Guard.
Логіка конфігурації
Порти класифікуються як довірені (підключені до легітимних DHCP-серверів або аплінків) або ненадійні (підключені до клієнтів). DHCP-відповіді, що надходять на ненадійні порти, відкидаються.
“`
ip dhcp snooping
ip dhcp snooping vlan 10,20,30
interface GigabitEthernet0/1
ip dhcp snooping limit rate 15
! Untrusted by default — no additional command needed
interface GigabitEthernet0/24
ip dhcp snooping trust
! Uplink or DHCP server port
“`
Команда `ip dhcp snooping limit rate 15` обмежує DHCP-пакети до 15 на секунду на ненадійних портах, запобігаючи атакам виснаження DHCP, які можуть супроводжувати кампанії MAC flooding.
Таблиця прив’язок DHCP Snooping
“`
show ip dhcp snooping binding
“`
Цей вивід таблиці показує MAC-адресу, IP-адресу, час оренди, VLAN та інтерфейс — саме ті дані, які DAI використовує для перевірки.
Стратегія захисту 4: Dynamic ARP Inspection (DAI)
DAI перевіряє ARP-пакети відносно таблиці прив’язок DHCP Snooping. Будь-який ARP-пакет, що заявляє відображення MAC-на-IP, яке не відповідає таблиці прив’язок, відкидається. Це безпосередньо протидіє ARP-отруєнню, яке зловмисники зазвичай накладають поверх MAC flooding.
“`
ip arp inspection vlan 10,20,30
interface GigabitEthernet0/24
ip arp inspection trust
! Uplink — trusted for ARP
interface GigabitEthernet0/1
ip arp inspection limit rate 100
! Limit ARP rate on access ports
“`
DAI також реєструє відкинуті пакети, надаючи криміналістичні докази спроб атак:
“`
show ip arp inspection statistics vlan 10
“`
IP Source Guard: фінальний рівень
IP Source Guard розширює таблицю прив’язок DHCP Snooping для фільтрації IP-пакетів. Пересилаються лише пакети з IP-адресою джерела, що відповідає запису таблиці прив’язок для цього порту. Це запобігає підробці IP навіть після успішної події MAC flooding.
“`
interface GigabitEthernet0/1
ip verify source
“`
Комбінація port security + DHCP Snooping + DAI + IP Source Guard створює стек глибокого захисту, який одночасно вирішує проблеми MAC flooding, ARP spoofing, виснаження DHCP та підробки IP.
Стратегія захисту 5: 802.1X Network Access Control
IEEE 802.1X забезпечує контроль доступу до мережі на основі портів, вимагаючи автентифікації перед тим, як порту дозволяється передавати трафік. Неавтентифікований пристрій — включаючи машину зловмисника, що впроваджує пакети MAC flooding — переводиться в неавторизований стан і не може спілкуватися з мережею.
Архітектура 802.1X включає три компоненти:
- Supplicant: Клієнтський пристрій (робоча станція, сервер)
- Authenticator: Порт комутатора
- Authentication server: RADIUS-сервер (FreeRADIUS, Cisco ISE, Microsoft NPS)
Поки supplicant успішно не автентифікується через EAP (Extensible Authentication Protocol), порт передає лише кадри EAPOL (EAP over LAN). MAC flooding з неавтентифікованого порту неможливий, оскільки порт не має доступу до площини даних.
“`
aaa new-model
aaa authentication dot1x default group radius
dot1x system-auth-control
interface GigabitEthernet0/1
authentication port-control auto
dot1x pae authenticator
“`
802.1X є найпотужнішим превентивним засобом контролю для безпеки рівня доступу, але вимагає інфраструктури RADIUS та конфігурації supplicant на всіх кінцевих точках — значні операційні інвестиції.
Стратегія захисту 6: Моніторинг мережі та виявлення аномалій
Жоден превентивний засіб контролю не є безпомилковим. Безперервний моніторинг забезпечує можливість виявлення, необхідну для ідентифікації атак, які обходять або передують превентивним заходам.
Індикатори MAC flooding
- Швидке збільшення кількості MAC-адрес, вивчених на одному порту
- Використання таблиці CAM, що наближається до 80-90% ємності
- Стрибок обсягу широкомовного трафіку у VLAN
- Збільшення подій невідомого одноадресного розсіювання
- Стрибки використання CPU на комутаторах (через обробку розсіювання)
Інструменти та техніки моніторингу
Опитування SNMP: Запитуйте `dot1dTpFdbTable` (RFC 1493) або `dot1qFdbTable` (RFC 2674) для відстеження розміру таблиці CAM з часом. Сповіщайте, коли записи перевищують визначений поріг.
Аналіз NetFlow/sFlow: Дані потоків виявляють аномальні шаблони трафіку — одне джерело, що генерує тисячі унікальних MAC-адрес джерела, є чітким індикатором.
Системи виявлення вторгнень: Snort та Suricata мають правила для виявлення шаблонів MAC flooding. Zeek (раніше Bro) можна налаштувати для сповіщення про швидку зміну MAC-адрес.
Wireshark/tshark для криміналістики: При розслідуванні підозрюваної атаки виконайте захоплення на дзеркальному/SPAN-порту та відфільтруйте унікальні MAC-адреси джерела:
“`bash
tshark -i eth0 -T fields -e eth.src | sort | uniq -c | sort -rn | head -20
“`
Легітимний хост генерує кілька унікальних MAC-адрес джерела (зазвичай одну). Зловмисник, що запускає `macof`, генерує тисячі на секунду.
SPAN/RSPAN для аналізу трафіку
Налаштуйте сесію SPAN (Switched Port Analyzer) для дзеркалювання трафіку на хост моніторингу:
“`
monitor session 1 source vlan 10
monitor session 1 destination interface GigabitEthernet0/48
“`
Це дозволяє виділеному IDS/IPS або пристрою захоплення пакетів аналізувати весь трафік VLAN 10 без порушення виробничого пересилання.
Апаратні міркування: розмір таблиці CAM та вибір комутатора
Перехід на комутатори з більшими таблицями CAM підвищує планку для зловмисників, але не є заміною описаних вище засобів контролю. Рішучий зловмисник із достатньою пропускною здатністю може заповнити будь-яку скінченну таблицю.
| Рівень комутатора | Типовий розмір таблиці CAM | Рекомендований варіант використання |
|---|
| — | — | — |
|---|
| Некерований споживчий | 1 000 – 4 000 записів | Лише домашні мережі |
|---|
| Керований для малого бізнесу (напр., Cisco SG350) | 8 000 – 16 000 записів | Малий офіс, середовища з низьким ризиком |
|---|
| Корпоративний рівень доступу (напр., Cisco Catalyst 9200) | 32 000 – 64 000 записів | Корпоративний рівень доступу |
|---|
| Корпоративний розподіл/ядро (напр., Cisco Catalyst 9500) | 128 000 – 256 000+ записів | Центр обробки даних, ядро кампусу |
|---|
Для виробничих навантажень — особливо тих, що працюють на Виділених серверах, підключених до корпоративної комутаційної інфраструктури — рівень комутатора безпосередньо впливає на вікно вразливості під час активної атаки.
Захист хостингових та хмарних середовищ
MAC flooding — це атака на локальний сегмент. У спільному хостингу або середовищі колокації модель загроз змінюється: скомпрометований або зловмисний орендар на тій самій фізичній комутаційній структурі може атакувати інших орендарів.
Для середовищ, де ви контролюєте гіпервізор або віртуальний комутатор (Open vSwitch, VMware vSwitch), існують еквівалентні засоби контролю:
Port security Open vSwitch:
“`bash
ovs-vsctl set port <port-name> other_config:rstp-enable=true
ovs-vsctl set Interface <port-name> type=internal
Limit MAC learning via OpenFlow rules
“`
VMware vSwitch: Увімкніть «MAC Address Changes: Reject» та «Forged Transmits: Reject» у політиці безпеки vSwitch. Це запобігає впровадженню VM кадрів із MAC-адресами джерела, відмінними від призначеної MAC.
Якщо ви керуєте веб-застосунками або сервісами на VPS з cPanel або використовуєте Панелі керування VPS для управління сервером, перевірте у свого провайдера, що базовий гіпервізор застосовує захист від підробки MAC на рівні віртуального комутатора — це віртуалізований еквівалент port security.
Для організацій, що запускають сервіси з SSL-термінацією, забезпечення правильного налаштування SSL-сертифікатів забезпечує додатковий рівень захисту: навіть якщо зловмисник досягає перехоплення трафіку через MAC flooding, належно реалізований TLS із закріпленням сертифікатів запобігає збору облікових даних із зашифрованих сесій.
Матриця рішень: вибір правильних засобів контролю
Використовуйте цю матрицю для визначення пріоритетів засобів контролю залежно від типу вашого середовища:
| Засіб контролю | Малий офіс | Корпоративна LAN | Центр обробки даних | Хостинг/Хмара |
|---|
| — | — | — | — | — |
|---|
| Port Security | Високий пріоритет | Високий пріоритет | Середній (використовуйте 802.1X) | Н/З (рівень гіпервізора) |
|---|
| Сегментація VLAN | Середній | Високий пріоритет | Високий пріоритет | Високий пріоритет |
|---|
| DHCP Snooping | Середній | Високий пріоритет | Високий пріоритет | Керується провайдером |
|---|
| Dynamic ARP Inspection | Середній | Високий пріоритет | Високий пріоритет | Керується провайдером |
|---|
| 802.1X NAC | Низький (складність) | Високий пріоритет | Високий пріоритет | Н/З |
|---|
| IP Source Guard | Низький | Високий пріоритет | Високий пріоритет | Керується провайдером |
|---|
| Моніторинг SNMP/NetFlow | Низький | Високий пріоритет | Високий пріоритет | Керується орендарем |
|---|
| Приватні VLAN | Низький | Середній | Високий пріоритет | Високий пріоритет |
|---|
Технічний контрольний список ключових висновків
Перш ніж вважати своє середовище рівня 2 захищеним від MAC flooding, перевірте кожен із наступних пунктів:
- Port security налаштована на всіх портах доступу з лімітом MAC, відповідним типу підключеного пристрою (1 для робочих станцій, 2 для ланцюжків IP-телефон + ПК)
- Режим порушення встановлено на `shutdown` для портів з високим рівнем безпеки та `restrict` з журналюванням для портів загального доступу
- Sticky MAC learning увімкнено та поточна конфігурація збережена в NVRAM
- DHCP Snooping увімкнено на всіх виробничих VLAN з правильними позначеннями довірених/ненадійних портів та обмеженням швидкості на ненадійних портах
- Dynamic ARP Inspection увімкнено на всіх виробничих VLAN та перевірено відносно таблиці прив’язок DHCP Snooping
- IP Source Guard розгорнуто на ненадійних портах доступу у сегментах з високим рівнем безпеки
- VLAN сегментовано за функцією без зайвої міжмережевої маршрутизації VLAN
- Приватні VLAN реалізовано в багатоорендних або хостингових середовищах
- 802.1X розгорнуто або заплановано для всіх портів рівня доступу
- Моніторинг SNMP налаштовано для сповіщення про порогові значення використання таблиці CAM
- NetFlow або sFlow увімкнено та передає дані в систему виявлення аномалій
- Сесії SPAN налаштовано для видимості IDS/IPS на критичних VLAN
- Політики безпеки віртуального комутатора (захист від підробки MAC, відхилення підроблених передач) застосовуються на рівні гіпервізора
- TLS застосовується для всього конфіденційного трафіку застосунків, щоб навіть успішне перехоплення не давало облікових даних у відкритому тексті
Часті запитання
Чи може MAC flooding впливати на бездротові мережі?
Стандартна інфраструктура Wi-Fi використовує іншу модель асоціації — точки доступу керують асоціаціями клієнтів через протокол 802.11, а не таблицю CAM у розумінні Ethernet. Однак контролер бездротової мережі або вищий дротовий комутатор, що обслуговує точку доступу, все одно може бути атакований. Крім того, атаки з підробленими точками доступу на бездротові мережі досягають подібних цілей перехоплення через інші механізми.
Чи працює MAC flooding проти сучасних корпоративних комутаторів з великими таблицями CAM?
Так, але атака вимагає більшої пропускної здатності та часу. Комутатор з таблицею CAM на 128 000 записів вимагає пропорційно більше підроблених кадрів для вичерпання. Однак `macof` на каналі 10 Гбіт/с може генерувати мільйони кадрів на секунду, роблячи навіть великі таблиці вразливими протягом секунд. Саме тому апаратні засоби захисту, такі як port security, є необхідними — вони запобігають заповненню таблиці в першу чергу.
У чому різниця між MAC flooding та MAC spoofing?
MAC flooding вичерпує таблицю CAM через обсяг — мета полягає в примусовому розсіюванні, як у концентраторі. MAC spoofing передбачає видавання себе за конкретну, легітимну MAC-адресу для захоплення сесії або обходу засобів контролю доступу на основі MAC. Це різні атаки, хоча зловмисник може використовувати MAC spoofing після успішної події MAC flooding для підтримки постійної позиції MITM.
Чи порушує увімкнення port security легітимні мережеві операції, такі як DHCP?
Ні, якщо налаштовано правильно. DHCP-трафік походить від MAC-адреси клієнта, яка є єдиною дозволеною MAC-адресою на порту. Відповідь DHCP-сервера адресована MAC клієнта та надходить на аплінк (довірений порт). Port security на портах доступу не заважає DHCP, якщо ліміт не встановлено на нуль або режим порушення неправильно відкидає легітимний трафік.
Як виявити атаку MAC flooding, яка вже почалася?
Негайно перевірте використання таблиці CAM: `show mac address-table count`. Якщо використання близьке до 100%, зіставте з `show mac address-table dynamic` для ідентифікації портів з аномально великою кількістю вивчених MAC-адрес. Одночасно перевірте лічильники помилок інтерфейсу за допомогою `show interfaces` на стрибки вхідної швидкості. Порт-порушник покаже різко підвищену вхідну швидкість пакетів та незвично велику кількість вивчених MAC-адрес.
