В общем имеется сервер на платформе freeBSD 8.0!
Сервер выполняет функцию роутера + на нём ещё висит verlihub и прочие атрибутики сети,
нужные современным студентам) Сервак стоит в общежитии и организует сеть на 2 общежития!
На сервере 3 интерфейса:
Первые 2 интерфейса em0 192.168.132(3).0/24
em1 192.168.130(1).0/24
А вот 3-й em2 192.168.129.2/24 идёт на роутер cisco, расположенный в университете,
и вот собственно управление университета заставляет сделать жёсткое привязку к мак адресу
клиента уникального IP адреса, тем самым исключить проникновение в сеть левых компьютеров!
В сети около 700 пользователей! И вот на каждый мак адрес нужно повесить IP адрес!
На сервере стоит dhcpd-server и раздаёт IP адреса, сроком на 4 месяца в рандомном порядке,
т.е. если даже поставить статический IP адрес, можно будет спокойно пользоваться всеми услугами сети!
Народ! Расскажите плз, начну я в конфиге dhcpd сервера писать маки и присваивать им IP
адреса, а вот как отключить раздачу IP адресов тем, которых нету в этом конфиге,
т.е. чтобы dhcpd сервер читал только эти маки??
Чтобы , когда кто-нибудь поставит стат. IP он не мог ничем пользоваться?
Где-то слышал что нужно добавлять правила в файерволл ipfw, но я особо толком
им пользоваться не умею, перелопатил много мануалов, был на офсайте фри, но ничего
толком и не узнал!
Расскажите плз!!
Привязка IP адреса к маку
задача не слишком сложная...
если не ошибаюсь(полгода фри не видел), то у ipfw есть параметр для мак адреса.
Тоесть если использовать ipfw+tables будет выглядеть примерно так:
ipfw add allow ip from mac table(1) to any
ipfw table(1) add aa:bb:cc:dd:11:22
не помешает костыле-скрипт который выдернет мак и соответствующий ему ип и всунет в таблицы фаервола. если необходимо открыть сеть только для соответствующих маков+ипов то следующая конструкция:
ipfw add 1000 skipto 2000 all from table(1) to any
ipfw table(1) add 192.168.0.0
ipfw add 1010 deny all from not table(1) to any
ipfw add 2000 allow all from any mac table(2) to any
повторюсь: фри не видел полгода, в синтаксисе могу ошибаться.
Начал писать вот так вот :
host myhost1
{
hardware ethernet 00:00:00:00:00:00;
fixed-address 192.168.1.2;
}
Но не в конфиге самого dhcpd сервера, а в
файлике, с именем "filter" в моей дом. папке,
вот только как к нему сделать обращение
дхцп и файерволла, т.е. строго привязать
ему видеть только из этого файлика маки
и выдавать на маки закреплённые ip адреса.
Но не в конфиге самого dhcpd сервера, а в
файлике, с именем "filter" в моей дом. папке,
вот только как к нему сделать обращение
дхцп и файерволла
в /usr/local/etc/dhcpd.conf добавить строчку:
include /home/username/file_host // где /home/username - путь к файлу. file_host файл содержащий запись вида:
host myhost1
{
hardware ethernet 00:00:00:00:00:00;
fixed-address 192.168.1.2;
}
По поводу ipfw используйте table, пример вам привили уже выше, кстати, значения table так же можно указывать в файле.
...
ipfw table 1 add /etc/ip_host
...
По поводу dhcp что бы он раздавал только тем кто в файле file_host, ЕМНИП закоментируй строчку вида: range 10.5.5.26 10.5.5.30;
с дхцп разобрался, сделал привязку в отдельном файле.
но вот с ipfw непонятно, ввожу правила все эти , выкидывает везде ошибки...
Какие правила вводите? В какой функции скрипта? Согласно Вашему скрипту, добавлять правила надо в ф-ию enable_our_network() перед разрешающими правилами. Правилам можно присвоить один и тот же номер, если нет желания ломать нумерацию правил.
По поводу dhcp что бы он раздавал только тем кто в файле file_host, ЕМНИП закоментируй строчку вида: range 10.5.5.26 10.5.5.30;
Можно и через параметр в дхцп : deny unknown-clients;
А по поводу правил пишу в скрипт:
ipfw add 05025 allow ip from mac table(1) to any
ipfw table 1 add /etc/ip_host
хотя понимаю, что неправильно делаю, не знаю какая последовательность...
с настройкой файервола у меня проблемы))))
и как сделать обращение ipfw к стороннему файлу, например к /home/user/mac_ipfw ?
Итак, у Вас есть некоторый файл (пусть это будет /home/dim_s/filter)сопоставляения мак-адресов IP-адресам для dhcpd. Вытащим из него мак-адреса в файл /etc/ip_host
[console]
grep 'hardware ethernet' /home/dim_s/filter|awk '{ print$3 }'|sed -e 's/;//' > /etc/ip_host
[/console]
Вытащил из /home/dimon/mac_dhcpd:
grep 'hardware ethernet' /home/dimon/mac_dhcpd | awk '{ print$3 }' | sed -e 's/;//' > /home/dimon/mac_ipfw В итоге, пока у меня только 5 закреплённых маков, т.к. идёт автоматическая раздача IP:
00:22:64:51:a1:51
00:21:91:f4:33:88
00:23:8B:1B:63:29
00:21:91:06:5e:27
1C:BD:B9:46:DC:00После этого что следует писать в скрипт файерволла?
Далее в Вашем rc.firewall создаём ещё функцию, пусть это будет mac_filter
mac_filter () {
${ipfw} table 2 flush
cat /home/dimon/mac_ipfw | while read mac; do
${ipfw} table 2 add ether $mac
done
${ipfw} add 4000 deny all from not 'table(2)' to any layer2
}И добавляем её в правила
start_firewall() {
${ipfw} -f flush
setup_loopback
setup_default
dhcp_enable
mac_filter
enable_our_network
setup_no_hostel3_to_hostel4
enable_host4_for_net3
counter_strike
}
start_firewall
Пришлось перерыть кучу литературы, потому как самому поэкспериментрировать негде, так что костыли будем собирать вместе. :)
Почему-то всё-равно разрешается доступ к серверу...
Вот мои правила в ipfw через ipfw show:
04000 0 0 deny ip from not table(2) to any layer2
04080 0 0 allow ip from 192.168.132.0/23 to 192.168.130.1
04090 0 0 allow ip from 192.168.130.1 to 192.168.132.0/23
04100 23 1076 allow udp from any to any dst-port 27015-27025 in
04200 0 0 allow udp from any to any dst-port 27015-27025 out
04300 0 0 allow udp from any 27015-27025 to any in
04400 0 0 allow udp from any 27015-27025 to any out
05000 196 21622 allow ip from any to any via lo0
05001 0 0 deny ip from any to 127.0.0.0/8
05002 0 0 deny ip from 127.0.0.0/8 to any
05010 0 0 allow udp from any 67 to 192.168.130.1 in via em1
05011 0 0 allow udp from 192.168.130.1 68 to any out via em1
05012 0 0 allow udp from any 67 to 192.168.132.1 in via em0
05013 0 0 allow udp from 192.168.132.1 68 to any out via em0
05020 63 5418 deny ip from 192.168.130.0/23 to 192.168.132.0/23
05021 84 8499 deny ip from 192.168.132.0/23 to 192.168.130.0/23
05030 434264 62011592 allow ip from 192.168.130.0/23 to any
05031 504056 122702692 allow ip from 192.168.132.0/23 to any
05032 935528 786553205 allow ip from 217.21.42.0/24 to any
05033 147900 159936978 allow ip from 172.31.1.0/24 to any
05034 5825 347097 allow ip from 192.168.129.0/30 to any
65535 5255 344109 allow ip from any to anyВ нём же правила читаются снизу-вверх??
правила читаются снизу-вверх??Сверху вниз.
Суть токова: dhcpd раздаёт фиксированные IP-адреса по мак-адресам 5 машинам в сети. Если какой-нибудь кульхацкер захочет подключиться к Вашей сети, IP-адреса он не получит. И даже если он пропишет своей машине статический IP-адрес, доступа он всё равно не получит, поскольку доступ открыт только 5 машинам, указанным в конфиге dhcp.
IP-адреса не раздаются, но если прописать статически - есть доступ к сети...
Ведь доступ к сети закрывает файерволл..
Может нужно перемещать скрипт после enable_our_network ???
Попробуйте изменить функцию mac_filter следующим образом
mac_filter () {
${ipfw} table 2 flush
grep 'hardware ethernet' /home/dim_s/filter|awk '{ print$3 }'|sed -e 's/;//' | while read mac; do
${ipfw} table 2 add ether $mac
done
${ipfw} add 4000 deny all from any to any mac any not 'table(2)' layer2
}
.
Правило
${ipfw} add 4000 deny all from any to any mac any not 'table(2)' layer2
при перезагрузке не добавилось, и при ручном вводе в ipfw выбивает ошибку:
> ipfw add 4000 deny all from any to any mac any not 'table(2)' layer2
ipfw: Incorrect MAC addressможет нужно пересобрать ядро, с другими функциями?
нашёл в нете подобную тему, напишите плз, что мне оттуда нужно..
http://forum.lissyara.su/viewtopic.php?f=8&t=12247&start=0
Продолжаем извращаться.
mac_filter () {
${ipfw} add 4000 deny from any to any mac any not { `grep 'hardware ethernet' /home/dim_s/filter|awk '{ print$3 }' | tr ";\n" ","` }
}
Закинул в скрипт
mac_filter () {
${ipfw} add 4000 deny from any to any mac any not { `grep 'hardware ethernet' /home/dim_s/filter|awk '{ print$3 }' | tr ";\n" ","` }
}Перезагрузил, в итоге ничего в ipfw show с правилом 4000 он не добавляет,
при ручном вводе выкидывает ошибку именно на mac:
ipfw: Incorrect MAC addressв конец правила добавьте еще mac-type ipv4
В общем, вот что я получаю при добавлении правил:
> ipfw add 4000 deny from any to any mac any not { `grep 'hardware ethernet' /home/dimon/mac_dhcpd|awk '{ print$3 }' | tr ";\n" ","` }
ipfw: unrecognised option [-1] from
> ipfw add 4000 deny from any to any mac any not mac-type ipv4 { `grep 'hardware ethernet' /home/dimon/mac_dhcpd|awk '{ print$3 }' | tr ";\n" ","` }
ipfw: unrecognised option [-1] from
> ipfw add 4000 deny from any to any mac any not { `grep 'hardware ethernet' /home/dimon/mac_dhcpd|awk '{ print$3 }' | tr ";\n" ","` mac-type ipv4}
ipfw: unrecognised option [-1] from