Для того, что бы сделать доступной фильтрацию по MAC’y нужны 2 условия:
1)ipfw версии 2
Если у вас FreeBSD 5.X и выше, то у вас уже есть ipfw2, если же нет – тогда пересобираем ядро с опцией “options IPFW2”
2)sysctl net.link.ether.ipfw=1
ПОСЛЕ ПРИМЕНЕНИЯ ЭТОЙ СТРОКИ НА КОМПЬЮТЕРАХ МОЖЕТ ПРОПАДАТЬ ИНТЕРНЕТ, ХОТЯ ПИНГИ, ТРАССИРОВКИ ШЛИ. ТАК ЧТО ИМЕЙТЕ ВВИДУ.
Добавляем строку net.link.ether.ipfw=1 в /etc/sysctl.conf и выполняем из консоли
#sysctl net.link.ether.ipfw=1
После этого можно добавлять правила для фильтрации с MAC. Само правило выглядит так:
ipfw add {allow|deny} {all|ip|tcp|udp} from {any|host} to {any|host} MAC 00:11:22:33:44:55 mac-type {ipv4|ipv6|vlan}
Примечание.
В 11.2 исправили баг с обработкой пакетов на уровне L2. До этой версии пакеты могли не корректно обрабатываться.
Например:
#ipfw add deny all from any to any MAC src-mac 00:11:22:33:44:55 mac-type ipv4
Так же можно, вместо ipv4 использовать шестнадцатиричный эквивалент 0x0800.
Если не указывать mac-type, то будет валится сообщение
ipfw: Incorrect MAC address
так что, будьте внимательны!
А ещё хотел бы обратить внимание на это (нашёл на одном из форумов)
1. транзитный пакет проходит через фаервол 4(четыре) раза
2.
allow ip from to any
– не пропустит пакет с , пропустит например
allow ip from to any mac any
а также, если протокол построен по принципу все запрещено кроме разрешенного блокируется также широковещательный трафик arp протокола,
поэтому обычно упрощают правила с помощью признака layer2, о чем есть соответствующая запись в man ipfw
6 коментарів “ipfw и фильтрация по MAC’y”
Спасибо, очень помогло. Нигде с ходу доходчиво это не было растолковано. Мой поклон автору.
все сделал по вашей статье
после
Добавляем строку net.link.ether.ipfw=1 в /etc/sysctl.conf и выполняем из консоли
#sysctl net.link.ether.ipfw=1
пропадает доступ к серверу(((
и сразу второй вопрос
действующие правила ipfw остаются без изменений? или их надо править как-то под мак адрес?
Зависит от ваших правил и поведения по умолчанию: deny или allow
I am trying apply rule on windows 7 machine as below
1.sysctl net.link.ether.ipfw=1
2.ipfw add 100 deny tcp from any to any 443 MAC any 00:E0:1C:3C:2E:F1
But,gives below error:
ether_aton empty
ipfw: Incorrect MAC address
Please help me to resolved this error.
#sysctl net.link.ether.ipfw=1 будет полностью отключать доступ если 65535 deny ip from any to any
Чтобы всё работало надо пересобирать ядро и вместо deny ставить allow
65535 allow ip from any to any
Нет разницы как собрано ядро: данная опция просто включает работу с MAC-адресами в ipfw