transparent squid+pf во внутренней сети

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
MaxaoH82
проходил мимо
Сообщения: 7
Зарегистрирован: 2009-09-25 5:16:12

transparent squid+pf во внутренней сети

Непрочитанное сообщение MaxaoH82 » 2009-09-25 5:44:56

Доброго времени суток.

Внутри сети есть FreeBSD 7.2 с настроеным squid 3.0.19 (прозрачный)+pf который заворачивает трафик на прокси (сквид собран с поддержкой PF)
Хочу закрыть весь трафик, но открыть только для вебсёрфинга
вот конфиг pf

Код: Выделить всё

int_if="em0" # внутренний интерфейс, который "смотрит" ко мне в домашнюю локалку.

icmp_types="{ echoreq, unreach}" ## разрешенные типы icmp сообщений.

trusted_lan="192.168.1.0/24" ## доверенная домашняя локалка

set loginterface $int_if
set skip on le0
scrub in all

rdr on $int_if proto tcp from $trusted_lan to any port 80 -> 127.0.0.1 port 3128 # заворачиваем трафик на прокси

block all ## запрет всего по-умолчанию

pass in on $int_if proto tcp from any to $int_if port 22       #пропускаем SSH

Если в браузере набираем какой нибудь адрес ( при политике block all) то пишет "Ожидание ответа сервера" и ничего не показывает,
хотя в логах сквида (access.log) пишет

Код: Выделить всё

1253801104.193    406 192.168.1.200 TCP_MISS/200 5208 GET http://www.ya.ru/ - DIRECT/93.158.134.8 text/html
а если сменить политику на pass all то всё нормально проходит и отображаеться.

Как я понял в первом случае(при block all) траффик завернулся на сквид но от сквида до меня блокировка идёт)

Может у кого есть тоже внутри сети такое же чудо? подскажите плиз

И ещё: как блокировать определённые сайты по доменным именам я ввёл в правила pf вот что

Код: Выделить всё

blocked_sites = "{ odnoklassniki.ru, mail.ru }"
block in on $int_if from $trusted_lan to $blocked_sites
block out on $int_if from $trusted_lan to $blocked_sites
Но не помогает

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Kos
мл. сержант
Сообщения: 118
Зарегистрирован: 2009-01-19 23:15:49

Re: transparent squid+pf во внутренней сети

Непрочитанное сообщение Kos » 2009-09-25 8:15:50

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

по поводу фаервола: кроме pass all есть есче много разных вариантов правил. Готовых примеров для pf не подскажу, т.к. пользуюсь ipfw, но Вам не кажется, что нада немножко получше знать фаервол, который стоит на Вашем сервере?

а блокировать определенные сайты имея сквид... мусье знает толк в извращениях))) пропишите нужные ACL и будет Вам счастье. Например
в squid.conf добавить:

Код: Выделить всё

acl url_banned url_regex -i "/usr/local/etc/squid/url_banned_site"
http_access deny url_banned
содержимое url_banned_site:

Код: Выделить всё

odnoklassniki.ru
mail.ru

Гость
проходил мимо

Re: transparent squid+pf во внутренней сети

Непрочитанное сообщение Гость » 2009-09-25 10:15:25

Kos писал(а):Не совсем понял почему такой упор на то, что сквид "внутри сети".

по поводу фаервола: кроме pass all есть есче много разных вариантов правил. Готовых примеров для pf не подскажу, т.к. пользуюсь ipfw, но Вам не кажется, что нада немножко получше знать фаервол, который стоит на Вашем сервере?

а блокировать определенные сайты имея сквид... мусье знает толк в извращениях))) пропишите нужные ACL и будет Вам счастье. Например
в squid.conf добавить:

Код: Выделить всё

acl url_banned url_regex -i "/usr/local/etc/squid/url_banned_site"
http_access deny url_banned
содержимое url_banned_site:

Код: Выделить всё

odnoklassniki.ru
mail.ru
про блокировку сайтов сквидом не подумал.
А то что сквид внутри сети скажу так:
В офисе подключен лимитный интернет через Windows+usergate
есть радиоканал до сотрудника у которого есть безлимит
(тока этот сотрудник люто-бешено ненавидит когда что то жужжит дома ночью)
Вот и было на время решено пока подключить сервер внутри сети чтобы тот в случае чего
мог переключаться между каналами связи а то часто бывает что безлимит обрываеться и бегать к
каждому юзеру и переключать Default Gateway не с руки.

Ну и сразу встречный вопрос :
Как вобще организовать всё это дело по нормальному, ну всмысле
что каналы связи распределены географически
(впоследствии этого сотрудника уломаем поставить либо тихий сервер либо какую нибудь железячку)

djan
рядовой
Сообщения: 20
Зарегистрирован: 2009-06-18 11:23:59

Re: transparent squid+pf во внутренней сети

Непрочитанное сообщение djan » 2009-09-25 14:27:16

MaxaoH82 писал(а):Доброго времени суток.

Код: Выделить всё

int_if="em0" # внутренний интерфейс, который "смотрит" ко мне в домашнюю локалку.

icmp_types="{ echoreq, unreach}" ## разрешенные типы icmp сообщений.

trusted_lan="192.168.1.0/24" ## доверенная домашняя локалка

set loginterface $int_if
set skip on le0
scrub in all

rdr on $int_if proto tcp from $trusted_lan to any port 80 -> 127.0.0.1 port 3128 # заворачиваем трафик на прокси

block all ## запрет всего по-умолчанию

pass in on $int_if proto tcp from any to $int_if port 22       #пропускаем SSH

кроме редиректа надо еще разрешить пакетам пользователей выходить наружу и самому серваку разрешиьт ходить наружу, ,примероно так

Код: Выделить всё

pass in on $int_if  from $trusted_lan to any port 80 keep state # разрешаем юзверям 
pass out on $ext_if from $ext_if to any modulate state # выпускаем пакеты прокси наружу

тут есть пример именно с транспарентным прокси http://www.lissyara.su/?id=1833

Аватара пользователя
konstantine
ефрейтор
Сообщения: 55
Зарегистрирован: 2009-03-14 11:51:17

Re: transparent squid+pf во внутренней сети

Непрочитанное сообщение konstantine » 2009-09-28 21:11:52

MaxaoH82 писал(а):Доброго времени суток.

Внутри сети есть FreeBSD 7.2 с настроеным squid 3.0.19 (прозрачный)+pf который заворачивает трафик на прокси (сквид собран с поддержкой PF)
Хочу закрыть весь трафик, но открыть только для вебсёрфинга
вот конфиг pf

Код: Выделить всё

int_if="em0" # внутренний интерфейс, который "смотрит" ко мне в домашнюю локалку.

icmp_types="{ echoreq, unreach}" ## разрешенные типы icmp сообщений.

trusted_lan="192.168.1.0/24" ## доверенная домашняя локалка

set loginterface $int_if
set skip on le0
scrub in all

rdr on $int_if proto tcp from $trusted_lan to any port 80 -> 127.0.0.1 port 3128 # заворачиваем трафик на прокси

block all ## запрет всего по-умолчанию

pass in on $int_if proto tcp from any to $int_if port 22       #пропускаем SSH

Если в браузере набираем какой нибудь адрес ( при политике block all) то пишет "Ожидание ответа сервера" и ничего не показывает,
хотя в логах сквида (access.log) пишет

Код: Выделить всё

1253801104.193    406 192.168.1.200 TCP_MISS/200 5208 GET http://www.ya.ru/ - DIRECT/93.158.134.8 text/html
а если сменить политику на pass all то всё нормально проходит и отображаеться.

Как я понял в первом случае(при block all) траффик завернулся на сквид но от сквида до меня блокировка идёт)

Может у кого есть тоже внутри сети такое же чудо? подскажите плиз

И ещё: как блокировать определённые сайты по доменным именам я ввёл в правила pf вот что

Код: Выделить всё

blocked_sites = "{ odnoklassniki.ru, mail.ru }"
block in on $int_if from $trusted_lan to $blocked_sites
block out on $int_if from $trusted_lan to $blocked_sites
Но не помогает
Подправь свой конфиг чуток - block all замен на
block in all
pass out all

и всё заработает
@lissyara: Решений "искаропки" под конкретную задачу - катастрофически мало.
Любое боле-мене серьёзное решение - это кручение коробки под себя.