🚀 ARP (Протокол разрешения адресов) – это ключевой механизм в сетях, который связывает IP-адреса с MAC-адресами для корректной передачи данных внутри локальной сети (LAN).
Как работает ARP?
1️⃣ Проверка кэша: Устройство сначала проверяет свой ARP-кэш – есть ли уже нужный MAC-адрес?
2️⃣ Запрос (ARP Request): Если MAC неизвестен, отправляется широковещательный запрос: "Кто владеет этим IP?"
3️⃣ Ответ (ARP Reply): Устройство с нужным IP отправляет unicаst-ответ со своим MAC-адресом.
4️⃣ Запись в кэш: MAC-адрес сохраняется в ARP-кэше для будущих запросов.
5️⃣ Передача данных: Теперь отправитель может доставить пакет по нужному MAC-адресу.
🔍 Типы ARP:
✅ ARP Request – запрос MAC-адреса.
✅ ARP Reply – ответ с MAC-адресом.
✅ Gratuitous ARP (GARP) – устройство объявляет свой MAC-адрес другим.
✅ Reverse ARP (RARP) – устаревший метод для запроса IP по MAC.
⚠️ Уязвимости ARP:
🔻 Уязвимости протокола ARP заключаются в том, что он не проверяет подлинность ARP-запросов и ARP-ответов. Это позволяет злоумышленникам устанавливать соответствие между IP-адресами одних устройств в сети и MAC-адресами других устройств.
🛡 Как защититься?
- Статические ARP-записи. Запись вводится вручную, не давая устройству автоматически изменить ARP-кэш. Этот метод можно использовать только для некоторых записей (например, стандартных адресов шлюзов).
- Включение Dynamic ARP Inspection (DAI) на сетевом оборудовании. Dynamic ARP (Dynamic ARP Inspection, DAI) — это функция безопасности, которая позволяет проверять пакеты ARP в сети. Она защищает устройства от подделки пакетов протокола разрешения адресов (ARP) (также известной как ARP-подкидывание). Принцип работы: коммутатор перехватывает пакеты ARP в локальной сети и проверяет их на соответствие информации в базе данных DHCP snooping. Если источник IP и MAC-адреса в пакете ARP совпадают с записями в базе, пакет пропускается. Если нет, коммутатор отбрасывает пакет, предотвращая обработку вредоносной информации. Если пакет ARP получен из доверенного для DAI порта, коммутатор пересылает его напрямую, без проверки. Если пакет получен из порта, который не является доверенным, коммутатор передаст только легитимный пакет, а нелегитимные отбрасывает и записывает это действие.
- Переход на IPv6, где вместо ARP используется более безопасный NDP.
- Шифрование. Оно значительно усложняет взлом ARP и не даёт хакеру прочитать сообщения после их перехвата.
- VPN. При подключении к VPN все данные будут проходить через зашифрованный туннель, гарантированно защищающий от любых хакерских атак.
- Сегментация сети. ARP-пакеты могут рассылаться только внутри локальной сети. Если разделить её на множество подсетей (например, посредством VLAN), ARP-пакеты будут рассылаться только внутри подсети.
- Брандмауэры с фильтрацией пакетов. Они определяют попытки маскировки хакеров под другой хост, отмечая пакеты, отправленные с повторяющихся адресов.
- ПО для проверки ARP-запросов. Оно сертифицирует IP/MAC адреса и блокирует несертифицированные ответы.
Пример работы протокола ARP:
- Компьютер А желает переслать пакет данных на компьютер Б, IP-адрес компьютера Б ему известен. Однако сеть Ethernet, которой они соединены, не работает с IP-адресами. Поэтому компьютеру А для осуществления передачи через Ethernet требуется узнать адрес компьютера Б в сети Ethernet (MAC-адрес).
- По протоколу ARP компьютер А отправляет широковещательный запрос, адресованный всем компьютерам в одном с ним широковещательном домене. Суть запроса: «компьютер с IP-адресом 10.22.22.2, сообщите свой MAC-адрес компьютеру с МАС-адресом (напр. a0:ea:d1:11:f1:01)».
- Сеть Ethernet доставляет этот запрос всем устройствам в том же сегменте Ethernet, в том числе и компьютеру Б.
- Компьютер Б отвечает компьютеру А на запрос и сообщает свой MAC-адрес (напр. 00:ea:d1:11:f1:11).
- Теперь, получив MAC-адрес компьютера Б, компьютер А может передавать ему любые данные через сеть Ethernet.
Ещё один пример работы ARP:
- Устройство хочет подключиться к локальному серверу с hostname Debian.local по SSH. Предварительно устройство сверит адреса сети, если они одинаковые, значит, устройства в одной подсети, и можно напрямую обратиться с ARP-запросом через интерфейс.
- Если нет, то устройство отправляет широковещательный пакет, где спрашивает: «Какой MAC-адрес у такого устройства с IP-адресом <любой адрес>».
- Пакет с запросом доходит до коммутатора, и он пересылает его на все доступные порты канальной среды коммутатора.
- Debian.local получает этот пакет и видит, что он состоит из IP.src, MAC.src и IP.dst и MAC.dst. Значит, ему необходимо заполнить поле с его MAC-адресом и отправить обратно автору пакета по source адресам.
- После чего Debian.local запишет в свою ARP-таблицу из пакета ARP данные об отправителе и будет знать, что 192.168.58.134 соотносится с MAC-адресом 00:0c:29:bc:8b
- В это время пакет доходит обратно до клиента, и он записывает ответ в свою таблицу. После чего пакет канальной среды Ethernet необходимо заполнить, чтобы коммутатор смог отправить его в нужную точку назначения, адрес теперь клиент берёт из своей ARP-таблицы.
⚡ Вывод:
ARP – необходимый механизм в сетях, но уязвимый перед атаками. Используйте меры защиты, чтобы избежать утечки информации !