FreeBSD5.2.1
Хочу чтобы машина поменяв IP не могла пройти через ipfw
Статьи типа http://www.opennet.me/base/net/arp_filter.txt.html
не предлагайте
больно муторно все свободные ip в pub загонятьПишу к примеру
ipfw add 120 deny mac src-mac 00:0e:a6:45:0b:d4 not src-ip 192.168.50.250получаем..
deny ip from any to any MAC any 00:0e:a6:45:0b:d4 not src-ip 192.168.50.250
Меняем адрес с 192.168.50.250 на 192.168.50.251
и... по барабану машина проходит через ipfwПробуем по другому
ipfw add 120 deny all from 192.168.50.250 to any mac src-mac 00:0e:a6:45:0b:d4
получаем
00120 deny ip from 192.168.50.250 MAC any 00:0e:a6:45:0b:d4 anyэффект тот-же
чувствую что по логике не врубаюсь
plz окажите содействие
никогда не думал что буду так отвечать
man arp
>никогда не думал что буду так отвечать
>man arpЯ же писал что мне надо привязку сделать через IPFW
arp -f file это и ежу понятно
через ipfw знаешь как?
>>никогда не думал что буду так отвечать
>>man arp
>
>Я же писал что мне надо привязку сделать через IPFW
>arp -f file это и ежу понятно
>через ipfw знаешь как?
Товарищи!!!
есть какое-нибудь предложение?
>>>никогда не думал что буду так отвечать
>>>man arp
>>
>>Я же писал что мне надо привязку сделать через IPFW
>>arp -f file это и ежу понятно
>>через ipfw знаешь как?
>
>
>Товарищи!!!
>есть какое-нибудь предложение?несомненно -- читать man'ы внимательнее:
"...
net.link.ether.ipfw: 0
Controls whether layer-2 packets are passed to ipfw. Default is
no.
..."/poige
--
http://www.i.morning.ru/~poige/
насколько я понимаю формат такой
ipfw add allow from ip_src to ip_dst MAC dst_mac src_mac
давай отсюда и до... плясать.Дай ipfw l
Привязка к MAC-адресам - такое же бесперспективное занятие, как и привязка к IP-номерам и NetBIOS-именам, ибо всё это легко подделывается на стороне клиента. Если нужна надёжная защита - используй PPPoE или др.VPN.
>Привязка к MAC-адресам - такое же бесперспективное занятие, как и привязка к
>IP-номерам и NetBIOS-именам, ибо всё это легко подделывается на стороне клиента.
>Если нужна надёжная защита - используй PPPoE или др.VPN.Я с тобой согласен можно использовать VPN,
управляемые switch, авторизацию в squid и т.д.
К сожалению все это мне не очень подходит
На самом деле нужно просто контролировать 3-х лоботрясов
чтобы не меняли IP
Чтобы поменять MAC у них мозгов не хватит>насколько я понимаю формат такой
>ipfw add allow from ip_src to ip_dst MAC dst_mac src_mac
>давай отсюда и до... плясать.
>Дай ipfw lipfw add allow from ip_src to ip_dst MAC dst_mac src_mac
пишем
ipfw add 90 deny all from 192.168.50.250 to 192.168.50.211 mac dst-mac 00:a9:40:0f:9c:4f mac src-mac 00:0e:a6:45:0b:d4
Получаем
00090 0 0 deny ip from 192.168.50.250 to 192.168.50.211 MAC any 00:a9:40:0f:9c:4f MAC any 00:0e:a6:45:0b:d4
Правило стоит самым первым....
все равно проходит через фаерволПойду смотреть layer
deny ip from 192.168.50.250 to 192.168.50.211 MAC any 00:a9:40:0f:9c:4f MAC any 00:0e:a6:45:0b:d4адреса 192.168.50.250 и 192.168.50.211 в разных сетях и между ними рассматриваемый фаервол?
>>Привязка к MAC-адресам - такое же бесперспективное занятие, как и привязка к
>>IP-номерам и NetBIOS-именам, ибо всё это легко подделывается на стороне клиента.
>>Если нужна надёжная защита - используй PPPoE или др.VPN.
>
>Я с тобой согласен можно использовать VPN,
>управляемые switch, авторизацию в squid и т.д.
>К сожалению все это мне не очень подходит
>На самом деле нужно просто контролировать 3-х лоботрясов
>чтобы не меняли IP
>Чтобы поменять MAC у них мозгов не хватит
>
>>насколько я понимаю формат такой
>>ipfw add allow from ip_src to ip_dst MAC dst_mac src_mac
>>давай отсюда и до... плясать.
>>Дай ipfw l
>
>ipfw add allow from ip_src to ip_dst MAC dst_mac src_mac
>
>пишем
>ipfw add 90 deny all from 192.168.50.250 to 192.168.50.211 mac dst-mac 00:a9:40:0f:9c:4f
>mac src-mac 00:0e:a6:45:0b:d4
>Получаем
>00090 0
> 0 deny ip from 192.168.50.250 to 192.168.50.211 MAC any
>00:a9:40:0f:9c:4f MAC any 00:0e:a6:45:0b:d4
>Правило стоит самым первым....
>все равно проходит через фаервол
>
>Пойду смотреть layerВсе получилось всем спасибо.
Отдельная благоданость poige за пинок в нужном направлении
каюсь невнимательно вникал в mannet.link.ether.ipfw: 1
потом
ipfw add 100 deny all from 192.168.50.204 to 192.168.50.211 mac src-mac 00:0e:a6:45:0b:d4
и все работает!!!!!!!
>deny ip from 192.168.50.250 to 192.168.50.211 MAC any 00:a9:40:0f:9c:4f >MAC any 00:0e:a6:45:0b:d4
>адреса 192.168.50.250 и 192.168.50.211 в разных сетях и между ними >рассматриваемый фаервол?192.168.50.250 машина лоботряса
192.168.50.211 gateway ( временный ip ) там же squid
суть вот в чем
Пользователи разбиты на группы в squidGuard
Лоботрясы страстные любители video mp3 porno
соответственно доступ жестко ограничен.
выходят они только со своих машин когда другие не работают ( выходные )
Меняют ip ( пример на бухгалтерские ) и попадают в другую группу. Полностью забить всю порнуху,
как ты понимаешь, невозможно.
Смотрю сводку sarg оказывается что бухгалтер просмотрела 200mb порнухи
за выходные. Не пойман не вор.
Сейчас сделаю что если поменяют ip то хрен они пройдут через ipfw
вот и все.
>Меняют ip ( пример на бухгалтерские ) и попадают в другую группу.
>Смотрю сводку sarg оказывается что бухгалтер просмотрела 200mb порнухи
>за выходные. Не пойман не вор.Были у нас шибко умные охранники, которые по ночам с буховских машин в инет ломились. Отключил сервак, показал ночные логи главбуху, и провел причинно-следственную связь. Как щас помню, было закрытие 4-го квартала. Умников уволили за 2 часа с вычетом материального ущерба из зп.
Если хочется технически, то прокси с авторизацией и ограничение выхода в инет рабочими часами полностью решает проблему.
>Если хочется технически, то прокси с авторизацией и ограничение выхода в инет
>рабочими часами полностью решает проблему.Точно. И еще административно дать рекомендацию - не ставить галочку сохранения пароля, с обьяснениями почему. Работает на ура.
Моя радость по поводу решения данной проблемки
оказалась несколько преждевременнойитого что сделал
alk# sysctl net.link.ether.ipfw=1sysctl.conf
net.link.ether.ipfw=1ipfw
${ipfw} add allow all from 192.168.50.250 to 192.168.50.211 mac src-mac 00:0e:a6:45:0b:d4 in via fxp0
${ipfw} add deny all from ${my_net} to 192.168.50.211 mac src-mac 00:0e:a6:45:0b:d4 in via fxp0где src-mac это mac 192.168.50.250
fxp0 -смотрит в local
Теперь при изменении IP 192.168.50.250 на любой другой клиента ждет
разочарованиеНО...
через 1 час работы затыкается ( вроде как ) интерфейс
смотрящий в инет fxp1схема
local -- fxp0--FreeBSD5.2.1-fxp1 --- inet
tcpdump -i fxp1 показывает пустоту
ping во внутреннюю сетку с fxp0 ( 192.168.50.211) идет без проблем
после перезагрузки машины эффект тот жеделаем
sysctl net.link.ether.ipfw=0
не помогаетзакомментарил net.link.ether.ipfw=1 в sysctl.conf
перегружаем.... все работаетЧТО надо посмотреть в системе чтобы оценить что происходит?
>Моя радость по поводу решения данной проблемки
>оказалась несколько преждевременнойНе городи огород. Запрети любой выход в инет после окончания рабочего дня.
>>Моя радость по поводу решения данной проблемки
>>оказалась несколько преждевременной
>
>Не городи огород. Запрети любой выход в инет после окончания рабочего дня.
>Уже так и сделал
однако хочется знать почему глючит?
когда-нибудь, я думаю, пригодится
>>>Моя радость по поводу решения данной проблемки
>>>оказалась несколько преждевременной
>>
>>Не городи огород. Запрети любой выход в инет после окончания рабочего дня.
>>
>
>Уже так и сделал
>однако хочется знать почему глючит?
>когда-нибудь, я думаю, пригодитсякриво настроил, вот и глючит.
такое не пригодится, проще pptp организовать.
>криво настроил, вот и глючит.
>такое не пригодится, проще pptp организовать.Криво настроил... по кокнкретнее можно?
Все получилось
итак...IP= 192.168.50.33 mac 00:0e:a6:45:0b:d4
адрес нашего любителя менять IPsysctl.conf
net.link.ether.ipfw=1ipfw
${ipfw} 10 add skipto 40 ip from 192.168.50.33 to any layer2 in via fxp0
${ipfw} 11 add skipto 100 ip from any to any not layer2
${ipfw} 20 add deny ip from ${my_net} to any mac src-mac 00:0e:a6:45:0b:d4 in via fxp0
любой IP из сети my_net с src-mac принадлежащий 192.168.50.33 > deny
${ipfw} 40 add allow ip from any to any MAC any anyрезультат
00010 114 26193 skipto 40 ip from 192.168.50.33 to any layer2 in via fxp0
00011 817 207757 skipto 100 ip from any to any not layer2
00020 6 654 deny ip from 192.168.50.0/24 MAC any 00:0e:a6:45:0b:d4 any in via fxp0
00040 703 195885 allow ip from any to any MAC any anyвсе остальные правила ipfw
Работает эта схема с понедельника
можно еще сделать fwd на squid
Можешь статейку нарисовать.
>Можешь статейку нарисовать.Ага! и меня запинают ногами на предмет
что это не решает проблемы... ставь упр switch и т.д.
управляемый коммутатор закрепляет мак
не стесняйся
>управляемый коммутатор закрепляет мак
>не стесняйся
Не мог бы пояснить поподробнее свои правила. Я что-то никак врубится не могу.
Мне нужно в правилах открывающий инет для каждого пользователя ставить его IP. Вот тоже наткнулся на тот эффект, что пакеты стали пропадать. Видать я не понимаю логику фильтрации с Laer2. Если тебе удалось ее постич - поделись плиз.
ОпечаткаНе мог бы пояснить поподробнее свои правила. Я что-то никак врубится не
могу.
Мне нужно в правилах открывающий инет для каждого пользователя ставить его MAC.
Вот тоже наткнулся на тот эффект, что пакеты стали пропадать. Видать
я не понимаю логику фильтрации с Laer2. Если тебе удалось ее
постич - поделись плиз.
>Опечатка
>
>Не мог бы пояснить поподробнее свои правила. Я что-то никак врубится не
>
>могу.
>Мне нужно в правилах открывающий инет для каждого пользователя ставить его MAC.
>
>Вот тоже наткнулся на тот эффект, что пакеты стали пропадать. Видать
>я не понимаю логику фильтрации с Laer2. Если тебе удалось ее
>постич - поделись плиз.покажи ipfw sh
а то я что-то не совсем понял суть вопроса
Список здоровый но суть такая. Сервер работает как шлюз для локальной сети. В локальной сети как "серые" так и нормальные IP.
Сначало идут некоторые запрещающие правила
Потом диверт:
${fwcmd} add 450 divert natd all from any to any via ${natd_interface}
Потом правила которые регулируют доступ к сервисам этого сервиса.
Потом уже включаются правила правила для каждого ip в этой сети:
${fwcmd} add 6000 pass all from 192.168.10.1 to any
${fwcmd} add 6001 pass all from any to 192.168.10.1
...Хочу в правилах для клиентов использовать и их MAC. Когда попытался сделать, то наткнулся на такое же поведение как и у тебя в первой попытке. Пакеты начали терятся и трафик перестал идти, поэтому откатился назад. Вот и хочется понять идеологию.
>>Опечатка
>>
>>Не мог бы пояснить поподробнее свои правила. Я что-то никак врубится не
>>
>>могу.
>>Мне нужно в правилах открывающий инет для каждого пользователя ставить его MAC.
>>
>>Вот тоже наткнулся на тот эффект, что пакеты стали пропадать. Видать
>>я не понимаю логику фильтрации с Laer2. Если тебе удалось ее
>>постич - поделись плиз.
>
>покажи ipfw sh
>а то я что-то не совсем понял суть вопроса
Ставишь HTTP-Proxy (Squid) и на нём запрещаешь конкретно доступ к MP3. А ipfw нужен для того, чтобы закрыть прямой доступ (минуя HTTP-Proxy).
Вот несколько ссылок
1. http://news.gw.com/freebsd.isp/9412
2.http://www.m0n0.ch/wall/list/?action=show_msg&actionargs...
3. http://bsdsearch.com/eao/phorum/read.php?f=38&i=2977&t=2977man ipfw
“Всегда используется Законченный набор правил, НЕЗАВИСИМО от МЕСТА, из
которого вызван ipfw, или адреса-источника пакета. Если правило содержит
некоторые образцы соответствия или действия, которые НЕ ДОПУСТИМЫ для
МЕСТА вызова (например, требующие соответствия MAC заголовка, если ipfw
вызывают из ip_input ()), образец соответствия НЕ БУДЕТ соответствовать.
Однако оператор not перед такими образцами заставит образец ВСЕГДА
соответствовать на тех пакетах, которые могли бы вызвать нежелательные
результаты. ( 3 ссылка) Таким образом, на ответственности программиста в случае
необходимости записывать подходящий набор правил для ДИФФЕРЕНЦИРОВАНИЯ
среди возможных мест. Здесь может быть полезно правило skipto”Идеология ( как я ее понял )
если net.link.ether.ipfw=1
то необходимо писать правила layer2(MAC) для ВСЕХ сетевых интерфейсов
и они должны быть дифференцированы относительно
обычных правил ipfw ( skipto) Хотя это и не обязательно – можно и так извернутьсяТаким образом в ipfw должен быть определен набор правил allow, deny для уровня layer2 ( MAC) при этом ПОСЛЕДНЕЕ правило в наборе где идет проверка MAC должно быть
Allow(deny) ip from any to any MAC any any
или
allow(deny) ip from any to any layer2 via xxxДопустим у нас есть три интерфейса fxp0 rl0 и xl0
Мы хотим cделать проверку layer2(MAC) на fxp0 а на других интрефейсах
Нам этого не надо.
1.Вариант
allow ip from any to any layer2 via rl0
allow ip from any to any layer2 via xl0
правила для fxp0
……
Deny mac
Deny mac-type
allow ip from any to any layer2 via fxp02. Вариант
равнозначное правило
allow ip from any to any layer2 not via fxp0
правила для fxp0
……
Deny mac
Deny mac-type
allow ip from any to any layer2 via fxp0здесь есть много вариантов, например
пропускать через fxp только заданные MAC IP и т.д.
почитай ссылкампример из http://www.m0n0.ch/wall/list/?action=show_msg&actionargs...
20002 deny ip from 192.168.8.2 not MAC any 00:0c:f1:08:97:48 any layer2 in
20002 deny ip from any to 192.168.8.2 not MAC 00:0c:f1:08:97:48 any layer2 out
29900 allow ip from any to any layer2
……..В твоем случае это может выглядеть так
Ip 192.168.50.250 его MAC 00:0e:a6:45:0b:d4
${ipfw} add allow all from 192.168.50.250 to any mac src-mac 00:0e:a6:45:0b:d4 via fxp0
…..
${ipfw} add deny all from any to any layer2 via fxp0
Т.е через fxp0 пройдут только указанные ip с указанным src-macНо, еще раз повторюсь, если у тебя есть другие интерфейсы и ты для них не указал
Разрешающие правила на уровне layer2 то нас ждет облом ( причем не сразу,
Как ты уже заметил, а через некоторое время)Сейчас подробно разберу работу моих правил
Задача:
Если user vasy с IP 192.168.50.33 и MAC 00:0e:a6:45:0b:d4 изменит свой IP
на ЛЮБОЙ другой >> deny ipfwСтарый набор правил
${ipfw} 10 add skipto 40 ip from 192.168.50.33 to any layer2 in via fxp0
${ipfw} 11 add skipto 100 ip from any to any not layer2
${ipfw} 20 add deny ip from ${my_net} to any mac src-mac 00:0e:a6:45:0b:d4 in via fxp0
${ipfw} 40 add allow ip from any to any MAC any anyНовый набор правил более оптимизированный ( работает со вчерашнего вечера )
Его и рассмотрим${ipfw} 1 add skipto 100 ip from any to any not layer2
${ipfw} 5 add allow ip from any to any layer2 not via fxp0
${ipfw} 10 add skipto 40 ip from 192.168.50.33 to any layer2 in via fxp0
${ipfw} 20 add deny ip from ${my_net} to any mac src-mac 00:0e:a6:45:0b:d4 in via fxp0
${ipfw} 40 add allow ip from any to any layer2 via fxp0
Fxp0 внутренний интерфейс локальной сети ( остальные fxp1, fxp2 )
My_net = 192.168.50.0/24
to upper layers V
| |
+----------->-----------+
^ V
2 [ip_input] [ip_output] 3 net.inet.ip.fw.enable=1
| |
^ V
1 [ether_demux] [ether_output_frame] 4 net.link.ether.ipfw=1
| |
0 +-->--[bdg_forward]-->--+ 0 net.link.ether.bridge_ipfw=1
^ V
| to devices |Если net.link.ether.ipfw=0 то пункты 1,4 ipfw не проверяет
Если net.link.ether.ipfw=1 то 1,2,3,4${ipfw} 1 add skipto 100 ip from any to any not layer2
${ipfw} 5 add allow ip from any to any layer2 not via fxp0
${ipfw} 10 add skipto 40 ip from 192.168.50.33 to any layer2 in via fxp0
${ipfw} 20 add deny ip from ${my_net} to any mac src-mac 00:0e:a6:45:0b:d4 in via fxp0
${ipfw} 40 add allow ip from any to any layer2 via fxp0Итак прибегает пакет IP 192.168.50.1 на fxp0 ( см. пункт 1 )
1. правило 1 “ перейти на правило 100 если пакет не принадлежит layer2”
Результат:
Пакет еще на пункте 1 стоит поэтому это правило не сработает.
2. правило 5 “ разрешить все пакеты layer2 на всех интерфейсах за
исключением fx
Блин не влезло все${ipfw} 1 add skipto 100 ip from any to any not layer2
${ipfw} 5 add allow ip from any to any layer2 not via fxp0
${ipfw} 10 add skipto 40 ip from 192.168.50.33 to any layer2 in via fxp0
${ipfw} 20 add deny ip from ${my_net} to any mac src-mac 00:0e:a6:45:0b:d4 in via fxp0
${ipfw} 40 add allow ip from any to any layer2 via fxp0Итак прибегает пакет IP 192.168.50.1 на fxp0 ( см. пункт 1 )
1. правило 1 “ перейти на правило 100 если пакет не принадлежит layer2”
Результат:
Пакет еще на пункте 1 стоит поэтому это правило не сработает.
2. правило 5 “ разрешить все пакеты layer2 на всех интерфейсах за
исключением fxp0”
Результат:
Пакет как раз и пришел на fxp0: правило не сработает
3. правило 10 “ перейти на правило 40 если IP 192.1668.50.33 in via fxp0”
Результат:
У нас пакет с другим IP правило не сработает
4. правило 20 “deny IP с МАС адресом таким-то”
Результат:
У нас другой src-mac поэтому правило не сработает
5. Правило 40 “ Разрешить все пакеты layer2 ( т.е. пункт1) на интрфейсе fxp0
Результат:
В яблочко!!! Правило сработало теперь пакет перешел на пункт 2 ( см. картинку)
6. пакет опять вводится в ipfw
7. правило 1 “ перейти на правило 100 если пакет не принадлежит layer2”
Результат:
Layer2 мы уже прошли поэтому данное правило срабатывает и
Отправляет нас на правило 100 с которого начинается мой обычный ipfw
Вот такая идеология….
А теперь прогони через эти правила IP = 192.168.50.33
И, к примеру, IP=192.168.50.82 src-mac 00:0e:a6:45:0b:d4
и я надеюсь что все станет понятно
если что пишитвои правила примерно будут выглядеть так
Допустим что твой ipfw начинается с правила под номером 100
У тебя два интерфейса и фильтровать ты хочешь только fxp0
Тогда${ipfw} 10 add skipto 100 ip from any to any not layer2
${ipfw} 20add allow ip from any to any layer2 not via fxp0
Т.е. на других интерфейсах MAC фильтровать не будем
${ipfw} 30 add allow all from 192.168.50.250 to any mac src-mac 00:0e:a6:45:0b:d4 via fxp0
…..
….. пропускаем указанные IP с соответствующими MAC
…..
${ipfw} 80 add deny all from any to any layer2 via fxp0
Остальные, отсутствующие в нашем списке – могут расслабитьсяДалее идут правила начиная с номера 100
Вроде все… удачи!
Спасибо за ответ!
Вроде все понятно. Буду экспериментировать сегодня.