Како да поставите Dante Proxy за приватни врски на Debian 11


Вовед

Прокси-серверите се тип на серверска апликација која функционира како порта помеѓу крајниот корисник и интернет ресурсот. Преку прокси-сервер, крајниот корисник може да го контролира и следи својот веб-сообраќај за широк спектар на цели, вклучувајќи приватност, безбедност и кеширање. На пример, можете да користите прокси-сервер за да правите веб-барања од различна IP адреса од вашата. Можете исто така да користите прокси-сервер за да истражите како мрежата се опслужува поинаку од една јурисдикција до друга или да избегнете некои методи на надзор или загушување на веб сообраќајот.

Данте е стабилен, популарен, прокси SOCKS со отворен код. Во ова упатство, ќе го инсталирате и конфигурирате Dante да обезбеди SOCKS прокси на серверот Debian 11.

Предуслови

За да го комплетирате овој водич, ќе ви требаат:

  • Дебиан 11 сервер и корисник без корен со sudo привилегии. Можете да дознаете повеќе за тоа како да поставите корисник со овие привилегии во нашето Initial Server Setup with Debian 11 водич.

Ќе го користите името на доменот your_domain во ова упатство, но треба да го замените ова со сопствено име на домен или IP адреса.

Чекор 1 - Инсталирање на Данте

Данте е прокси-сервер со отворен код SOCKS. SOCKS е помалку широко користен протокол, но тој е поефикасен за некои peer-to-peer апликации и се претпочита пред HTTP за некои видови сообраќај. Започнете со извршување на следните команди како корисник без root за да ги ажурирате списоците на вашите пакети и да го инсталирате Dante:

  1. sudo apt update
  2. sudo apt install dante-server

Данте исто така автоматски ќе постави услуга во заднина и ќе започне откако ќе се инсталира. Сепак, тој е дизајниран за благодатно откажување со порака за грешка при првото вклучување, бидејќи се испорачува со оневозможени сите негови функции. Можете да го потврдите ова со користење на командата systemctl:

  1. systemctl status danted.service
Output
● danted.service - SOCKS (v4 and v5) proxy daemon (danted) Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Wed 2021-12-15 21:48:22 UTC; 1min 45s ago Docs: man:danted(8) man:danted.conf(5) Main PID: 14496 (code=exited, status=1/FAILURE) Dec 15 21:48:21 proxies systemd[1]: Starting SOCKS (v4 and v5) proxy daemon (danted)... Dec 15 21:48:22 proxies systemd[1]: Started SOCKS (v4 and v5) proxy daemon (danted). Dec 15 21:48:22 proxies danted[14496]: Dec 15 21:48:22 (1639604902.102601) danted[14496]: warning: checkconfig(): no socks authentication methods enabled. This means all socks requests will be blocked after negotiation. Perhaps this is not intended?

За успешно стартување на услугите на Данте, ќе треба да ги овозможите во конфигурациската датотека.

Конфигурациската датотека на Данте е стандардно обезбедена во /etc/danted.conf. Ако ја отворите оваа датотека користејќи nano или вашиот омилен уредувач на текст, ќе видите долг список на опции за конфигурација, сите оневозможени. Може да се обидете да се движите низ оваа датотека и да овозможите некои опции ред-по-линија, но во пракса ќе биде поефикасно и почитливо да ја избришете оваа датотека и да ја замените од нула. Не грижете се да го направите ова. Секогаш можете да ја прегледате стандардната конфигурација на Данте со навигација до списокот со пакети за повторно да ја добиете конфигурациската датотека на акции, ако некогаш сте сакале. Во меѓувреме, продолжи и избришете го:

  1. sudo rm /etc/danted.conf

Сега можете да го замените со нешто поконцизно. Отворањето датотека со уредувач на текст автоматски ќе ја создаде датотеката ако не постои, па со користење на nano или вашиот омилен текстуален уредувач, сега треба да добиете празна конфигурациска датотека:

  1. sudo nano /etc/danted.conf

Додадете ја следната содржина:

logoutput: syslog
user.privileged: root
user.unprivileged: nobody

# The listening network interface or address.
internal: 0.0.0.0 port=1080

# The proxying network interface or address.
external: eth0

# socks-rules determine what is proxied through the external interface.
socksmethod: username

# client-rules determine who can connect to the internal interface.
clientmethod: none

client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
}

socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
}

Сега имате употреблива конфигурација на серверот SOCKS, која работи на портата 1080, што е вообичаена конвенција за SOCKS. Можете исто така да го разложите остатокот од оваа конфигурациска датотека ред-по-ред:

  • logoutput се однесува на тоа како Данте ќе ги евидентира врските, во овој случај користејќи редовно системско евидентирање
  • user.privileged му дозволува на Данте да има root дозволи за проверка на дозволите
  • user.unprivileged не му дава на серверот никакви дозволи за работа како непривилегиран корисник, бидејќи тоа е непотребно кога не се доделуваат повеќе грануларни дозволи
  • Деталите за
  • внатрешна врска ја одредуваат портата на која работи услугата и кои IP адреси може да се поврзат
  • Деталите за
  • надворешна врска го одредуваат мрежниот интерфејс што се користи за излезни врски, eth0 стандардно на повеќето сервери

Останатите детали за конфигурацијата се занимаваат со методите за автентикација, кои се дискутирани во следниот дел. Не заборавајте да ја отворите портата 1080 во вашиот заштитен ѕид ако користите ufw:

  1. sudo ufw allow 1080

Во овој момент, можете да го рестартирате Данте и да се поврзете со него, но ќе имате сервер SOCKS отворен за целиот свет, што веројатно не го сакате, па прво ќе научите како да го обезбедите.

Чекор 2 - Обезбедување на Данте

Ако досега го следевте ова упатство, Данте ќе користи редовни кориснички сметки на Linux за автентикација. Ова е корисно, но лозинката што се користи за таа врска ќе биде испратена преку обичен текст, па затоа е важно да креирате посветен корисник на SOCKS кој нема да има други привилегии за најавување. За да го направите тоа, ќе користите useradd со знаменца што нема да му доделат школка за најавување на корисникот, а потоа ќе поставите лозинка:

  1. sudo useradd -r -s /bin/false your_dante_user
  2. sudo passwd your_dante_user

Исто така, ќе сакате да избегнете најавување на оваа сметка преку небезбедна безжична врска или прешироко споделување на серверот. Во спротивно, злонамерните актери можат и ќе направат повеќекратни напори да се логираат.

Данте поддржува други методи за автентикација, но многу клиенти (т.е. апликации) кои ќе се поврзат со SOCKS прокси поддржуваат само основна автентикација на корисничко име и лозинка, па можеби ќе сакате да го оставите тој дел како што е. Она што можете да го направите како алтернатива е да го ограничите пристапот само до одредени IP адреси. Ова не е најсофистицираната опција, но со оглед на комбинацијата на технологии што се користат овде, таа е разумна. Можеби веќе сте научиле како да го ограничите пристапот до одредени IP адреси со ufw од нашите упатства за предуслов , но исто така можете да го направите тоа директно во рамките на Данте. Уредете го вашиот /etc/danted.conf:

  1. sudo nano /etc/danted.conf
…
client pass {
    from: your_ip_address/0 to: 0.0.0.0/0
}

За да поддржувате повеќе IP адреси, можете да користите CIDR нотација или само да додадете друг конфигурациски блок client pass {}:

client pass {
    from: your_ip_address/0 to: 0.0.0.0/0
}

client pass {
    from: another_ip_address/0 to: 0.0.0.0/0
}

После тоа, конечно можете да го рестартирате Данте со промените во конфигурацијата.

  1. sudo systemctl restart danted.service

Овој пат, кога ќе го проверите статусот на услугата, треба да видите дека работи без никакви грешки:

  1. systemctl status danted.service
Output
● danted.service - SOCKS (v4 and v5) proxy daemon (danted) Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enable> Active: active (running) since Thu 2021-12-16 18:06:26 UTC; 24h ago

Во следниот чекор, конечно ќе се поврзете со вашиот прокси.

Чекор 3 - Поврзување преку Данте

За да го демонстрирате вашиот Dante сервер, ќе користите програма за командна линија наречена curl, која е популарна за правење различни типови веб-барања. Во принцип, ако сакате да потврдите дали одредена врска треба да работи во прелистувач под идеални околности, секогаш треба прво да тестирате со curl. Ќе користите curl на вашата локална машина за да го направите ова - таа е стандардно инсталирана во сите модерни околини на Windows, Mac и Linux, така што можете да отворите која било локална школка за да ја извршите оваа команда:

  1. curl -v -x socks5://your_dante_user:your_dante_password@your_server_ip:1080 http://www.google.com/
Output
* Trying 68.183.159.74:1080... * SOCKS5 connect to IPv4 142.251.33.68:80 (locally resolved) * SOCKS5 request granted. * Connected to 68.183.159.74 (68.183.159.74) port 1080 (#0) > GET / HTTP/1.1 > Host: www.google.com …

Ингеренциите што ги користевте за curl сега треба да работат каде било на друго место каде што можеби сакате да го користите вашиот нов прокси-сервер.

Заклучок

Во ова упатство научивте да распоредите популарна крајна точка на API со отворен код за прокси сообраќај со малку или без трошоци. Многу апликации имаат вградена поддршка за прокси (често на ниво на оперативен систем) со децении наназад, што го прави овој стек прокси многу повеќекратно употреблив.

Следно, можеби ќе сакате да научите како да распоредите Squid, HTTP прокси што може да работи заедно со Данте за проксирање на различни видови веб сообраќај.

Бидејќи еден од најчестите случаи на употреба за прокси-сервери е прокси сообраќајот до и од различни глобални региони, можеби ќе сакате да прегледате како да го користите Ansible за автоматизирање на распоредувањата на серверите следно, во случај да се најдете дека сакате да ја дуплирате оваа конфигурација во други центри за податоци .