3

Итак, вот моя дилемма. У меня была яркая идея, что я могу использовать DNS, чтобы создать свой собственный TLD для своего компьютера. Я хотел, чтобы все службы работали на локальном хосте, так как я буду создавать сайты, которые могут изменить мой компьютер. Все эти сайты будут работать под доменом .senor. В настоящее время я получил этот TLD для работы с моим сервером jekyll по адресу http://nic.senor/.

Проблема заключается в попытке заставить домены, такие как .onion.senor и .i2p.senor, работать с их соответствующими прокси. Очевидно, что я планировал проксировать данные с моего прокси на Tors или I2Ps, поскольку этого не было в моем первоначальном плане при создании TLD .senor. Моя текущая настройка - dnsmasq на 127.0.0.1:53, которая перенаправляет любой домен, не указанный в файле /etc/dnsmasq.hosts, на dnscrypt, который размещен на 127.0.0.1:52.

Я попытался найти ответы о том, как настроить squid, как это, так как конфигурация сбивает меня с толку (я буду продолжать поиск), и даже нашел такие вопросы, как Squid over i2p, tor и ресурсы localhost, которые просят сделать то же самое, что я хочу сделать, но никто не ответил на него, так как его спросили 2 года назад, так что я все еще застрял. Любая помощь или указание в правильном направлении будет принята с благодарностью!

1 ответ1

2

Редактировать 3: Итак, я все еще работаю над полным ответом, но по крайней мере у меня есть сам прокси с Squid.Мне просто нужно выяснить, как заставить Tor и I2P работать со Squid. (У меня также возникают проблемы с настройкой прокси-сервера для работы вне браузера при тестировании на моем Android, но это выходит за рамки этого вопроса, плюс я должен отключить соединение для передачи данных, чтобы соединения с серверами работали на моем андроиде, не выбрасывая ошибка DNS не найдена, для таких вещей, как nic.senor и mailpile.senor).

Изменить 3 (продолжение): я изменил конфигурацию, чтобы я мог подключиться к Tor на .onion и 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, я использую dnsmasq с файлом hosts, расположенным в /etc/dnsmasq.hosts, который затем направляет все, что не кэшировано или не найдено в файле hosts, в dnscrypt-proxy. DNSMasq находится на 127.0.0.1:53, а DNSCrypt - на 127.0.0.1:52.

Веб-сайты, найденные в dnsmasq.hosts, расположены на портах 80 и 443 и используют nginx для маршрутизации любых подключений к различным другим серверам, таким как маршруты blog.senor, к серверу Jekyll, расположенному по адресу 127.0.0.2:4000 (вероятно, следует заблокировать прямой доступ к этим URL-адресам с помощью Squid), в любом случае nic.senor просто указывает на https://mailpile.senor/, так как в настоящее время у него нет надлежащего сайта, а mailpile.senor переходит на mailpile 127.0.0.1:33411. Этот TLS работает, потому что у меня есть собственный корневой CA, который я импортировал как на свой телефон, так и на ноутбук (я сгенерировал его с помощью Open SSL, используя инструкции с https://datacenteroverlords.com/2012/03/01/creating-your-own-ssl- центр сертификации /).

Пример файла конфигурации 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: Я просто проверил мой прокси и понял, что базовая аутентификация вообще не шифрует мои данные, так что теперь я также работаю над исправлением этого!

Редактировать 2: я нашел http //patchlog.com/security/squid-digest-authentication/ (забрал: из-за необходимости 10 повторений, чтобы опубликовать более 2 ссылок), который помог мне узнать, как создать систему аутентификации дайджеста и как создать новый файл паролей, который просто создает md5sum из $ user: $ realm: $ pass. Я также узнал, что digest_pw_auth был переименован в digest_file_auth с 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .