пятница, 2 октября 2015 г.

Squid: Tor + Privoxy + transparent DNS redirect. Часть III

Ранее я уже писал, как организовать в рамках прокси-сервера торифицированный туннель для контролируемого пробивания разного рода блокировок:
В них, однако, совершенно не рассматривается вопрос (и многие это уже обнаружили) туннелирования HTTPS - соединений.

Суть в том, что для Squid версии 3.4.x это, к сожалению, невозможно. 

Говоря простым языком - HTTPS нельзя наравне с HTTP отправить в кэш-пир, в нашем случае - в туннель.

Совсем нельзя?

В настоящее время - уже можно. С некоторыми оговорками, однако - можно.

Введение


Проблема возникла в тот момент, когда повсюду стали переходить на HSTS. Я, возможно, еще скажу, почему я не считаю волосы на лобке значительной защитой против изнасилования. Хотя это и так очевидно любому, оборудованному головным мозгом.

Итак, два вопроса.

Через описанную ранее конфигурацию невозможно попасть на:

  • https://archive.org
  • https://torproject.org
в рамках нашего, отдельно взятого Мордора.

Может, это все же возможно?


Безусловно.

Два пререквизита.
  1. Вам потребуется Squid версии от 3.5.6 и выше (для версий ниже я не тестировал, ничего сказать не могу)
  2. SSL Bump придется отключить для всех HTTPS-сайтов (т.е. использовать splice), которые надо загонять в туннель (re-crypting, как сказал Амос, не поддерживается в текущих версиях)
Конфигурацию Squid следует скорректировать следующим образом (предполагается, что вы имеете настроенную конфигурацию с отлаженным SSL Bump):

 # Privoxy+Tor acl  
 acl tor_url dstdom_regex "C:/Squid/etc/squid/url.tor"  
   
 # SSL bump rules  
 sslproxy_cert_error allow all  
 acl DiscoverSNIHost at_step SslBump1  
 ssl_bump peek DiscoverSNIHost  
 acl NoSSLIntercept ssl::server_name_regex -i "C:/Squid/etc/squid/url.nobump"  
 acl NoSSLIntercept ssl::server_name_regex -i "C:/Squid/etc/squid/url.tor"  
 ssl_bump splice NoSSLIntercept  
 ssl_bump bump all  
   
 # Privoxy+Tor access rules  
 never_direct allow tor_url  
      
 # Local Privoxy is cache parent  
 cache_peer 127.0.0.1 parent 8118 0 no-query no-digest default  
   
 cache_peer_access 127.0.0.1 allow tor_url  
 cache_peer_access 127.0.0.1 deny all  
   

Замечание
Файлы utl.tor и url.nobump имеют одинаковый формат dstdom_regex. Обратите внимание, что url.tor имеет совпадающий формат с url.nobump и добавлен в ACL для splice.

Если все правильно, в access.log вы увидите следующее:

 1446552738.421  8015 127.0.0.1 TCP_TUNNEL/200 68644 CONNECT www.torproject.org:443 - FIRSTUP_PARENT/127.0.0.1 -  
 1446552738.647 10617 127.0.0.1 TCP_TUNNEL/200 136911 CONNECT www.torproject.org:443 - FIRSTUP_PARENT/127.0.0.1 -  
 1446552738.808  8401 127.0.0.1 TCP_TUNNEL/200 23501 CONNECT www.torproject.org:443 - FIRSTUP_PARENT/127.0.0.1 -  
 1446552738.969  8605 127.0.0.1 TCP_TUNNEL/200 30266 CONNECT www.torproject.org:443 - FIRSTUP_PARENT/127.0.0.1 -  
 1446552739.131  8687 127.0.0.1 TCP_TUNNEL/200 2796 CONNECT www.torproject.org:443 - FIRSTUP_PARENT/127.0.0.1 -  
 1446552740.910  8015 127.0.0.1 TCP_TUNNEL/200 7841 CONNECT www.torproject.org:443 - FIRSTUP_PARENT/127.0.0.1 -  
   

Вуаля:



Имел я господ цензоров противоестественным образом.

Заключение


До тех пор, пока в МарсТелеКомах нанимают на работу недоумков (по какому угодно признаку, кроме IQ и профессионализма) - нам не страшны никакие DPI. Привет анацефалам от сапиенсов!