lacost Posted December 1, 2017 Posted December 1, 2017 (edited) Коллеги, здравствуйте. Никак не могу понять в чем ошибка. Стоит 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 December 1, 2017 by lacost Вставить ник Quote
lacost Posted December 2, 2017 Author Posted December 2, 2017 похоже борода... https://wiki.squid-cache.org/KnowledgeBase/HostHeaderForgery Вставить ник Quote
lacost Posted December 4, 2017 Author Posted December 4, 2017 А может кто-то NGINX под тему фильтрации пробовал? По документации прозрачный прокси есть, должен SSL с SNI делать. Вставить ник Quote
Ivan_83 Posted December 4, 2017 Posted December 4, 2017 Пробовал, но обычный http. Работало ещё лет 5 назад без проблем и нынче работает. На https забил, ибо для личного пользования, просто зафигачил в днс записи чтобы не резолвились. Вставить ник Quote
lacost Posted December 5, 2017 Author Posted December 5, 2017 А как NGINX обрабатывает подмену ip-адреса? Т.е., допустим заворачиваете вы www.xxx.com на своем ДНС на машину с nginx. Nginx в свою очередь получив запрос будет ли резолвить поле host из запроса или так же как сквид будет ориентироваться на оригинальный адрес? Вставить ник Quote
Ivan_83 Posted December 5, 2017 Posted December 5, 2017 Естессно будет резолвить. Дальше запрос пойдёт от IP сервера где nginx. Вставить ник Quote
lacost Posted December 5, 2017 Author Posted December 5, 2017 Надо будет покрутить. Вставить ник Quote
LostSoul Posted December 9, 2017 Posted December 9, 2017 В 05.12.2017 в 09:02, Ivan_83 сказал: Дальше запрос пойдёт от IP сервера где nginx. Вообще то есть схемы давно уже схемы transparent установки и nginx и squid ip сохраняется Вставить ник Quote
lacost Posted December 12, 2017 Author Posted December 12, 2017 В 09.12.2017 в 16:08, LostSoul сказал: Вообще то есть схемы давно уже схемы transparent установки и nginx и squid ip сохраняется HTTPS? Я, исходя из мануала по nginx не увидел что он может делать SSL-Bump Вставить ник Quote
LostSoul Posted December 12, 2017 Posted December 12, 2017 Только что, lacost сказал: HTTPS? ssl 100% прозрачным не получается, поэтому для втюхивания клиентам мало пригодно Вставить ник Quote
lacost Posted December 12, 2017 Author Posted December 12, 2017 Мне кажется, слово "втюхивание" не совсем то, что требуется. Вариант: сделать работу пользователя при наличии "запрещенных сайтов" максимально комфортной - более правильно звучит. И под такую задачу я кроме как squid с ssl_bump ничего подходящего не нашел. В принципе - решение сносное (правда не совсем стабильное). NGINX в принципе не готов работать с SNI для получения имени запрашиваемого ресурса и передачи запроса в вышестоящий прокси. Или я ошибаюсь? Вставить ник Quote
st_re Posted December 12, 2017 Posted December 12, 2017 тоесть митмить шифрованный трафик это решение ? я бы послал за такую "услугу" сразу... втюхивание - правильное слово. Вставить ник Quote
GHhost Posted December 12, 2017 Posted December 12, 2017 почему митмить? sni получили и по нему, митмить он стока не прожует мне кажеца судя по тому как там это сделано. Вставить ник Quote
st_re Posted December 12, 2017 Posted December 12, 2017 Ну сквид вроде как прозрачно проксировать https может только в режиме МИТМ.. расшифровывая-зашифровывая своим ключем. Подороге умеет генерить ключи из оригинального, пететягивая туда все поля и подписывая его у локальном ЦА.. просто "коннект" он прозрачно не умеет. или научили ? Вставить ник Quote
LostSoul Posted December 12, 2017 Posted December 12, 2017 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 непонятно будет ли срабатывать второе правило только при наличии какого-либо читаемого имени, или же перманентно. Вставить ник Quote
st_re Posted December 12, 2017 Posted December 12, 2017 Система умеющая в том числе резалть https по SNI обсуждается вот тут совсем рядом, в Блокировка сайтов провайдерами Вставить ник Quote
LostSoul Posted December 12, 2017 Posted December 12, 2017 59 минут назад, st_re сказал: Система умеющая в том числе резалть https по SNI обсуждается вот тут можно для не осиливших 129 страниц ссылку куда-то более конкретно? страницу или по каким словам искать Вставить ник Quote
LostSoul Posted December 12, 2017 Posted December 12, 2017 1 час назад, myth сказал: на гитхабе все есть названия проектов, это страшная тайна? Вставить ник Quote
st_re Posted December 12, 2017 Posted December 12, 2017 Вот у этого автора https://github.com/max197616/ проект extfilter Автор в той теме активно сапортит и развивает. Вставить ник Quote
LostSoul Posted December 13, 2017 Posted December 13, 2017 7 часов назад, st_re сказал: Автор в той теме активно сапортит и развивает. вы уж простите что не осиливаю снова 129 страниц, но судя по обозрению github там указанный функционал сделан в userspace. Вставить ник Quote
myth Posted December 13, 2017 Posted December 13, 2017 в nfqfilter - через nfqueue, т.е - да. в extfilter - через dpdk Вставить ник Quote
lacost Posted December 13, 2017 Author Posted December 13, 2017 21 час назад, st_re сказал: Ну сквид вроде как прозрачно проксировать https может только в режиме МИТМ.. расшифровывая-зашифровывая своим ключем. Подороге умеет генерить ключи из оригинального, пететягивая туда все поля и подписывая его у локальном ЦА.. просто "коннект" он прозрачно не умеет. или научили ? Уже, года с 2015, squid умеет без подмены сертификата, через SNI получать имя запрашиваемого домена, по списку доменов принимать решение - пропускаем его или отправляем на MITM. С точки зрения пользователя все становится более адекватным. Есть данный домен в реестре - принимай самоподписный сертификат. Нет в реестре этого домена, а просто IP совпадает - проходи. 13 часов назад, st_re сказал: Вот у этого автора https://github.com/max197616/ проект extfilter Я правильно понимаю, что для HTTPS в этом проекте блокируется весь домен если в реестре находится только одна страница? Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.