После того, как bridge на FreeBSD готов, можно подумать и о блокировке сайтов средствами ipfw во FreeBSD.
Делается это опять такие просто. Будет таблица, в которую будут заноситься адреса провинившихся сайтов и будет список привелигированных пользователей, которым доступ к этим сайтам останется открыт. Фильтрация будет происходить по IP-адресам, так что избранные адреса лучше зарезервировать, если используется DHCP.
Итак в статье по созданию моста, были вписаны в /etc/rc.firewall правила ipfw разрещающие всё и всем. Меняем правила на:
/sbin/ipfw -f flush
/sbin/ipfw table 1 flush
/sbin/ipfw table 2 flush
cat /etc/BlockedSites | while read ip; do
ipfw table 1 add $ip 1
done
# запрещаем всем посещать сайты из таблицы 1 (файл /etc/BlockedSites)
/sbin/ipfw -q add 100 deny ip from "table(1)" to 192.168.1.0/24
# 192.168.1.0/24 -это адрес всей подсети
cat /etc/allowalluser | while read ip; do
ipfw table 2 add $ip 1
done
# разрешаем пользователям из таблицы 2 (файл /etc/allowalluser) посещать всё
# номер правила меньше, чем запрещающее выше правило
/sbin/ipfw -q add 099 allow ip from "table(1)" to "table(2)"
# разрешаем всё на портах 21, 22 и 80
/sbin/ipfw -q add 201 allow all from any to any 22
/sbin/ipfw -q add 202 allow all from any 22 to any
/sbin/ipfw -q add 203 allow all from any to any 21
/sbin/ipfw -q add 204 allow all from any 21 to any
/sbin/ipfw -q add 307 allow all from any to any 80
/sbin/ipfw -q add 308 allow all from any 80 to any
/sbin/ipfw -q add 60000 permit ip from any to any
Далее создаём эти самые /etc/BlockedSites и /etc/allowalluser.
/etc/allowalluser создаём вручную, написав туда ip-адреса пользователей, которым всё разрешено, например
192.168.1.4
192.168.1.73
192.168.1.45
и т.д.
а вот вписывать все ip-адреса провинившихся сайтов для файлика /etc/BlockedSites довольно долгое занятие. Адреса того же vk.com можно узнать так:
host vk.com | grep 'has address' | cut -d ' ' -f 4
Перенаправим вывод команды в файлик /etc/BlockedSites:
host vk.com | grep 'has address' | cut -d ' ' -f 4 > /etc/BlockedSites
Если надо внести ещё адреса, то вместо символа «>» ставим двойную «>>», чтобы не стирать а дописывать ниже, тоесть:
host odnoklassniki.ru | grep 'has address' | cut -d ' ' -f 4 >> /etc/BlockedSites
host fishki.net | grep 'has address' | cut -d ' ' -f 4 >> /etc/BlockedSites
и т.д.
Перезапускаем ipfw на FreeBSD:
/etc/rc.d/ipfw restart
Все занесённые в список ip-адреса сайтов будут недоступны всем пользователям сети, за исключением компьютеров с ip из списка /etc/allowalluser
После применения этого правила:
/sbin/ipfw -q add 100 deny ip from «table(1)» to 192.168.1.0/24
полностью падает SSH, и дальнейшее управление сервером возможно только локально, или пока не будет удалено данное правило
Поправил, пришлось делать правило разрешающее SSH выше, под 96 и 97 номерами.
root@shlyz:/ # cat /etc/BlockedSites | while read ip; do
while: Синтаксис выражения.
do: Команда не найдена.
root@shlyz:/ # ipfw table 1 add $ip 1
ip: Неопределенная переменная.
root@shlyz:/ # done
root@shlyz:/ # cat /etc/BlockedSites | while read ip; do
while: Синтаксис выражения.
do: Команда не найдена.
root@shlyz:/ # ipfw table 1 add $ip 1
ip: Неопределенная переменная.
root@shlyz:/ # done
помогите пожалуйста, вот такую надпись выдает
re0: flags=8802 metric 0 mtu 1500
options=8209b
ether 90:fb:a6:39:f2:bd
nd6 options=29
media: Ethernet autoselect (10baseT/UTP )
status: no carrier
re1: flags=8843 metric 0 mtu 1500
options=8209b
ether f0:7d:68:c1:fe:d1
inet 10.15.2.254 netmask 0xffffff00 broadcast 10.15.2.255
nd6 options=29
media: Ethernet autoselect (100baseTX )
status: active
em0: flags=8843 metric 0 mtu 1500
options=209b
ether 00:07:e9:0f:39:b5
inet 10.15.1.93 netmask 0xffffff00 broadcast 10.15.1.255
nd6 options=29
media: Ethernet autoselect (100baseTX )
status: active
lo0: flags=8049 metric 0 mtu 16384
options=600003
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
inet 127.0.0.1 netmask 0xff000000
nd6 options=21
как мне настроить помогите пытался разобраться но не получается врибсд 10.2