web-dev-qa-db-ja.com

Squidプロキシの設定方法(ローカルホストサービスとTorおよびI2P用)

だから、これが私のジレンマです。 DNSを使用して、自分のコンピューター用に独自のTLDを作成できるという素晴らしいアイデアがありました。コンピューターを変更できるサイトを作成するため、すべてのサービスをローカルホストで実行する必要がありました。これらのサイトはすべて、.senorTLDの下で実行されます。私は現在、このTLDを http://nic.senor/ のjekyllサーバーで動作させるようにしています。

問題は、.onion.senorや.i2p.senorなどのドメインをそれぞれのプロキシで機能させようとすることです。明らかに、.senor TLDを作成するときの元の計画にはなかったため、プロキシからTorsまたはI2Psプロキシにデータをプロキシする計画を立てるときに見落としがありました。私の現在の設定は127.0.0.1:53のdnsmasqで、/ etc/dnsmasq.hostsファイルにリストされていないドメインを127.0.0.1:52でホストされているdnscryptにリダイレクトします。

構成が私を混乱させるので(私は検索を続けます)、このようにsquidをセットアップする方法についての答えを検索しようとしましたが、 Squid over i2p、tor、localhostリソース などの質問も見つかりました。やりたいことですが、2年前に聞いてから誰も答えてくれなかったので、まだ行き詰まっています。どんな助けや正しい方向への指示も大歓迎です!

3
Alexis Evelyn

編集3: それで、私はまだ完全な答えに取り組んでいます、しかし少なくとも私はSquidでプロキシ自体をダウンさせています。 TorとI2PをSquidで動作させる方法を理解する必要があります。 (Androidでテストするときに、プロキシをブラウザーの外部で機能させるのにも問題がありますが、それはこの質問の範囲外です。さらに、サーバー接続をAndroid nic.senorやmailpile.senorなどのDNSが見つからないというエラーをスローせずに)。

編集3(続き):構成を変更して、.onionのTorと.i2pのI2Pに接続できるようにしました。 I2Pをテストしましたが、Torは現在接続でブロックされているため、後でTorが機能するかどうかをテストするために回避する必要があります。ただし、現在はこれで十分であり、将来的にはTorを入手できればブロックを解除して、Tor用に独自のプロキシを追加します(Torの「アドレス帳」の目的で(dnsmasqはCNAMEをサポートしていないため、残念ながら:())。(https://serverfault.com/questionsからヘルプを入手しました)/198806/squid-selects-parent-depending-on-requested-url?newreg = 6cd1dcadf97e4794bfcf4f1dcf977426)これは私がこの答えを受け入れるのに十分なので、残っているのは微調整とテストだけです!:)

基本的に、プライベートネットワークの実装では、最初にブラウザを使用し、次にプロキシを経由して、内部でDNS要求を解決し(ラップトップのDNSサーバーを使用する場合と同様)、任意のサイトに接続します。それが私のラップトップにアクセスできるようにしたい。

DNSリゾルバーについては、/ etc/dnsmasq.hostsにあるhostsファイルでdnsmasqを使用します。これにより、hostsファイルにキャッシュされていないものや見つからないものはすべてdnscrypt-proxyにルーティングされます。 DNSMasqは127.0.0.1:53にあり、DNSCryptは127.0.0.1:52にあります。

Dnsmasq.hostsにあるWebサイトは、ポート80と443の両方にあり、nginxを使用して、他のさまざまなサーバーへの接続をルーティングします。たとえば、blog.senorは127.0.0.2:4000にあるJekyllサーバーにルーティングします(おそらくブロックする必要があります) Squidを使用してこれらのURLに直接アクセスする)、とにかくnic.senorは https://mailpile.senor/ を指しているだけです。現在、適切なサイトがなく、mailpile.senorはmailpileに移動します。 127.0.0.1:33411に。このTLSは、電話とラップトップの両方にインポートした独自のルートCAがあるため機能します( https://datacenteroverlords.com/2012/03/01/creating-your-からの指示を使用してOpen SSLで生成しました) own-ssl-certificate-authority / )。

私が自分のサイトに使用しているサンプルのnginx構成ファイル(マイナーな変更を加えたもの):

/ etc/nginx/conf.d/mailpile.conf

## our http server at port 80
server {
    listen              127.0.0.3:80 default;
    server_name         mailpile.senor;

    ## redirect http to https ##
    rewrite        ^ https://$server_name$request_uri? permanent;
}

## our https server at port 443
server {
    # IP Address, Port, and Protocol to use
    listen              127.0.0.3:443 ssl;

    # Server URL
    server_name         mailpile.senor;

    # Certs
    ssl_certificate     certs/public/mailpile.senor.pub.pem;
    ssl_certificate_key certs/private/mailpile.senor.priv.pem;

    # Only use "Safe" TLS protocols, not SSL or TLS 3.0 (POODLE Attack)
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;

    # Use ciphers the server supports
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

    # Don't know how secure this elliptic curve algorith is, so needs more research!
    #ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0

    # Basically reuses ssl sessions to speed up page load
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off; # Requires nginx >= 1.5.9

    # Stapling is sending OSCP info (may require resolver too)
    #ssl_stapling on; # Requires nginx >= 1.3.7
    #ssl_stapling_verify on; # Requires nginx => 1.3.7
    #resolver $DNS-IP-1 $DNS-IP-2 valid=300s;
    #resolver_timeout 5s;

    # Remember HSTS? Well, have FUN!
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";

    # Prevents this site from being loaded in an iframe
    add_header X-Frame-Options DENY;

    # Prevents browser from changing MIME-Types from what the server says (supposedly more secure)
    add_header X-Content-Type-Options nosniff;

    # File with revoked certificates used to determine if client-side cert is valid or not!
    #ssl_dhparam /etc/nginx/ssl/dhparam.pem;

    location / {
        access_log /var/log/nginx/mailpile_access.log;
        error_log /var/log/nginx/mailpile_error.log info;

        proxy_pass http://127.0.0.1:33411;
        proxy_set_header X-Forwarded-Host $Host;
        proxy_set_header X-Forwarded-Server $Host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

/ etc/dnsmasq.hosts

127.0.0.1 nic.senor
127.0.0.2 blog.senor
127.0.0.3 mailpile.senor

編集1:プロキシをWiresharkしたところ、基本認証ではデータがまったく暗号化されないことに気付いたので、現在、その修正にも取り組んでいます!

編集2:http://patchlog.com/security/squid-digest-authentication/(2つ以上のリンクメッセージを投稿するために10人の担当者が必要なため)を見つけたので、方法を学ぶのに役立ちましたダイジェスト認証システムを作成し、新しいパスワードファイルを作成する方法。これは$ user:$ realm:$ passからmd5sumを作成するだけです。また、https://bbs.archlinux.org/viewtopic.php?id = 152346からdigest_pw_authの名前がdigest_file_authに変更されていることも知りました。

/ etc/squid/squid.conf

auth_param digest program /usr/lib/squid/digest_file_auth -c /etc/squid/passwords
auth_param digest realm Proxy
auth_param digest child 5
auth_param digest nonce_garbage_interval 5 minutes
auth_param digest nonce_max_duration 30 minutes
auth_param digest nonce_max_count 50

acl authenticated proxy_auth REQUIRED
http_access allow authenticated

http_port 3128

# External Proxies
# Format is: hostname  type  http_port  udp_port
cache_peer 127.0.0.1 parent 4444 0
cache_peer 127.0.0.2 parent 9050 0

# Determines When to Use External Proxies
cache_peer_domain 127.0.0.1 .i2p
cache_peer_domain 127.0.0.2 .onion

acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

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 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl Safe_ports port 1025-65535  # unregistered ports

acl CONNECT method CONNECT

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

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
vrefresh_pattern .               0       20%     4320
2
Alexis Evelyn