Jump to content
Калькуляторы

Squid и фильтрация

Коллеги, здравствуйте.

 

Никак не могу понять в чем ошибка.

 

Стоит squid/3.1.6 слушает 3 порта, 

 

http_port 3128
http_port 3130 intercept
https_port 3129 intercept  xxxxx

 

в NAT redirect

tcp dpt:443 redir ports 3129

tcp dpt:80 redir ports 3130

 

Маршрутизация заворачивает нужный трафик на машину с сквидом. В прозрачном режиме все ОК.

Так же ДНС отдает зафильтрованные сайты с ip от сквида.

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

 

Все ОК.

 

1512121811.929    300 x.x.77.206 TCP_MISS/302 915 GET http://www.deviantart.com/ - DIRECT/13.33.244.84 text/html
1512121820.030    298 x.x.77.206 TCP_MISS/503 4902 GET https://www.deviantart.com/ - DIRECT/13.33.244.84 text/html
1512121821.058    281 x.x.77.206 TCP_MISS/503 4897 GET https://www.deviantart.com/favicon.ico - DIRECT/13.33.244.84 text/html
 

 

Разворачиваю Squid Cache: Version 3.5.8

 

http_port 3128 intercept
http_port 3130 
https_port 3129 intercept ssl-bump xxxxx

 

в NAT redirect

tcp dpt:443 redir ports 3129

tcp dpt:80 redir ports 3128

 

При маршрутизации и прозрачном проксировании все так же нормально работает.

А вот если подменяем в DNS ip-адрес на адрес сквида - работать перестает.

Сквид адрес не резолвит а обращается сам на себя.

 

1512121643.543     52 x.x.77.206 TCP_MISS/503 4958 GET http://www.deviantart.com/ - ORIGINAL_DST/x.x.77.193 text/html
1512121644.036      0 x.x.77.206 TCP_MISS/503 4952 GET http://www.deviantart.com/favicon.ico - ORIGINAL_DST/x.x.77.193 text/html

 

Что забыли сделать?

Кто подскажет?
 

Edited by lacost

Share this post


Link to post
Share on other sites

А может кто-то NGINX под тему фильтрации пробовал?

По документации прозрачный прокси есть, должен SSL с SNI делать.

 

 

Share this post


Link to post
Share on other sites

Пробовал, но обычный http.

Работало ещё лет 5 назад без проблем и нынче работает.

На https забил, ибо для личного пользования, просто зафигачил в днс записи чтобы не резолвились.

Share this post


Link to post
Share on other sites

А как NGINX обрабатывает подмену ip-адреса? Т.е., допустим заворачиваете вы www.xxx.com на своем ДНС на машину с nginx. Nginx в свою очередь получив запрос будет ли резолвить поле host из запроса или так же как сквид будет ориентироваться на оригинальный адрес?

Share this post


Link to post
Share on other sites

Естессно будет резолвить. Дальше запрос пойдёт от IP сервера где nginx.

Share this post


Link to post
Share on other sites
В 05.12.2017 в 09:02, Ivan_83 сказал:

Дальше запрос пойдёт от IP сервера где nginx.

Вообще то есть схемы давно уже схемы transparent установки и nginx и squid

ip сохраняется

 

 

Share this post


Link to post
Share on other sites
В 09.12.2017 в 16:08, LostSoul сказал:

Вообще то есть схемы давно уже схемы transparent установки и nginx и squid

ip сохраняется

 

 

HTTPS?

 

Я, исходя из мануала по nginx не увидел что он может делать SSL-Bump 

Share this post


Link to post
Share on other sites
Только что, lacost сказал:

HTTPS?

ssl 100% прозрачным не получается,  поэтому для втюхивания клиентам мало пригодно

 

Share this post


Link to post
Share on other sites

Мне кажется, слово "втюхивание" не совсем то, что требуется.

Вариант: сделать работу пользователя при наличии "запрещенных сайтов" максимально комфортной - более правильно звучит.

И под такую задачу я кроме как squid с ssl_bump ничего подходящего не нашел. В принципе - решение сносное (правда не совсем стабильное).

NGINX в принципе не готов работать с SNI для получения имени запрашиваемого ресурса и передачи запроса в вышестоящий прокси. Или я ошибаюсь?

Share this post


Link to post
Share on other sites

тоесть митмить шифрованный трафик это решение ? я бы послал за такую "услугу" сразу... втюхивание  - правильное слово.

Share this post


Link to post
Share on other sites

почему митмить? sni получили и по нему, митмить он стока не прожует мне кажеца судя по тому как там это сделано.

Share this post


Link to post
Share on other sites

Ну сквид вроде как прозрачно проксировать https может только в режиме МИТМ.. расшифровывая-зашифровывая своим ключем. Подороге умеет генерить ключи из оригинального, пететягивая туда все поля и подписывая его у локальном ЦА.. просто "коннект" он прозрачно не умеет. или научили ?

Share this post


Link to post
Share on other sites
4 часа назад, st_re сказал:

просто "коннект" он прозрачно не умеет. или научили ?

Так может нахрен сквид вообще, если вам только для РКН.

Такое не смотрели?

https://github.com/Lochnair/xt_tls

 

там правда ещё отдельно придется как-то рубить те запросы которые без SNI идут.

 

Возможно будет достаточно как-то так

#режем запретное
iptables -m set -m tls --match-set list_rkn_https_ip_address --tls-host "navalny.com" -j REJECT
#разрешаем остальное с SNI
iptables  -m set -m tls --match-set list_rkn_https_ip_address --tls-host "*"  -j ACCEPT

# режем без SNI

iptables -m set --match-set list_rkn_https_ip_address  -j DROP

 

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

 

Share this post


Link to post
Share on other sites
59 минут назад, st_re сказал:

Система умеющая в том числе резалть https по SNI обсуждается вот тут

можно для не осиливших 129 страниц ссылку куда-то более конкретно?

страницу или по каким словам искать

 

Share this post


Link to post
Share on other sites
1 час назад, myth сказал:

на гитхабе все есть

названия проектов, это страшная тайна?

 

Share this post


Link to post
Share on other sites
7 часов назад, st_re сказал:

Автор в той теме активно сапортит и развивает.

вы уж простите что не осиливаю снова 129 страниц, но судя по обозрению github там указанный функционал сделан в userspace.

 

Share this post


Link to post
Share on other sites
21 час назад, st_re сказал:

Ну сквид вроде как прозрачно проксировать https может только в режиме МИТМ.. расшифровывая-зашифровывая своим ключем. Подороге умеет генерить ключи из оригинального, пететягивая туда все поля и подписывая его у локальном ЦА.. просто "коннект" он прозрачно не умеет. или научили ?

Уже, года с 2015, squid умеет без подмены сертификата, через SNI получать имя запрашиваемого домена, по списку доменов принимать решение - пропускаем его или отправляем на MITM.

С точки зрения пользователя все становится более адекватным.

Есть данный домен в реестре - принимай самоподписный сертификат.

Нет в реестре этого домена, а просто IP совпадает - проходи.

 

13 часов назад, st_re сказал:

Вот у этого автора https://github.com/max197616/

проект extfilter

Я правильно понимаю, что для HTTPS в этом проекте блокируется весь домен если в реестре находится только одна страница?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now