5.1. Общие сведения о ARP Spoofing
Протокол ARP отвечает за сопоставление IP-адреса с MAC-адресом. Весь процесс сопоставления заключается в том, что хост отправляет пакет, содержащий информацию о требуемом IP-адресе, широковещательно. Другой хост, которому принадлежит требуемый IP-адрес, отправляет в ответ пакет, содержащий свой IP-адрес и MAC-адрес. Таким образом два хоста могут обмениваться информацией друг с другом на основе MAC-адреса.
Для сокращения количества ARP-пакетов в сети, протокол ARP спроектирован таким образом, что даже если хост не запрашивал ARP другого хоста, при получении такого пакета он внесет запись в свою таблицу. Поэтому существует возможность подделки ARP-пакета (ARP Spoofing). Когда злоумышленник хочет перехватить трафик между двумя хостами, он отправляет ARP-ответы на оба этих хоста по отдельности, заставляя их принимать свой MAC-адрес за MAC-адреса друг-друга. Таким образом трафик от одного хоста к другом фактически будет передаваться через хост злоумышленника, что позволяет ему не только прочитать необходимую информацию, но и модифицировать пакеты данных на свое усмотрение для последующей передачи.
5.1.1. Отключение обновления без запроса (arp-security)
Основным методом предотвращения ARP Spoofing в сетях является отключение на коммутаторе возможность автоматического обновления ARP. После этого злоумышленник не сможет изменить MAC-адрес в ARP-таблице. В то же время это не прерывает функцию автоматического обучения ARP. Таким образом, это в значительной степени предотвращает возможность подмены ARP.
5.1.2. ARP Guard
Существует также вероятность подмены злоумышленником адреса шлюза или коммутатора - в этом случае кроме перехвата трафика данных, существует также опасность отказа всей сети из-за передачи трафика не по назначению. Для предотвращения подмены адреса шлюза, возможно использовать функцию ARP Guard. При получении на порт ARP-ответа с source адресом, указанным в ARP-Guard, это пакет будет расценен как вредоносный и отброшен.
5.1.3. Рассылка ARP коммутатором без запроса (Gratuitous ARP)
Еще одним из способов предотвращения подмены ARP коммутатора (или шлюза) является периодическая рассылка коммутатором ARP-ответов без запроса (функция Gratuitous ARP). С одной стороны это позволяет предотвратить акату, так как хосты периодически будут обновлять свои ARP-таблицы и вероятность подмены будет низка. С другой стороны это позволит уменьшить количество исходящего трафика от хостов, так как не будет необходимости отправлять ARP-запрос шлюзу для обновления ARP-таблицы.
5.2. Настройка функции предотвращения ARP Spoofing
Отключить автоматическое обновления ARP;
Отключить автоматическое обучение ARP;
Конвертировать динамические ARP в статические;
Настроить защищенный IP-адрес для arp-guard;
Настроить Gratuitous ARP;
Просмотреть конфигурацию Gratuitous ARP.
Отключить автоматическое обновления ARP:
Команда | Описание |
---|---|
ip arp-security updateprotect no ip arp-security updateprotect ! В режиме глобальной конфигурации и в режиме конфигурирования интерфейса | Выключить автоматическое обновление ARP Включить автоматическое обновление ARP |
2. Отключить автоматическое обучение ARP:
Команда | Описание |
---|---|
ip arp-security learnprotect no ip arp-security learnprotect ! В режиме глобальной конфигурации и в режиме конфигурирования интерфейса | Выключить автоматическое обучение ARP Включить автоматическое обучение ARP |
3. Конвертировать динамические ARP в статические:
Команда | Описание |
---|---|
ip arp-security convert ! В режиме глобальной конфигурации и в режиме конфигурирования интерфейса | Конвертировать динамические ARP в статические ARP |
4. Настроить защищенный IP-адрес для arp-guard
Команда | Описание |
---|---|
arp-guard ip <addr> no arp-guard ip <addr> ! В режиме конфигурирования интерфейса | Добавить ARP Guard адрес Удалить ARP Guard адрес |
5. Настроить Gratuitous ARP.
Команда | Описание |
---|---|
ip gratuituous-arp <5-200> no ip gratuituous-arp ! В режиме глобальной конфигурации или в режиме конфигурирования интерфейса | Включить функцию gratuitious ARP и задать интервал отправки сообщений ARP <5-200> в секундах. Отключить функцию gratuitious ARP |
6. Просмотреть конфигурацию Gratuitous ARP.
Команда | Описание |
---|---|
show ip gratuituous-arp [interface vlan <1-4094>] no show ip gratuituous-arp ! В привилегированном режиме | Добавить ARP-Guard адрес Удалить ARP-Guard адрес |
5.3. Пример использования функции предотвращения ARP Spoofing
Рисунок 37.1 - Пример топологии для использования функции предотвращения ARP spoofing.
Оборудование | Конфигурация | Кол-во |
Коммутатор | IP:192.168.2.4; mac: 00-00-00-00-00-04 | 1 |
Хост А | IP:192.168.2.1; mac: 00-00-00-00-00-01 | 2 |
Хост B | IP:192.168.1.2; mac: 00-00-00-00-00-02 | 3 |
Хост C | IP:192.168.2.3; mac: 00-00-00-00-00-03 | несколько |
На рисунке 37.1 связь установлена между хостами B и C. Хост A хочет, чтобы коммутатор направлял ему пакеты, отправленные хостом B. В первую очередь Хост A отправляет пакет ARP-ответа на коммутатор в формате 192.168.2.3, 00-00-00-00-00-01, сопоставляя его MAC-адрес c IP-адресом хоста С. Коммутатор обновляет таблицу ARP и начинает отправлять пакеты для 192.168.2.3 на MAC-адрес 00-00-00-00-00-01 (адрес хоста A).
В дальнейшем хост А пересылает принятые пакеты хосту С, заменив адрес источника и адрес назначения. Так как ARP таблица обновляется, хост A должен непрерывно отправлять ARP-ответы с подмененным адресом на коммутатор.
Поэтому необходимо настроить запрещение изучения ARP в стабильной сети, а затем заменить динамические ARP-записи на статические. В результате выученные ARP не будут обновляться и будут защищены.
Switch#config Switch(config)#interface vlan 1 Switch(config-if-vlan1)#arp 192.168.2.1 00-00-00-00-00-01 interface ethernet 1/0/1 Switch(config-if-vlan1)#arp 192.168.2.2 00-00-00-00-00-02 interface ethernet 1/0/2 Switch(config-if-vlan1)#arp 192.168.2.3 00-00-00-00-00-03 interface ethernet 1/0/3 Switch(Config-If-Vlan3)#exit Switch(Config)#ip arp-security learnprotect Switch(Config)# Switch(config)#ip arp-security convert
Если топология и конфигурация сети меняется, необходимо запретить обновления ARP: как только запись в ARP таблицу будет добавлена, она не может быть обновлена новым ARP-ответом.
Switch#config Switch(config)#ip arp-security updateprotect
Для защиты от подмены адреса коммутатора необходимо настроить ARP Guard и Gratuitous ARP:
Switch#config Switch(config)#int eth 1/0/1-3 Switch(config-if-port-range)#arp-guard ip 192.168.2.4 Switch(config-if-port-range)#exit Switch(config)#interface vlan 1 Switch(config-if-vlan1)#ip gratuitous-arp 5