Если хакер запустит снифер (к примеру, Wireshark) в локальной сети, то ничего интересного, кроме своих бродкастов и прочей служебной информации, он не увидит. Поэтому для перехвата трафика обычно используются слабости самого протокола ARP. Разберемся, как можно компенсировать их.
Протокол ARP используется для преобразования IP-адреса в MAC-адрес. Исторически ARP не имеет никакой защиты или хотя бы проверки подлинности запросов. Повторю: совсем никакой! А еще возможна отправка ARP-ответов без ARP-запросов — это так называемый gratuitous ARP. Он-то нас и интересует. Чтобы провернуть подобную схему, можно воспользоваться тулзой Cain & Abel. Думаю, ты о ней знаешь.
С помощью Cain & Abel злоумышленник может вклиниться и перехватить трафик в одном широковещательном домене. Защититься от этой напасти можно при помощи механизма Dynamic ARP Inspection (Protection).
Для корректной работы Dynamic ARP Inspection необходимо указывать, какие порты коммутатора будут доверенными, а какие — нет. Под ненадежным портом подразумевается тот порт, к которому подключены клиенты. Для ненадежных портов выполняется ряд проверок сообщений ARP. А к доверенным портам коммутатора относятся те порты, к которым подключен другой коммутатор. Сообщения протокола ARP, полученные с доверенных портов, не отбрасываются.
Коммутатор перехватывает все ARP-запросы и ARP-ответы на ненадежных портах, прежде чем перенаправлять их. Также на ненадежных портах коммутатор проверяет соответствие MAC-адреса IP-адресу.
Проверка соответствия MAC-адреса IP-адресу может выполняться на основании статических записей или базы данных привязки DHCP.
На коммутаторах Cisco этот механизм во VLAN включается командой
Switch(config)# ip arp inspection vlan 1
А вот как выглядит настройка доверенного порта:
Switch(config)# interface gigabitethernet1/0/1
Switch(config-if)# ip arp inspection trust
Если у тебя нет коммутатора, способного защитить от атак подобного типа, можешь установить arpwatch: это демон, который отслеживает соответствие между IP- и MAC-адресами и при обнаружении аномалий фиксирует это в системном логе. Документацию можно глянуть вот здесь.
Как сам понимаешь, главный недостаток arpwatch, как и, в принципе, всех программ подобного рода, в том, что он должен работать на хостах, которые он защищает, или хотя бы на маршрутизаторе, ведущем в защищаемую сеть. Однако маршрутизатор не всегда работает под управлением UNIX или Linux. Чаще всего это специализированный аппаратный маршрутизатор или коммутатор третьего уровня.
Чтобы защитить такой маршрутизатор, нужно получать от него ARP-таблицу по SNMP и анализировать ее на другой машине. Так, к примеру, действует программа remarp.