URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 85440
[ Назад ]

Исходное сообщение
"URL-фильтр под FreeBSD"

Отправлено masters , 28-Май-09 10:52 
Реально ли такое без использования прокси?

Просто раньше думал что это умеет только прокси, но потом в дешевых маршрутизаторах (D-Link DIR100) увидел что они умеют это и без прокси-сервера.

Может есть какая-то примочка и для ФРИ?

P.S. ФРЯ 7.1 х64, ipfw+natd (вариантов под pf не предлагать)


Содержание

Сообщения в этом обсуждении
"URL-фильтр под FreeBSD"
Отправлено masters , 28-Май-09 12:06 
Просто нужно сделать файл с шаблонами имен сайтов, и чтобы если сайт попадал под шаблон - файрвол его блочил (или перенаправлял на определенную страницу на локальном веб-сервере).

Рылся в гугле - ничего не нашел по поводу связки ipfw и блокировки URL :(

Пришла еще одна идея, может есть способ заставить локальный ДНС не резолвить определенные имена ???

Или только прокси прозрачный поднимать? Блин так не хотелось-бы, довольно сложная маршрутизация на сервере (4 разных канала Инета заходит). А это все перестраивать под прокси - полный капец...


"URL-фильтр под FreeBSD"
Отправлено sw2 , 28-Май-09 13:01 
>[оверквотинг удален]
>
>Рылся в гугле - ничего не нашел по поводу связки ipfw и
>блокировки URL :(
>
>Пришла еще одна идея, может есть способ заставить локальный ДНС не резолвить
>определенные имена ???
>
>Или только прокси прозрачный поднимать? Блин так не хотелось-бы, довольно сложная маршрутизация
>на сервере (4 разных канала Инета заходит). А это все перестраивать
>под прокси - полный капец...

Ну можно сделать тупо - на серваке где крутится DNS прописать всё что нельзя в /etc/hosts указывая адрес локального сервака со страничкой запрета.



"URL-фильтр под FreeBSD"
Отправлено Pahanivo , 28-Май-09 13:03 
>[оверквотинг удален]
>>Пришла еще одна идея, может есть способ заставить локальный ДНС не резолвить
>>определенные имена ???
>>
>>Или только прокси прозрачный поднимать? Блин так не хотелось-бы, довольно сложная маршрутизация
>>на сервере (4 разных канала Инета заходит). А это все перестраивать
>>под прокси - полный капец...
>
>Ну можно сделать тупо - на серваке где крутится DNS прописать всё
>что нельзя в /etc/hosts указывая адрес локального сервака со страничкой запрета.
>

какая связь hosts и DNS ? )


"URL-фильтр под FreeBSD"
Отправлено sw2 , 28-Май-09 13:07 
>>
>
>какая связь hosts и DNS ? )

никакой :)
OS резолвит имена в в порядке указном в  /etc/host.conf



"URL-фильтр под FreeBSD"
Отправлено Pahanivo , 28-Май-09 15:35 
>>>
>>
>>какая связь hosts и DNS ? )
>
>никакой :)
>OS резолвит имена в в порядке указном в  /etc/host.conf

вот именно ОСЬ! ОСЬ ШЛЮЗА!!!! клиенты резолвятся чисто DNS сервером если таковой имеется.


"URL-фильтр под FreeBSD"
Отправлено sw2 , 28-Май-09 16:09 
>>>>
>>>
>>>какая связь hosts и DNS ? )
>>
>>никакой :)
>>OS резолвит имена в в порядке указном в  /etc/host.conf
>
>вот именно ОСЬ! ОСЬ ШЛЮЗА!!!! клиенты резолвятся чисто DNS сервером если таковой
>имеется.

К чему такие эмоции :))) Никто не говорит что это хорошее решение. Но какой-нибудь к примеру dnsmasq и вышеуказанный тупой метод будут работать.



"URL-фильтр под FreeBSD"
Отправлено PavelR , 28-Май-09 19:16 
>[оверквотинг удален]
>>>
>>>никакой :)
>>>OS резолвит имена в в порядке указном в  /etc/host.conf
>>
>>вот именно ОСЬ! ОСЬ ШЛЮЗА!!!! клиенты резолвятся чисто DNS сервером если таковой
>>имеется.
>
>К чему такие эмоции :))) Никто не говорит что это хорошее решение.
>Но какой-нибудь к примеру dnsmasq и вышеуказанный тупой метод будут работать.
>

не будут работать, поскольку днс не пользуется файлом hosts. Может быть dnsmasq это и делает, я точно не знаю, поскольку не использую, но ИМХО - нет. Bind, например, точно не использует hosts.


"URL-фильтр под FreeBSD"
Отправлено sw2 , 29-Май-09 12:13 
>[оверквотинг удален]
>>>вот именно ОСЬ! ОСЬ ШЛЮЗА!!!! клиенты резолвятся чисто DNS сервером если таковой
>>>имеется.
>>
>>К чему такие эмоции :))) Никто не говорит что это хорошее решение.
>>Но какой-нибудь к примеру dnsmasq и вышеуказанный тупой метод будут работать.
>>
>
>не будут работать, поскольку днс не пользуется файлом hosts. Может быть dnsmasq
>это и делает, я точно не знаю, поскольку не использую, но
>ИМХО - нет. Bind, например, точно не использует hosts.

Согласен bind не читает hosts.
dnsmasq - это первое что пришло в голову :) в начале прошлого века по крайней мере dnsmasq читал hosts при загрузке. Ряд других dns подделок тоже читает hosts. (скажем djbdns c кучей патчей :))) )
Потому я бы не был на Вашем месте столь категоричен насчёт не будет работать :))))))


"URL-фильтр под FreeBSD"
Отправлено Pahanivo , 28-Май-09 13:05 
>[оверквотинг удален]
>
>Рылся в гугле - ничего не нашел по поводу связки ipfw и
>блокировки URL :(
>
>Пришла еще одна идея, может есть способ заставить локальный ДНС не резолвить
>определенные имена ???
>
>Или только прокси прозрачный поднимать? Блин так не хотелось-бы, довольно сложная маршрутизация
>на сервере (4 разных канала Инета заходит). А это все перестраивать
>под прокси - полный капец...

мда пздец - ты хоть слыхал про модель OSI/OSI ?


"URL-фильтр под FreeBSD"
Отправлено masters , 28-Май-09 13:23 
>мда пздец - ты хоть слыхал про модель OSI/OSI ?

Можно ближе к теме? :)

Можно сделать это при помощи ipfw, bind или ipfw + примочки? Например весь траффик с ipfw пускать через какой-нить програм дивертом, чтоб она фильтровала. Есть вообще такие программы?

Надо отучить пользователей лазить по порносайтам, но не хочется поднимать Сквид...


"URL-фильтр под FreeBSD"
Отправлено К.О. , 28-Май-09 15:07 
>>мда пздец - ты хоть слыхал про модель OSI/OSI ?
>
>Можно ближе к теме? :)
>
>Можно сделать это при помощи ipfw, bind или ipfw + примочки? Например
>весь траффик с ipfw пускать через какой-нить програм дивертом, чтоб она
>фильтровала. Есть вообще такие программы?
>
>Надо отучить пользователей лазить по порносайтам, но не хочется поднимать Сквид...

Чтобы вытащить URL из пакета, вам нужно залезть на 7 уровень модели OSI. Так-то.
Если не squid, то какой-нибудь простой прокси, работающий в прозрачном режиме Вам всё-равно понадобиться.


"URL-фильтр под FreeBSD"
Отправлено Pahanivo , 28-Май-09 15:35 
>[оверквотинг удален]
>>Можно ближе к теме? :)
>>
>>Можно сделать это при помощи ipfw, bind или ipfw + примочки? Например
>>весь траффик с ipfw пускать через какой-нить програм дивертом, чтоб она
>>фильтровала. Есть вообще такие программы?
>>
>>Надо отучить пользователей лазить по порносайтам, но не хочется поднимать Сквид...
>
>Чтобы вытащить URL из пакета, вам нужно залезть на 7 уровень модели
>OSI. Так-то.

вот этото он и не понимает ...
много щас таких развелось - им что ipfw что squid все едино ...
>Если не squid, то какой-нибудь простой прокси, работающий в прозрачном режиме Вам
>всё-равно понадобиться.


"URL-фильтр под FreeBSD"
Отправлено masters , 28-Май-09 18:29 
>много щас таких развелось - им что ipfw что squid все едино

Я такого не говорил. Я просто говорил, что не хочется ставить сквид из-за сложной маршрутизации. Это в сквиде настраивать чтоб определенные IP выходили через определенный внешний IP (т.к. каналов несколько). Т.е. ставить еще и отдельный биллинг для сквида, т.к. установленный уже не сможет добавлять пользователей и раскидывать их по внешним каналам.
Вообщем все что настроено придется перенастраивать заново - еще убить несколько дней. А производство непрерывное, столько времени мне никто не даст...

И я не говорю, что ipfw это должен уметь делать. Я просто думал что может есть какая-то программулина, в которую дивертом можно пакеты закидывать, а она уже будет фильтровать их.

>>Если не squid, то какой-нибудь простой прокси, работающий в прозрачном режиме Вам
>>всё-равно понадобиться.

Как-же тогда делается в маршрутизаторах это? Неужели в роутере за 20$ стоит прозрачный прокси ???


"URL-фильтр под FreeBSD"
Отправлено PavelR , 28-Май-09 19:19 
>[оверквотинг удален]
>
>И я не говорю, что ipfw это должен уметь делать. Я просто
>думал что может есть какая-то программулина, в которую дивертом можно пакеты
>закидывать, а она уже будет фильтровать их.
>
>>>Если не squid, то какой-нибудь простой прокси, работающий в прозрачном режиме Вам
>>>всё-равно понадобиться.
>
>Как-же тогда делается в маршрутизаторах это? Неужели в роутере за 20$ стоит
>прозрачный прокси ???

iptables + модуль string. Маршрутизатор за 20$ не сумеет высокий pps и много каналов.

Я вас не понимаю - ну какая вам разница куда лезет пользователь заплативший вам деньги ?
Либо у вас организация, тогда полюбому надо использовать прокси, поскольку нужен более точный контроль.


"URL-фильтр под FreeBSD"
Отправлено masters , 28-Май-09 20:08 
>Я вас не понимаю - ну какая вам разница куда лезет пользователь
>заплативший вам деньги ?
>Либо у вас организация, тогда полюбому надо использовать прокси, поскольку нужен более
>точный контроль.

Организация. Хорошо связанная с компьютерами и интернетом: т.е. людям нужны и торренты и скайпы и тысячи программ, которые не поддерживают прокси.
Т.е. в любом раскладе нужно настраивать еще и ipfw (для шлюза) и биллинг под него. Еще 4 канала в мир, надо раскидывать траффик между ними, еще на этом-же сервере крутится VPN-сервер для удаленных клиентов, апач, VOIP, Samba ...

Вообщем жесть полная. Аж стремно туда лезть, хотя вроде бы сам настраивал.

Прокси можно поставить конечно, но я даже не представляю если честно как его настраивать под несколько каналов и как файрволом на него все сыпать (просто сквида конечно настраивал) + отдельный биллинг еще нужен для него.

Так что вот и думал, может есть варианты попроще. А модуля string нет под ipfw ?

Вообщем быстрей всего придется курить МАНы по сквиду (как его развязать на несколько каналов).


"URL-фильтр под FreeBSD"
Отправлено аноним , 28-Май-09 20:52 
>Организация. Хорошо связанная с компьютерами и интернетом: т.е. людям нужны и торренты
>и скайпы и тысячи программ, которые не поддерживают прокси.

Если у вас в сети skype, нет вообщи никакого смысла что-либо блокировать. А тысячи программ, не поддерживающих прокси, по http и не работтают, поэтому прозрачный squid вас спасет.


"URL-фильтр под FreeBSD"
Отправлено angra , 29-Май-09 08:56 
>Как-же тогда делается в маршрутизаторах это? Неужели в роутере за 20$ стоит
>прозрачный прокси ???

А вы уверены, что оно блочит именно по url, а не по ip, в который предварительно резолвится url? Как проверяли?



"URL-фильтр под FreeBSD"
Отправлено аноним , 28-Май-09 20:50 
>Чтобы вытащить URL из пакета, вам нужно залезть на 7 уровень модели
>OSI.

Что ты подразумеваешь под `залезть'? Есть IP пакет, у него есть payload, в нем можно грепнуть URL, никаких OSI и уровней. Разумеется, фаирволы это не умеют и не должны уметь.


"URL-фильтр под FreeBSD"
Отправлено Pahanivo , 29-Май-09 07:37 
>>Чтобы вытащить URL из пакета, вам нужно залезть на 7 уровень модели
>>OSI.
>
>Что ты подразумеваешь под `залезть'? Есть IP пакет, у него есть payload,
>в нем можно грепнуть URL, никаких OSI и уровней. Разумеется, фаирволы
>это не умеют и не должны уметь.

учи матчасть!


"URL-фильтр под FreeBSD"
Отправлено masters , 29-Май-09 11:20 
Тут пришел вчера в голову вариант неплохой с прозрачным прокси :)

Где-то в инете очень давно видел статью, там про то, как заставить Сквид ходить по нескольким каналам в мир. Вообщем идея была в том, что на выходе со Сквида одни юзеры выходят с одним IP, а остальные с другим. Ну а потом как обычно ipfw forward ...

Вообщем сделать можно тоже самое. Только вот можно-ли сделать так, чтобы при выходе из Сквида IP юзера не менялся (без прописывания в конфигах всех юзеров ручками)? А потом их уже кидать на НАТы и форвардами по провайдерам.

Тогда по идее можно будет оставить старый биллинг для распределения юзеров по каналам и выставления им скорости, а Сквид будет работать просто как URL-фильтр.

И еще сразу вопрос:
Если всетаки в Сквиде такое можно сделать, как потом различать пакеты в ipfw?


"URL-фильтр под FreeBSD"
Отправлено reader , 29-Май-09 12:57 
>[оверквотинг удален]
>всех юзеров ручками)? А потом их уже кидать на НАТы и
>форвардами по провайдерам.
>
>Тогда по идее можно будет оставить старый биллинг для распределения юзеров по
>каналам и выставления им скорости, а Сквид будет работать просто как
>URL-фильтр.
>
>И еще сразу вопрос:
>Если всетаки в Сквиде такое можно сделать, как потом различать пакеты в
>ipfw?

http://www.opennet.me/openforum/vsluhforumID12/6083.html


"URL-фильтр под FreeBSD"
Отправлено аноним , 29-Май-09 20:13 
>учи матчасть!

С чем несогласен, школота?


"URL-фильтр под FreeBSD"
Отправлено Pahanivo , 30-Май-09 10:17 
>>учи матчасть!
>
>С чем несогласен, школота?

с ересью, ламота!


"URL-фильтр под FreeBSD"
Отправлено sonkilla , 31-Май-09 22:14 
1 squid.opennet.ru
2 ман сквид
3 http://rejik.ru/
и будет вам счастье.в принцыпе можно поднять прозрачный сквид и неделать кеш  то тогда он будет просто с помощью режика блокировать и перенаправлять запросы на нежелаемые вам сайты.


"URL-фильтр под FreeBSD"
Отправлено аноним , 03-Июн-09 23:54 
>с ересью, ламота!

Понятно все. Удачи закончить начальную школу, позорище :)


"URL-фильтр под FreeBSD"
Отправлено Аноним , 03-Июн-09 23:57 
Пашенька, ты уже затрахал тут всех. Молчал бы - глядишь и за умного сошел.

"URL-фильтр под FreeBSD"
Отправлено hasilzu , 03-Июн-09 22:09 
>>мда пздец - ты хоть слыхал про модель OSI/OSI ?
>
>Можно ближе к теме? :)
>
>Можно сделать это при помощи ipfw, bind или ipfw + примочки? Например
>весь траффик с ipfw пускать через какой-нить програм дивертом, чтоб она
>фильтровала. Есть вообще такие программы?
>
>Надо отучить пользователей лазить по порносайтам, но не хочется поднимать Сквид...

Административными методами.
Гарантия - 100%.



"URL-фильтр под FreeBSD"
Отправлено XoRe , 09-Июн-09 23:44 
1. Нормально и удобно работать с url'ами  в прозрачном прокси.
Если не нравится squid, можно посмотреть другие прокси, более оптимизированные под скорость.
Может быть даже можно прикрутить nginx для этого.
Но и сам squid можно настроить и затюнить под простую проверку урлов по acl (отрубить кэш, прописать, чтоб он всегда перенаправлял запросы (direct), и т.д.).

2. Прозрачных прокси можно поназапускать сколько угодно.
Можно по одному прокси на канал.
А в каждом прокси прописать опцию что-то типа outgoing_address, чтобы он отсылал запросы со своего внешнего ip.
Ещё я бы посоветовал вешать прокси серверы (bind или listen) прямо на внешние ip адреса - схема будет попонятнее и, возможно, чуть меньше геммороя с исходящими пакетами (запрос от клиента до сквида - это один пакет, а запрос сквида на сайт - это уже совсем другой пакет, который в ipfw проходит все правила с начала).

3. Если уже есть биллинг, натт, несколько каналов и работает разброс по каналам, то...
Перенаправление на прокси делать чем-то вроде "fwd ip,port tcp from any to not me 80 out".
Это правило пихать ПОСЛЕ подсчета биллингом и ПОСЛЕ ната, но ДО окончательного FWD наружу.
Тогда прокси вообще никак не сломает существующую схему.

Если хочется странного, могу посоветовать посмотреть модули для netgraph - может там чего есть для определения пакетов по контенту.

Если хочется извращений, то модуль ng_bpf в общем-то может читать контент пакета.
Но это изврат конский)

P.S.
Прозрачный прокси - это мера "против толпы ламеров".
Если человек знает, что такое прокси, то это обходится на раз.
Если все это внутри организации, самые лучшие меры - административные.
А вот для этого прозрачный прокси очень хорошо может помочь, если настроить его писать запросы юзеров в лог.


"URL-фильтр под FreeBSD"
Отправлено masters , 11-Июн-09 21:51 
>3. Если уже есть биллинг, натт, несколько каналов и работает разброс по
>каналам, то...
>Перенаправление на прокси делать чем-то вроде "fwd ip,port tcp from any to
>not me 80 out".
>Это правило пихать ПОСЛЕ подсчета биллингом и ПОСЛЕ ната, но ДО окончательного
>FWD наружу.
>Тогда прокси вообще никак не сломает существующую схему.

У меня как раз проблема - не режется исходящий траффик, идущий через прокси. Попробую опустить форвард на прокси ниже пайпов, надеюсь поможет.

>Прозрачный прокси - это мера "против толпы ламеров".
>Если человек знает, что такое прокси, то это обходится на раз.
>Если все это внутри организации, самые лучшие меры - административные.
>А вот для этого прозрачный прокси очень хорошо может помочь, если настроить
>его писать запросы юзеров в лог.

Спасибо, сейчас им и пользуюсь, вполне нормально. Очень помог rejik.ru.

Как можно отключить кэш в Сквиде, а то тормозит немного. Ждешь пока сначала в кэш загрузит, а потом еще через пайп всеравно с ограниченной скоростью пройдет. Для юзеров такое впечатление - что скорость упала раза в полтора, хотя при скачивании все ОК :)


"URL-фильтр под FreeBSD"
Отправлено Anton Lysenok , 12-Июн-09 11:34 
фаервол не режет по УРЛам, он понимает только нарезку по IP или по портам.
Юзай сквид, можно в паре с rejik'om.

Google squid
Google rejik


"URL-фильтр под FreeBSD"
Отправлено iSehot , 24-Авг-12 12:24 
> Реально ли такое без использования прокси?
> Просто раньше думал что это умеет только прокси, но потом в дешевых
> маршрутизаторах (D-Link DIR100) увидел что они умеют это и без прокси-сервера.
> Может есть какая-то примочка и для ФРИ?
> P.S. ФРЯ 7.1 х64, ipfw+natd (вариантов под pf не предлагать)

Абсолютно по URL нельзя.
Но можно отрезолвить домены и блокировать или разрешать по IP.
Минус в данном подходе в том что на одном том же IP может находиться несколько сайтов.

В моем случае правила разрешающие, поэтому и минуса этого нет.


Создаем скрипт и ставим его в Cron, например раз в день.

#!/bin/sh

fwcmd="/sbin/ipfw -q"

url='jde.ru,api-maps.yandex.ru,maps.yandex.ru,vec.maps.yandex.ru,clck.yandex.ru'

url2=`echo $url | sed 's/,/ /g'`

${fwcmd} table 2 flush

for i in $url2
do
ip=`nslookup $i | grep -A 1 'Name' | grep -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}'`
for y in $ip
do
#добавляем IP в таблицу
${fwcmd} table 2 add $y
done
done

На случай перезагрузки этот же скрипт добавляем в rc.firewall
Ну а дальше рулими правилами.
Например:
${fwcmd} add divert natd ip from ${Net}/${NetMask} to table\(2\) out via ${LanOut}
Разрешили внутренней сетке ходить по этим адресам через Nat