Введение в протокол ARP

Тема в разделе "Сетевое администрирование", создана пользователем Stella, 21 июл 2017.

  1. Stella

    Статус:
    Вне сети
    Сообщения:
    159
    Симпатии:
    137
    Привет. Думаю многие из вас слышали о таком виде атаки, как ARP-poisoning (или ARP-spoofing). Тип наименования не имеет значения, так как по сути принцип один и тот же. Некоторые, возможно, даже выполняли такую атаку на практике. В общем-то тема стара как стек TCP/IP, по этому ни о чём, выходящим за рамки, я вам не поведаю, более того, я и саму атаку сегодня, во всяком случае, освещать не буду. Мы поговорим именно о принципе работе ARP или что это такое и с чем его едят? Это необходимо по той простой причине, что, в отличии от полоумных школьников, которые кликают на кнопки, следуя за гайдом, вы должны понимать и знать каждый кусочек работы данной технологии: её слабые и сильные стороны, её уязвимости, принцип работы и возможность применения в том или ином направлении. Именно отталкиваясь от такого подхода, можно достичь значительных результатов. Да и полезно это будет различным профессиям, которые связаны с IT в той или иной сфере. Хотя ума не приложу, как вы там работаете админом и не выкупаете, что такое ARP. Ну да ладно, хватит "филасафских" рассуждений от ахуевшего пездюка. Лучше учитесь, а то будете как @Stella, вы вообще читали статьи этого человека? Да? Не свезло вам. Ну да ладно, поехали.

    Address Resolution Protocol
    – протокол, предназначенный для определения IP-адресов на сетевом уровне, посредством использования MAC-адресов – адресов сети Ethernet на канальном уровне. Как-то невнятно и размыто, да? Лады, смотрите. У любого устройства есть как сетевой адрес (IP-адрес), так и канальный адрес (MAC-адрес). А не буду сильно вдаваться в детали, так как это отдельная тема, но любая локальная сеть в одном домене работает на втором уровне модели OSI (то бишь на канальном). IP-адресами там и не пахнет, более того, они туда и попасть не могут, так как располагаются на третьем уровне модели OSI. Но когда у вас образуется несколько доменов с разными IP-адресами, то канальный уровень обламывается, так как это за пределами его возможностей, если так можно выразиться. Чтобы отправлять данные, узел должен использовать оба адреса. Узел должен использовать собственные МАС и IP-адреса в полях источника, а также предоставить МАС и IP-адреса для назначения. Несмотря на то, что IP-адрес назначения будет предоставлен более высоким уровнем OSI, отправляющему узлу необходим способ найти MAC-адрес назначения для данного канала Ethernet. В этом заключается принцип протокола ARP. В своей работе ARP полагается на конкретные типы широковещательных и одноадресных сообщений Ethernet, которые также называются запросами и ответами ARP. Протокол ARP выполняет две основные функции: сопоставление адресов IPv4 / МАС-адресов и сохранение таблицы сопоставлений.
    • Сопоставление адресов IPv4 и МАС-адресов: Чтобы кадр можно было поместить в среду передачи данных локальной сети, ему необходим MAC-адрес назначения. Когда пакет отправляется к канальному уровню для инкапсуляции в кадре, узел обращается к таблице в его памяти, чтобы найти адрес канального уровня, который сопоставлен с IPv4-адресом назначения. Эта таблица называется таблицей ARP или кэшем ARP. Таблица ARP хранится в оперативной памяти устройства. Каждая запись или строка в таблице ARP связывает IP-адрес с MAC-адресом. Мы называем отношения между двумя значениями сопоставлением – это означает, что IP-адрес можно найти в таблице и с его помощью определить соответствующий MAC-адрес. Таблица ARP временно сохраняет (кэширует) сопоставление устройств в локальной сети. Чтобы начать процесс, узел передачи пытается определить MAC-адрес, сопоставленный с IPv4-адресом назначения. Если это сопоставление в таблице будет найдено, узел использует MAC-адрес в качестве MAC-адреса назначения в кадре, который инкапсулирует пакет IPv4.
    • Сохранение таблицы ARP: Таблица ARP сохраняется динамически. Существуют два способа, с помощью которых устройство может собирать MAC-адреса. Первый способ – мониторинг трафика, который появляется в сегменте локальной сети. Когда узел получает кадры из среды передачи данных, он может зарегистрировать IP и MAC-адреса источника в виде сопоставления в таблице ARP. По мере передачи кадров по сети устройство заполняет таблицу ARP, добавляя пары адресов. Второй способ получения пары адресов для устройства – отправка запроса ARP. Запрос ARP представляет собой широковещательную рассылку уровня 2 на все устройства в локальной сети Ethernet. Запрос ARP содержит IP-адрес узла назначения и MAC-адрес широковещательной рассылки, FFFF.FFFF.FFFF. Поскольку это широковещательная рассылка, все узлы в локальной сети Ethernet получат её и обработают содержимое. Ответ поступит от того узла, у которого IP-адрес совпадает с IP-адресом в запросе ARP. Ответ будет представлен в виде кадра одноадресной рассылки, который содержит MAC-адрес, соответствующий IP-адресу в запросе. Затем этот ответ будет использован для добавления новой записи в таблицу ARP отправляющего узла. К записям в таблице ARP добавляются временные метки – для этого используется практически такая же процедура, что и при добавлении временных меток для записей таблиц MAC-адресов в коммутаторах. Если к моменту истечения действия временной отметки устройство не получит кадр от какого-либо определённого устройства, запись для этого устройства будет удалена из таблицы ARP. Кроме того, в таблицу ARP можно добавлять статические записи сопоставления, но это выполняется не часто. Срок действия статических записей в таблице ARP не истекает со временем, поэтому их необходимо удалять вручную.
    Уж простите за такую серьезную вырезку, которая напичкана терминологией, но без этого никак. Я уверен, что остались какие-то вопросы после прочтенного, поэтому давайте на конкретном примере "на словах" разберем принцип работы. Обратите внимание на нашу тестовую среду, которую мы будем разбирать:

    [​IMG]

    PC0 – IP-address 10.0.0.1
    PC1 – IP-address 10.0.0.10
    PC2 – IP-address 10.0.0.100

    На данный момент, что таблица MAC-адресов, что таблица ARP-адресов пустуют, так как ни один из компьютеров ещё не посылал никаких пакетов. Так вот, мы, зайдя на PC0 решили отправить пакет на PC1. Как будет вести себя узел, когда ему необходимо создать кадр, а таблица ARP пустая? Он отправит ARP запрос. То бишь, если запись не будет обнаружена, инкапсуляция IP пакета в кадр Ethernet не будет возможной, поэтому отправляется ARP сообщение (запрос), чтобы найти MAC-адрес устройства назначения в локальной сети. Если устройство, получившее этот запрос, имеет IP-адрес назначения, оно отправляет ответ ARP. Итак, как это выглядит наглядно? PC0 отправляет сообщение по широковещательному адресу (то бишь всем в рамках одной локальной сети) и говорит: Компьютер с IP адресом 10.0.0.10, сообщи, пожалуйста, свой MAC-адрес компьютеру с таким-то MAC-адресом (имеется ввиду наш MAC-адрес, то есть мы просим, чтобы он сообщил нам свои данные, а в качестве адреса назначения мы оставляем свои данные). Это как при потере паспорта. Кто-то пишет в группе, что он ищет человека, который потерял паспорт и просит, чтобы тот написал свой номер телефона на такую-то почту, которая нам принадлежит и мы её ему предоставили ему. После такой процедуры PC1 отправит ARP-ответ, где будут содержаться все необходимые нам данные. Причем, если запрос был широковещательным (то есть отправлялся на все доступные устройства), то ответ является одноадресным (то есть данные отправляются сугубо на PC0). В таблицу ARP добавляется сопоставление. Теперь пакеты для этого адреса IPv4 можно инкапсулировать в кадрах. Если на запрос ARP не отвечает ни одно устройство, пакет отбрасывается, поскольку создание кадра невозможно. Информация об этом сбое инкапсуляции передаётся на верхние уровни устройства. Если устройство является промежуточным (например, маршрутизатором), верхние уровни могут отправить ответ на узел источника с ошибкой в пакете ICMPv4. И ещё. Прочие устройства, для которых этот запрос не предназначался, такое сообщение попросту отбрасывают, вот и всё.

    Стоит отметить ещё несколько моментов, касающихся протокола ARP. Но перед тем, как я это сделаю, хочу показать вам лабораторную сеть, где более-менее наглядно отображено, как это выглядит на практике:

    [​IMG]

    [​IMG]

    Смотрите. На первом изображении представлена лабораторная среда. Всё аналогично разобранному ранее варианту, только вместо компьютеров используются маршрутизаторы, но они расположены в одной канальной среде, так что это не имеет значения в данной ситуации. На втором рисунке изображена таблица. То бишь за каждым IP-адресом закреплен такой-то MAC-адрес интерфейса каждого маршрутизатора, который расположен в одной локальной среде. В данном случае, на втором рисунке изображены две подсети по той причине, что маршрутизатор находиться в одной локальной среде с прочими маршрутизаторами, а вторая локальная сеть – это компьютер, который смотрит на маршрутизатор. За каждой локальной средой есть свой интерфейс. Если бы это был коммутатор (как на самом первом рисунке), то там была бы одна подсеть. Вы тоже можете посмотреть таблицу на своём компьютере, прописав в консоли команду arp -a. Это выведет текущую таблицу ARP.

    Роль ARP в процессе удалённого обмена данными – все кадры должны быть доставлены на узел в сегменте локальной сети. Если узел назначения IPv4 находится в локальной сети, кадр будет использовать MAC-адрес данного устройства в качестве MAC-адреса назначения. Если узел назначения IPv4 не находится в локальной сети, узлу источника необходимо доставить кадр к интерфейсу маршрутизатора, который является шлюзом, или следующим переходом, используемым для достижения этого узла назначения. Исходный узел будет использовать MAC-адрес шлюза в качестве адреса назначения для кадров, которые содержат пакет IPv4, адресованный узлам в других сетях. Адрес шлюза интерфейса маршрутизатора сохраняется в IPv4-конфигурации узлов. Когда узел создаёт пакет для адресата, он сравнивает IP-адрес назначения и свой собственный IP-адрес, чтобы определить, находятся ли эти два IP-адреса в одной и той же сети уровня 3. Если узел-получатель находится в пределах другой сети, источник использует процесс ARP для определения МАС-адреса интерфейса маршрутизатора, выступающего в качестве шлюза. В случае если запись шлюза отсутствует в таблице, обычный процесс ARP отправит запрос ARP для получения MAC-адреса, связанного с IP-адресом интерфейса маршрутизатора.

    Безопасность – в некоторых случаях использование протокола ARP может представлять определённый риск для безопасности. ARP-спуфинг (так называемый «отравлением» ARP-кэша) используется злоумышленниками, чтобы с помощью фальшивых запросов ARP добавить в сеть заведомо неправильную связь с MAC-адресом. Злоумышленник фальсифицирует MAC-адрес устройства, после чего кадры могут отправляться на неправильный адрес назначения. Конфигурация статических связей ARP вручную – это один из способов предотвращения ARP-спуфинга. На некоторых устройствах можно указать допустимые MAC-адреса, и в результате доступ к сети смогут получить только указанные устройства.

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

     
    Последнее редактирование: 22 июл 2017
Похожие темы
  1. Privated
    Ответов:
    0
    Просмотров:
    343
  2. Privated
    Ответов:
    0
    Просмотров:
    345
  3. Privated
    Ответов:
    0
    Просмотров:
    356
  4. Privated
    Ответов:
    0
    Просмотров:
    661
  5. Privated
    Ответов:
    0
    Просмотров:
    984
Загрузка...