Cara mengatur Squid Proxy (untuk layanan localhost dan Tor dan I2P)

3

Jadi, inilah dilema saya. Saya punya ide cemerlang bahwa saya bisa menggunakan DNS untuk membuat TLD saya sendiri untuk komputer saya. Saya ingin semua layanan berjalan di localhost karena saya akan membuat situs yang dapat memodifikasi komputer saya. Semua situs ini akan berjalan di bawah .senor TLD. Saya saat ini mendapat TLD ini untuk bekerja dengan server jekyll saya aktif http: //nic.senor/ .

Masalahnya adalah mencoba mendapatkan domain seperti .onion.senor dan .i2p.senor untuk bekerja dengan proksi masing-masing. Jelas saya memiliki pengawasan ketika merencanakan untuk mem-proxying data dari proxy saya ke proxy Tors atau I2Ps karena itu tidak ada dalam rencana awal saya ketika membuat .senor TLD. Setup saya saat ini adalah dnsmasq pada 127.0.0.1:53 yang mengalihkan semua domain yang tidak tercantum dalam file /etc/dnsmasq.hosts ke dnscrypt yang di-host di 127.0.0.1:52.

Saya mencoba mencari jawaban tentang cara mengatur squid seperti ini karena konfigurasi membingungkan saya (saya akan terus mencari) dan bahkan menemukan pertanyaan seperti Squid atas sumber daya i2p, tor dan localhost yang meminta untuk melakukan hal yang sama seperti apa yang ingin saya lakukan, tetapi tidak ada yang menjawabnya sejak ditanya 2 tahun yang lalu, jadi saya masih terjebak. Bantuan atau menunjuk ke arah yang benar akan sangat dihargai!

SenorContento
sumber

Jawaban:

2

Edit 3: Jadi, saya masih mengerjakan jawaban lengkapnya, tapi setidaknya saya punya proksi sendiri dengan Squid. Saya hanya perlu mencari cara untuk mendapatkan Tor dan I2P untuk bekerja dengan Squid. (Saya juga memiliki masalah dalam mendapatkan proxy untuk bekerja di luar browser saat menguji di Android saya, tetapi itu berada di luar cakupan pertanyaan ini, ditambah lagi saya harus menonaktifkan koneksi data saya untuk membuat koneksi server untuk bekerja di Android saya tanpa membuang DNS tidak menemukan kesalahan, untuk hal-hal seperti nic.senor dan mailpile.senor).

Sunting 3 (lanjutan): Saya telah memodifikasi konfigurasi sehingga saya dapat terhubung ke Tor pada .onion dan I2P pada .i2p. Saya telah menguji I2P, tetapi karena Tor saat ini diblokir pada koneksi saya, saya harus mengatasinya untuk menguji apakah Tor bekerja nanti, namun, saat ini cukup baik untuk saya, dan mungkin di masa depan jika saya mendapatkan Tor tidak terblokir, saya akan menambahkan proksi terpisah saya sendiri untuk Tor (untuk tujuan "Buku Alamat" Tor (karena dnsmasq tidak mendukung CNAME, sayangnya :()). (Saya mendapat bantuan dari https //serverfault.com/questions / 198806 / squid-select-parent-dependent-on-asked-url? Newreg = 6cd1dcadf97e4794bfcf4f1dcf977426). Ini cukup baik bagi saya untuk menerima jawaban ini, jadi yang tersisa hanyalah tweak dan pengujian! :)

Pada dasarnya, untuk implementasi jaringan pribadi saya, saya pertama-tama memiliki browser, yang kemudian melewati proxy saya, yang kemudian akan menyelesaikan permintaan dns secara internal (seperti menggunakan server dns laptop saya), yang kemudian akan menghubungkan saya ke situs apa pun yang saya ingin yang dapat diakses ke laptop saya.

Sedangkan untuk resolver DNS, saya menggunakan dnsmasq dengan file hosts yang terletak di /etc/dnsmasq.hosts, yang kemudian merutekan apa pun yang tidak di-cache atau ditemukan di file hosts ke dnscrypt-proxy. DNSMasq berada di 127.0.0.1:53 sementara DNSCrypt berada di 127.0.0.1:52.

Situs web yang ditemukan di dnsmasq.hosts terletak di port 80 dan 443 dan menggunakan nginx untuk merutekan koneksi apa pun yang dimilikinya ke berbagai server lain, seperti rute blog.senor ke server Jekyll yang terletak di 127.0.0.2:4000 (saya mungkin harus memblokir akses langsung ke URL ini menggunakan Squid), toh nic.senor tetap saja menunjuk https: //mailpile.senor/ karena saat ini tidak memiliki situs yang tepat, dan mailpile.senor pergi ke mailpile di 127.0.0.1:33.411. TLS ini berfungsi karena saya memiliki root CA sendiri. Saya mengimpor ke ponsel dan laptop saya (saya membuatnya dengan Open SSL menggunakan instruksi dari https://datacenteroverlords.com/2012/03/01/creating-your-own-ss- ).

Contoh file konfigurasi nginx yang saya gunakan untuk situs saya (dengan sedikit modifikasi):

/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

Sunting 1: Saya baru saja Wiresharked proxy saya dan menyadari bahwa auth dasar tidak mengenkripsi data saya sama sekali, jadi saya sekarang juga bekerja memperbaikinya!

Sunting 2: Saya telah menemukan http //patchlog.com/security/squid-digest-authentication/ (mengambil: karena perlu 10 rep untuk mengirim lebih dari 2 tautan pesan) yang membantu saya belajar cara membuat sistem otentikasi intisari dan cara membuat file kata sandi baru, yang hanya membuat md5sum dari $ user: $ realm: $ pass. Saya juga mengetahui bahwa digest_pw_auth telah diubah namanya menjadi digest_file_auth dari https //bbs.archlinux.org/viewtopic.php?id=152346.

/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
SenorContento
sumber