
Мне сказали, что интерфейс может передавать кадр независимо от того, какой MAC-адрес установила ОС для интерфейса. У меня также сложилось впечатление, что именно так и поступают виртуальные машиныхост-мост. Если это так, то что использует MAC-адрес, привязанный к интерфейсу?
Конкретно я спрашиваю о программном обеспечении MAC, а не о тех MAC, которые были записаны в ПЗУ в 70-х годах:
wlan0 Link encap:Ethernet HWaddr 00:16:ce:01:
Это строка вывода из ifconfig
, но мне сказали, что интерфейс wlan0 может передавать данные под /любым/ MAC-адресом, и этот MAC, который я вижу, вообще ничего не делает (за исключением, может быть, предоставления значения по умолчанию для некоторых библиотек). Мне сказали, что с хост-мостовой связью виртуальной машины это будет использоваться и передавать данные на произвольном количестве IP-адресов, но на этом все не заканчивается, точка доступа фактически позволит вам назначить уникальный IP-адрес каждой из этих виртуальных машин, потому что точка доступа будет получать запросы на разных MAC-адресах.
- Есть ли у вас какие-либо специальные разрешения (Linux) для создания пакета с «виртуального» MAC-адреса?
- Если MAC-адрес — это то, с помощью чего маршрутизатор отслеживает, какой интерфейс и какой IP-адрес имеет хост, то как запретить одному хосту запрашивать все IP-адреса у виртуальных интерфейсов?
- Как запретить пользователям использовать виртуальные MAC-адреса?
- Требуется ли для этого специальная опция в ядре или часть для встраивания в сетевой стек?
решение1
MAC-адреса организованы и стандартизированы IEEE. Каждое устройство, подключающееся к сети Ethernet, имеет уникальный MAC-адрес, который ему назначается, таким образом, любые два устройства могут находиться в одной сети и общаться без проблем. Это не означает, что ОС не может выбрать, какой MAC-адрес использовать, например, для мониторинга или подмены трафика. Много чего почитатьздесь
В ответ на вопросы ниже
- С правами root вы можете делать все, что захотите (в принципе). Есть два способа отправить пакет с пользовательским MAC-адресом: во-первых, изменить MAC-адрес на интерфейсе с помощью команды ifconfig, это повлияет на весь трафик в системе; во-вторых, самостоятельно сформировать пакеты и записать их напрямую в интерфейс с помощью специального кода. Например, nmap использует этот метод, когда вы указываете ему сканировать порты с другим исходным MAC-адресом.
- (и 3) Вы этого не делаете. Если бы злонамеренный хост был в вашей сети и решил перехватить MAC-адреса, у вас могли бы возникнуть серьезные проблемы. Это одна из причин, по которой важно защищать вашу локальную сеть и иметь строгие политики контроля доступа. В моей компании наши настольные коммутаторы локальной сети настроены таким образом, что каждый порт узнает MAC-адрес компьютера, который к нему подключен, и если этот адрес меняется, порт отключается, также отключаются все неиспользуемые порты. Эта политика была внедрена после того, как ночью сотрудник службы безопасности попытался подключить свой ноутбук, который был настроен со статическим IP-адресом, таким же, как у одного из наших серверов, и вызвал множество проблем. Ограничив каждый порт одним MAC-адресом, мы теперь можем предотвратить (в основном) это. Только если кто-то знал, что нужно изменить свой MAC-адрес на адрес компьютера, который уже подключен, он мог бы войти в нашу сеть, что крайне маловероятно. Кроме того, что касается запроса всех IP-адресов для всех MAC-адресов, ваш коммутатор постоянно обновляет свою таблицу MAC-адресов, поэтому, как только действительный хост отправляет новый пакет, таблица обновляется с правильным портом. Однако если бы злоумышленник постоянно отравлял сеть искаженными пакетами, вы бы мало что могли сделать.