Roskomnadzorロックをバむパスする透過的なHTTPSプロキシ

こんにちは、ハブロフスク垂民 Roskom が監督の恥のテレグラムをブロックしようずするため、必芁なリ゜ヌスぞのアクセスに関する問題に最近遭遇した人は倚いず思いたす。 そしお、ここでのコメントは䞍芁だず思いたす。 事実-これらのリ゜ヌスは䜕のせいでもありたせんが、ブロックされおいたす。 Viber、ReCaptcha、GoogleFonts、Youtubeなどで問題が発生したした電報自䜓を陀く。 これは私の組織で起こり、私たちが空気ずしお必芁ずする無実のサヌビスの䞀郚です。 ある時点で、すべおがプロキシサヌバヌを䜿甚しお解決されたしたが、それらは䞍安定であるか、完党にオフになりたしたたた、匷力で匷力なILVによっおブロックされたした。



たくさんの蚘事を読んだ埌、アむデアはSquidにTorを通しお個々のURLを蚱可するように教えたした。 そのような方法を䜿甚するかどうかはあなた次第です。 しかし、実装埌、それ以前の問題はすべお消えたず蚀いたす。 誰が気にしたすか、私たちは猫の䞋に行きたす。



これはなぜですか
この蚘事は、わが囜で起こっおいる党くのナンセンスに䞍法に苊しんでいる人々を助けるためだけに曞かれおいたす。 たた、この蚘事は本質的に他の蚘事の続きであるため 、ここでは長幎のバグを修正するこずを提案しおいるため、蚌明曞の眮換なしのHTTPSずHTTPおよびHTTPSの䞡方による蚪問を远跡する機胜を備えた、たさに「透明な」Squidを必芁ずする人を察象ずしおいたすログでhttpsドメむン名を衚瀺するこずを蚱可せず、Squidの新しいバヌゞョンを䜿甚するこずを蚱可したせんでした。 たあ、ちょうどむカを䜿甚するこずに興味がある人のために。



利点は䜕ですか
  • 無制限のスケヌラビリティ
  • サポヌトず管理の比范的容易さ
  • これが重芁な堎合は、リストに瀺されおいるリ゜ヌスぞの匿名アクセスを提䟛できたすこれは蚘事のトピックではありたせんが、匿名性は
  • 安定性。 耇数のTorサヌビス異なる構成ファむルを䜿甚する堎合、それらをSquidに接続しおラりンドロビンを取埗できたす。
  • 絶察に無料です。 氞遠に。




私は䜕も知りたせん、Squid \ Torは遅いです、私は行っお、䞘の䞊のVPNでVPSを取埗したす
おめでずうございたす Roskomnadzorがあなたに䞍䟿を匕き起こしたず本圓に決めたのに、状況から抜け出すためにただお金を払わなければなりたせんか わかった 蚘事をスキップしお、VPNトンネルを䞊げおください。 ずころで、VPNは正垞にブロックされたす。 簡単です。 そしお最近の出来事を螏たえお、近い将来、VPSを䜿甚しお法埋レベルでロックをバむパスするこずは誰もできないこずをお䌝えしたす。 さらに、すべおに加えお、VPSは「単に電報が隣に座っおいるから」ロックに入れるこずもできたす。 Torはブロックしたせん。 obfsを䜿甚しお構成する堎合、どこにも決しおこのobfsは考慮されないため、トピックはおそらく別の蚘事になりたす。 そしお、VPNでそのようなVPSを䞊げるには䜕人必芁でしょうか それを提䟛する方法は ここでは、゜リュヌションははるかに簡単で信頌性が高く、必芁に応じお非垞に高速で、無料です。 そのため、他の読者を誀解させる前に、VPNのすべおの+および-VPSを再床怜蚎しおから、Squid + Torが䜎速で信頌性の䜎い゜リュヌションであるず䞻匵しおください。



Torがブロックしたす 䞭囜では、あそこに、すでにブロックされおいたす
いや いや そしお再びいいえ。 䞭囜では、Torは蚭定されたobfsで動䜜したす。 それは玠晎らしく機胜したす。 䞖界にはTorをブロックする方法はありたせん。 その胜力、粟神、財政を備えた䞭囜でさえ、これを行うこずができたせんでした。



Torは遅い そしお、もしあなたがobfsを䜿っお䜜業するなら、䞀般的には恐怖です
速床が適切なレベルにあるこずを確認する方法を説明した公匏ドキュメントずむンタヌネット䞊の倚数の蚘事を参照しおください。 繰り返したすが、このように異なる構成でTorのいく぀かのコピヌをセットアップするず、それらをSquidにアタッチしおラりンドロビンを取埗できたす。



だから、最初に、少し理論。 誰もが知っおいるように、TorはHTTPプロキシではなく、基盀ずなるSquidの盎接のピアにするこずはできたせん。 SOCKSプロキシを提䟛したすもちろん、これだけでなく、これが必芁です。 TorをSquidず結婚させるには、TorからSquidぞ、たたはその逆のコンダクタヌの圹割を果たすこずができる䜕かが必芁です。 そしおもちろん、皆さん、これはPrivoxyです。 たったく同じように、圌は盎接の仲間になり、すべおをTorに送るこずができたす。



私が蚀ったように、それはたくさんの蚘事が読たれたしたが、私にふさわしいものはありたせんでした。 この蚘事はここで出くわしたしたが 、バンプは必芁ないので、私にはあたり適しおいたせんでした。 䞀般に、利甚可胜なすべおの蚘事、ほずんどすべおは、バンプたたはhttpのみのいずれかを意味し、私の堎合はHTTPS、スプラむス、および透明性が必芁です。 たた、 これずこれを芋たしたが、たったく異なるアプロヌチがありたす。 長所ず短所。 私は自分でSquid + Torの束を遞びたした。



蚌明曞のなりすたしをせずにHTTPSプロキシを䜿甚しお透過的なSquidを䜜成する方法に぀いおはすでに曞いおいたす。 そしおもちろん、私はそれにアむデアを実装しようずしたした。 しかし、倱望は私を埅っおいたした。 HTTPリク゚ストは完党にTORに送信されたしたが、HTTPSは送信されたせんでした。 この問題はあたりよく知られおいたせんが、開発者の1人から、これがSquidの叀いバヌゞョンの欠点であるこずを知りたした。 しかし、実隓䞭に解決策が芋぀かりたした-Squid 3.5.27、このバグは修正されたした+ IPアドレスの代わりにログhttpsの矎しいドメむン名。 しかし、ここでも、いく぀かの倱望が私を埅っおいたした。これに぀いおは以䞋で説明したす。 しかし、圌らが蚀うように、すべおがファむルでドヌプされおいたす。



したがっお、゜ヌスデヌタ



  1. Debian Stretch9x86x64では詊行したせんでした
  2. リポゞトリからのSquid Squid 3.5.23
  3. 新鮮なむカはオフサむトから仕分け
  4. Openssl
  5. Libecap3
  6. Tor
  7. プリボキシ
  8. たっすぐな腕ずクッキヌずたくさんのコヌヒヌ


むカのペンを収集するか、既補のパッケヌゞ以䞋のリンクを入れおください。 もし私がブラックゞャックずw ...りむルスをプレむしたず思ったら、自分でコンパむルしおください。 別の配垃キットがある堎合もコンパむルする必芁がありたすUbuntaの堎合はむンストヌルしたす。 執筆時点でStretchリポゞトリにあるSquid 3.5.23のバヌゞョンを収集し、Webサむトから新しい3.5.27゜ヌスにアップグレヌドしたす。 HTTPS + Squidに関する最初の蚘事ずは異なり、Libresslなしでビルドしたす。



したがっお、アセンブリの準備をしたす。



apt-get install fakeroot build-essential devscripts apt-get build-dep squid3 apt-get install libecap3 apt-get install libecap3-dev apt-get install libssl1.0-dev apt-get install libgnutls28-dev
      
      





重芁
別のバヌゞョンではなくlibssl1.0-devをむンストヌルするこずが非垞に重芁です。そうしないず、Squidが遅れるか、理解できない゚ラヌのためにたったく収集されたせん。





次に、Squid 3.5.23の゜ヌスを取埗したす



 apt-get source squid3
      
      





この特定のアヌカむブをSquid゜ヌスでダりンロヌドしたす。



 wget -O squid-3.5.27-2018.tar.gz http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.27-20180318-r1330042.tar.gz
      
      





Squid゜ヌスディレクトリに移動し、゜ヌスを新しくダりンロヌドした゜ヌスに曎新したす。



 cd squid3-3.5.23/ uupdate -v 3.5.27-2018 ../squid-3.5.27-2018.tar.gz
      
      





曎新された゜ヌスで新しく䜜成されたカタログに移動したす。



 cd ../squid3-3.5.27-2018
      
      





debian / rulesにコンパむルオプションを远加したす。



 --enable-ssl \ --enable-ssl-crtd \ --with-openssl
      
      





ヒント
ちなみに、䞍芁なオプションを枛らすこずができたす。これにより、コンパむルが高速化されたす



次に、このパッチで゜ヌスにパッチを適甚する必芁がありたす。



 <b>client_side_request.patch</b> --- src/client_side_request.cc Thu Aug 18 00:36:42 2016 +++ src/client_side_request.cc Mon Sep 19 04:41:45 2016 @@ -519,20 +519,10 @@ // note the DNS details for the transaction stats. http->request->recordLookup(dns); - if (ia != NULL && ia->count > 0) { - // Is the NAT destination IP in DNS? - for (int i = 0; i < ia->count; ++i) { - if (clientConn->local.matchIPAddr(ia->in_addrs[i]) == 0) { - debugs(85, 3, HERE << "validate IP " << clientConn->local << " possible from Host:"); - http->request->flags.hostVerified = true; - http->doCallouts(); - return; - } - debugs(85, 3, HERE << "validate IP " << clientConn->local << " non-match from Host: IP " << ia->in_addrs[i]); - } - } - debugs(85, 3, HERE << "FAIL: validate IP " << clientConn->local << " possible from Host:"); - hostHeaderVerifyFailed("local IP", "any domain IP"); + debugs(85, 3, HERE << "validate IP " << clientConn->local << " possible from Host:"); + http->request->flags.hostVerified = true; + http->doCallouts(); + return; } void
      
      





それは䜕のためですか 説明したす。 ピヌクずスプラむスに関する最初の蚘事を曞いたずき、新しいバヌゞョンは機胜しないず蚀っおいたしたが、このパッチはSquidがHTTPS接続を遞択的に切断するずいう非垞に問題を修正したすcache.logのメッセヌゞ



 SECURITY ALERT: Host header forgery detected on ... (local IP does not match any domain IP)
      
      





実際には、あるホストでは䜕かが1぀のIPに、時には次のIPでは別のIPに、Squid自䜓では3番目のIPに解決されたす。 DNSキャッシュがあり、同期的に曎新されたせん。 Squidはキャッシュ内のIPドメむンず䞀臎せずキャッシュを少し前たたは埌に曎新したため、接続を䞭止したす。 保護のように芋えたすが、珟圚では通垞ラりンドロビンDNSず芋なされおいたす。 開発者は再保険されたす。 そしお、私たちはそれをたったく必芁ずしたせん このパッチがセキュリティリスクをもたらす可胜性があるず蚀う人には、このパッチに぀いおSquid開発チヌムに盎接関係しおいるYuri Voinovに盞談したず答えたす。 ここには脅嚁はありたせん



そのため、パッチ甚のファむルを䜜成し、コヌドをスロヌしたした。パッチを適甚する必芁がありたす。



 patch -p0 -i client_side_request.patch
      
      





次に、コンパむル䞭に1぀のパッチの適甚をキャンセルする必芁がありたすそうしないず、既に適甚されおいるため、このパッチを適甚できないずいう゚ラヌが衚瀺されたす。 debian / patch / seriesに行き、そこに0003-SQUID-2018_1.patchをコメントアりトし 、その前にを付けたす



 #0003-SQUID-2018_1.patch
      
      





それでは、パッケヌゞのコンパむルずアセンブリ



 dpkg-buildpackage -us -uc -nc
      
      





squid-langpackをむンストヌルする



 apt-get install squid-langpack
      
      





新しいパッケヌゞをむンストヌルしたす



 dpkg -i squid-common_3.5.27-2018-1_all.deb dpkg -i squid_3.5.27-2018-1_i386.deb dpkg -i squid3_3.5.27-2018-1_all.deb
      
      





aptが䞭毒を誓うなら、する



 apt-get -f install
      
      





次に、Squidの起動を無効にする必芁がありたすデフォルトでは、initファむルが䜿甚されたす。SquidはPIDファむルのアクセス䞍胜に぀いお文句を蚀いたす



 systemctl disable squid
      
      





ディレクトリ/ etc / systemd / systemに systemdサヌビスを䜜成したすサヌビスファむルは゜ヌスにあり、ここに完党にコピヌされたす



 cat /etc/systemd/system/squid3.service ## Copyright (C) 1996-2018 The Squid Software Foundation and contributors ## ## Squid software is distributed under GPLv2+ license and includes ## contributions from numerous individuals and organizations. ## Please see the COPYING and CONTRIBUTORS files for details. ## [Unit] Description=Squid Web Proxy Server After=network.target [Service] Type=simple ExecStart=/usr/sbin/squid -sYC -N ExecReload=/bin/kill -HUP $MAINPID KillMode=process [Install] WantedBy=multi-user.target
      
      





オンにしたす

 systemctl enable squid3.service
      
      







Tor、privoxyをむンストヌルする



 apt-get install tor privoxy
      
      





個人的にはTorの蚭定にはたったく觊れたせんでしたが、Privoxyの蚭定はこれに枛らすこずができたす



 listen-address 127.0.0.1:8118 toggle 0 enable-remote-toggle 0 enable-remote-http-toggle 0 enable-edit-actions 0 forward-socks5t / 127.0.0.1:9050 . max-client-connections 500
      
      





ほが完了。 / etc / squidディレクトリに移動しお、そこに䜕かを倉曎したしょう。 スプラむスに必芁なpemファむルを䜜成したす。



 openssl req -new -newkey rsa:1024 -days 365 -nodes -x509 -keyout squidCA.pem -out squidCA.pem
      
      





そしお、squid.confを次の圢匏で配眮したす。



 acl localnet src 192.168.0.0/24 #   acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT acl SSL method CONNECT # DNS  Squid.     DNS     dns_nameservers 77.88.8.8 #  ,     Tor acl rkn url_regex "/etc/squid/tor_url" http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager http_access allow localnet http_access allow localhost http_access deny all icp_access deny all htcp_access deny all #    intercept http_port 192.168.0.1:3128 intercept options=NO_SSLv3:NO_SSLv2 #    ,       #  ,   ,    ,   #    ,     ,      #   ,     =) http_port 192.168.0.1:3130 options=NO_SSLv3:NO_SSLv2 # ,  HTTPS     https_port 192.168.0.1:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squidCA.pem sslproxy_cert_error allow all sslproxy_flags DONT_VERIFY_PEER #      (    .domain.com) acl blocked ssl::server_name "/etc/squid/blocked_https.txt" acl step1 at_step SslBump1 ssl_bump peek step1 # ,       ssl_bump terminate blocked ssl_bump splice all #     ,     never_direct allow rkn #  ,     ,    - Privoxy cache_peer 127.0.0.1 parent 8118 0 no-query no-digest default cache_peer_access 127.0.0.1 allow rkn cache_peer_access 127.0.0.1 deny all sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320 logfile_rotate 4 pid_filename /var/run/squid.pid
      
      





url_regexリストは次のようになりたすリストは䞀䟋です



 zenway\.ru \.*google\.com \.*viber\.* \.amazon\.com \.fbcdn\.net \.slack\.* media\.api\.viber\.com* static\.viber\.com* secure\.viber.* \*.cloudfront\.net fonts\.gstatic\.com med-edu\.ru
      
      





発蚀
非正芏衚珟を䜿甚したり、dstdomainを䜿甚したり、䞍正にブロックされたサブネットdstのリストを「ねじ」たりするこずもできたす。



このリスト圢匏の詳现に぀いおは、ドキュメントオフィスでお読みください。 結果は埅぀のに長くかかりたせんでした-蚈画通りにすべおが機胜したした。 そしお、それは今日たで有効です。 蚘事は遅れたかもしれたせんが、おそらく将来圹に立぀でしょう。



可胜であれば、トピックを補充したす。



Squid察応パッケヌゞ.deb x86



UPD 05/05/18 torccに行を远加できたす

 HTTPTunnelPort 8118
      
      





基本的にPrivoxyを攟棄したす。 コメントしおくれおありがずう

バグが芋぀かりたした。 HTTPTunnelPortを䜿甚するこずはお勧めしたせん。この1぀が閉じるたで、今のずころPrivoxyが必芁です。 ナヌリ・ボむノフに感謝したす



たた、libecap3に関する蚘事を修正したした。 コンパむルする必芁はありたせんが、Stretchリポゞトリからむンストヌルするだけです。 コメントしおくれたAlucoSTに感謝したす。



UPD 05/05/18同志のdartraiden は 、Torを構成に远加できるこずを瀺唆しおいたす

 ExcludeExitNodes {ru}, {ua}, {by}
      
      





これらの囜では、出力ノヌドの䜿甚は陀倖されたす。



この束の仕事で問題を解決するのを助けおくれたYuri Voinovに感謝したす



All Articles