Como configurar o Squid Proxy (para serviços localhost e Tor e I2P)

3

Então, aqui está o meu dilema. Eu tive essa brilhante ideia de que eu poderia usar o DNS para criar meu próprio TLD para o meu computador. Eu queria que todos os serviços fossem executados no host local, pois eu criaria sites que podem modificar meu computador. Todos esses sites serão executados no TLD .senor. Atualmente, tenho esse TLD para trabalhar com meu servidor jekyll no link .

O problema está em tentar obter domínios como .onion.senor e .i2p.senor para trabalhar com seus respectivos proxies. Obviamente, eu tinha supervisão quando planejava dados de proxy do meu proxy para o proxy Tors ou I2Ps, pois isso não estava no meu plano original ao criar o TLD .senor. Minha configuração atual é dnsmasq em 127.0.0.1:53 que redireciona qualquer domínio não listado no arquivo /etc/dnsmasq.hosts para dnscrypt que está hospedado em 127.0.0.1:52.

Eu tentei procurar por respostas sobre como configurar o squid assim como a configuração me confunde (eu vou continuar procurando) e até encontrei perguntas como Squid sobre i2p, tor e localhost recursos que pede para fazer o mesmo que eu quero fazer, mas ninguém respondeu, uma vez que foi perguntado 2 anos atrás , então eu ainda estou preso. Qualquer ajuda ou apontar na direção certa será muito apreciada!

    
por SenorContento 19.09.2016 / 16:55

1 resposta

2

Editar 3: Então, eu ainda estou trabalhando na resposta completa, mas pelo menos eu tenho o proxy em si com o Squid. Eu só preciso descobrir como fazer com que o Tor e o I2P trabalhem com o Squid. (Eu também tenho problemas para fazer o proxy funcionar fora do navegador ao testar no meu Android, mas isso está fora do escopo desta questão , mais eu tenho que desativar minha conexão de dados para obter as conexões de servidores para trabalhar no meu android sem lançar um erro de DNS não encontrado, para coisas como nic.senor e mailpile.senor).

Editar 3 (continuação): Eu modifiquei a configuração para que eu possa conectar ao Tor on .onion e I2P no .i2p. Eu testei o I2P, mas como o Tor está atualmente bloqueado na minha conexão, eu terei que contornar isso para testar se o Tor funciona mais tarde, no entanto, isso é bom o suficiente para mim, e talvez no futuro se eu conseguir o Tor desbloqueado, vou adicionar no meu próprio proxy separado para Tor (para o propósito de um Tor "Address Book" (como dnsmasq não suporta CNAME, infelizmente :()). (Eu tenho a ajuda de https //serverfault.com/questions / 198806 / squid-selects-parent-depending-on-request-url? Newreg = 6cd1dcadf97e4794bfcf4f1dcf977426). Isso é bom o suficiente para eu aceitar esta resposta, então tudo o que resta são ajustes e testes!:)

Basicamente, para minha implementação da minha rede privada, primeiro tenho meu navegador, que então passa pelo meu proxy, que resolverá as solicitações de dns internamente (como no servidor DNS do meu laptop), que então me conectará a qualquer site que eu queira que seja acessível ao meu laptop.

Quanto ao resolvedor de DNS, eu uso o dnsmasq com um arquivo hosts localizado em /etc/dnsmasq.hosts, que então encaminha qualquer coisa não armazenada em cache ou localizada no arquivo de hosts para dnscrypt-proxy. O DNSMasq reside em 127.0.0.1:53 enquanto o DNSCrypt reside em 127.0.0.1:52.

Os sites encontrados em dnsmasq.hosts estão localizados nas portas 80 e 443 e usando o nginx para rotear quaisquer conexões que ele tenha para vários outros servidores, como rotas blog.senor para um servidor Jekyll localizado em 127.0.0.2:4000 (I provavelmente deve bloquear o acesso direto a esses URLs usando o Squid), bem, de qualquer forma, o nic.senor apenas aponta para o link , já que atualmente não tem um site adequado e mailpile.senor vai para o mailpile em 127.0.0.1:33411. Este TLS funciona porque eu tenho minha própria CA raiz Eu importei para o meu telefone e laptop (eu gerenciei com o Open SSL usando instruções de ).

Um exemplo de arquivo de configuração do nginx que eu uso para meus sites (com pequenas modificações):

/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

Editar 1: Acabei de usar o meu proxy e percebi que a autenticação básica não criptografa meus dados, então agora estou trabalhando para corrigir isso!

Editar 2: Eu encontrei http //patchlog.com/security/squid-digest-authentication/ (tirei: por causa da necessidade de 10 rep para postar mais de 2 links de mensagem) que me ajudou a aprender como crie o sistema de autenticação digest e como criar o novo arquivo de senha, que está apenas criando um md5sum off de $ user: $ realm: $ pass. Eu também aprendi que o digest_pw_auth foi renomeado para digest_file_auth de 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
    
por 26.09.2016 / 16:35