Nastavite svoj proxy strežnik socks5. Oddaljeni dostop prek proxyja. Pridobivanje proxyja iz skrbniške nadzorne plošče SOCKS

Anonimnost na internetu ni nova tema. In verjetno ste na svoj računalnik namestili program, kot je A4Proxy, SocksChain
in podobni. Osebno mi ni všeč, ko potrebujete nekakšen ločen program za delo s proxyji. Prvič
grdo je, če je v opravilni vrstici ali ikonah v pladnju veliko oken, drugič, ti programi zahtevajo razpoke in
Prelen sem, da bi pogledal :) Zato sem napisal razrede za podporo strežnikom SOCKS5, ki jih zdaj lahko uporabljam
v nekaterih vaših programih. In zdaj želim vsem povedati, kako to storiti.

Od katerih strežnikov in do katerih protokolov lahko dostopamo prek proxyja, je odvisno
vrsto tega proxyja, torej protokol, po katerem do njega dostopamo. Obstaja več vrst posrednikov:
HTTP proxy, SOCKS4, SOCKS5, SSL CONNECT itd. Proxyji HTTP so najpogostejši, najlažje jih je najti na internetu, vendar delujejo samo s HTTP, poleg tega
lahko v glave zahtevkov vstavijo naslov stranke, to je
ni anonimen. Protokol SOCKS je najbolj znan po tem, da ne enkapsulira aplikacijskih protokolov, temveč
transportni sloj, tj. TCP/IP in UDP/IP. Ker se za delo na internetu uporabljajo samo ti protokoli,
prek SOCKS lahko delate s katerim koli strežnikom, vključno z istimi SOCKS in,
tako organizirajte verige strežnikov SOCKS. Iz istega razloga so VSI strežniki SOCKS anonimni – nemogoče
na ravni TCP/IP in UDP/IP prenašajo dodatne informacije, ne da bi motili delo višjega
protokol.

Osredotočili se bomo na protokol SOCKS5. Njegov opis je v
. Za SOCKS5 so standardna vrata 1080, vendar pa to
Nihče ne posveča veliko pozornosti standardu. Vsaka povezava SOCKS gre po potrebi skozi stopnjo avtentikacije, nato pa gre skozi odjemalec
pošlje ukaz. Ukaz je lahko eden od treh:
CONNECT - odhodna povezava TCP na podani naslov. Ogledali si bomo uporabo tega ukaza
podrobneje, saj je najpogosteje potrebna. BIND - odprite vrata (strežnik izbere vrata in pošlje naslov in vrata odjemalcu) in sprejme TCP povezavo.
Strežnik bo morda moral vedeti, kdo se bo povezoval. V tem primeru morate te informacije posredovati naprej. UDP ASSOCIATE - odpre UDP vrata (strežnik izbere vrata). Podatki namenjeni koncu
gostitelj in podatki iz njega prav tako potujejo prek UDP. Podatki v SOCKS5 se prenašajo v binarni obliki in ne v besedilni obliki, kot pri HTTP, SMTP, POP3 itd.

Opis protokola

Po povezavi s strežnikom odjemalec pošlje paket, ki označuje različico protokola in podprto
metode avtentikacije. Ta paket ima naslednjo obliko:

BYTE različica;
BYTE nMethods;
metode BYTE

Različica mora biti 5. Vsak element metode določa ne le metodo avtentikacije, temveč tudi metodo šifriranja podatkov,
če se uporablja. Strežnik izbere enega od teh načinov. Določite lahko poljubno število metod, vendar če strežnik ne zahteva preverjanja pristnosti, potem nobenih metod
razen 0x00 (ne uporabljajte niti avtentikacije niti šifriranja) ne bo potrebno. V odgovor strežnik pošlje paket z naslednjo vsebino:

Različica BYTE
metoda BYTE

kjer je metoda metoda, ki jo je izbral strežnik ali 0xFF (nobena od predlaganih metod ni podprta). Če je metoda 0x00, lahko takoj pošljete ukaz.

Ukazni paket ima naslednjo obliko:

BYTE različica; // 5
BYTE Cmd; // 1 — POVEŽI
BYTE rezerviran; // 0

BYTE naslov;
vrata WORD; // Bajti v omrežnem vrstnem redu, tj. htons(Port);

Če je uporabljeno ime domene, je najprej bajt dolžine in nato niz brez končne ničle.

Strežnik pošlje odgovor:

BYTE različica; // 5
BYTE Rep; // 0 — V redu
BYTE rezerviran; // 0
BYTE ATvrsta; // 1 - IPv4; 3 - ime domene; 4 - IPv6
BYTE naslov;
vrata WORD;

Tu sta naslov in vrata naslov in vrata, vidna gostitelju. Praviloma se vrne naslov IP in ne domena
Ime. Ta naslov se lahko razlikuje od tistega, na katerem dostopamo do strežnika, še posebej, če strežnik
uporablja za predvideni namen, to je za izhod iz lokalnega območja na internet. Če Rep ni nič, to je napaka, potem zaprite povezavo, in
sicer pa sodelujemo z gostiteljem. Ne uporabljamo šifriranja, zato preprosto pošiljamo in prejemamo podatke kot pri običajni povezavi. Če ena od strani prekine povezavo s strežnikom socks, bo takoj prekinila povezavo z drugo
strani. Ena povezava socks enkapsulira eno povezavo TCP ali jo poskuša vzpostaviti,
torej, če uporabljate socks za anonimno skeniranje vrat, potem to
postopek lahko traja pol dneva.

Kodiranje

Ker socks enkapsulira TCP, je smiselno, da razred povezave socks izhaja iz
razred vtičnic, vendar MFC-jev CSocket ni primeren, ker ima vse metode
ne virtualno. Napišimo lasten razred vtičnice in ga poimenujmo, recimo, CTSocket

#vključi

razred CTSocket
{
javnost:





navidezna praznina Zapri();
virtualni nepodpisani dolgi GetHost(); // Poiščite svoj naslov. To je lahko tudi potrebno.

zasebno:
SOCKET nogavica;
};

Implementacijo tega razreda lahko napiše vsak sam (kdor ne zna, RTFM MSDN), zato je ne bom pisal
upoštevati. Zdaj pa napišimo razred povezave socks. Podprl bo samo najpotrebnejši nabor
funkcije: podprt je samo ukaz CONNECT, avtentikacija in strežnik SOCKS nista podprta
je določen samo z naslovom IP, ne z imenom domene. Več ne gre v en članek.

Razred CSocksSocket: javna CTSocket
{
javnost:
virtualni BOOL CreateSocket();
virtualni BOOL Connect (nepodpisan dolg ip, nepodpisana kratka vrata);
virtualni BOOL Connect (ime LPCSTR, nepodpisana kratka vrata);
navidezno int Pošlji (const char* str, int len);
virtual int Recv(char* buf, int max);
virtualni BOOL Close();
virtualni nepodpisani dolgi GetHost();

CTSocket* pSocket;
nepodpisane dolge socks_ip;
nepodpisane kratke socks_port;

zasebno:
char buffer; // Ta velikost je vsekakor dovolj
nepredznačeni dolgi l_ip; // Naslov, ki ga vrne funkcija
GetHost()

};

// Izvedba
BOOL CSocksSocket::CreateSocket()
{
if (!pSocket->CreateSocket()) vrne FALSE;
if (!pSocket->Connect(socks_ip, socks_port)) vrne FALSE;
medpomnilnik = 5; //Ver
medpomnilnik = 1; // 1 metoda
medpomnilnik = 0; // brez preverjanja pristnosti
pSocket->Pošlji(medpomnilnik, 3);
int n = pSocket->Recv(buffer, 2);
if (n != 2) vrni FALSE;
metoda 0 ni podprta
vrni TRUE;
}

BOOL CSocksSocket::Connect(nepodpisan dolg ip, nepodpisana kratka vrata)
{
medpomnilnik = 5; //Ver
medpomnilnik = 1; //POVEŽI
medpomnilnik = 0; //Rezervirano
medpomnilnik = 1; //IPv4
*((unsigned long*)(buffer + 4)) = ip;
*((unsigned short*)(buffer + 8)) = vrata;
pSocket->Pošlji(medpomnilnik, 10);
int n = pSocket->Recv(buffer, 10);
if (n != 10) vrni FALSE;
if (buffer != 0) vrni FALSE; //
Ni mogoče vzpostaviti povezave

vrni TRUE;
}

BOOL CSocksSocket::Connect(ime LPCSTR, nepodpisana kratka vrata)
{
medpomnilnik = 5;
medpomnilnik = 1;
medpomnilnik = 0;
medpomnilnik = 3; // Domena
int m = strlen(ime);
medpomnilnik = m; //
Dolžina bajta
memcpy(medpomnilnik+5, ime, m); //
Kopiranje niza brez zaključne ničle
*((nepodpisani kratki*)(medpomnilnik + 5 + m)) = vrata;
pSocket->Pošlji(medpomnilnik, m + 7);
int n = pSocket->Recv(buffer, 10);
if (n != 10) vrni FALSE;
if (buffer != 0) vrni FALSE;
if (buffer != 1) vrni FALSE; //
Zahtevali bomo, da nam povedo IP in ne kaj drugega.
l_ip = *((nepredznačeno dolgo*)(medpomnilnik + 4));
vrni TRUE;
}

int CSocksSocket::Send(const char* str, int len)
{
return pSocket->Send(str, len);
}

int CSocksSocket::Recv(char* buf, int max)
{
vrni pScoket->Recv(buf, max);
}

void CSocksSocket::Close()
{
pSocket->Zapri();
}

nepodpisana dolga CSocksSocket::GetHost()
{
vrni l_ip;
}

//No, zdaj pa testni program
void main()
{
WSADATA wsadata;
CTSocket tsock;
CSocksSocket ssock(&tsock);

WSAStartup(MAKEWORD(2,2), &wsadatki);

ssock.socks_ip = inet_addr("10.10.10.10"); // Tukaj vnesite želeni naslov
ssock.socks_port = 1080; //
Tukaj vnesite pristanišče

if (!ssock.CreateSocket()) return; // Ni mogoče vzpostaviti povezave z nogavicami
// ali je potrebna avtentikacija
if (!ssock.Connect("www.mail.ru", htons(80))) return; //
www.mail.ru
// je nedostopen
LPSTR q = "HEAD / HTTP/1.1\xD\xAHost: www.mail.ru:80\xD\xAUser-Agent: xakep\xD\xA\xD\xA";
ssock.Send(q, strlen(q));

char buf;
int n = ssock.Recv(buf, 1000);
buf[n] = 0;
printf("%s", buf);

Danes obstaja več glavnih tehnologij, katerih namen je skriti naslov IP. V tem članku se boste imeli priložnost seznaniti z enim od njih, in sicer VPN.

Prvič, za dokončanje tega postopka morate poznati ne le svoj osebni naslov IP, ampak tudi naslov DNS strežnika. Pri pridobivanju teh podatkov načeloma ni težav, dovolj je na primer obisk spletne strani www.whoer.net.


Tudi če želite spremeniti podatke o svojem IP naslovu, ni dovolj, da uporabite VPN ali Socks, saj je danes na voljo ogromno tehnologij, s katerimi ga zlahka prepoznate. Torej, vrnimo se k naši temi in podrobneje preučimo metodo VPN.

VPN (navidezno zasebno omrežje, navidezno zasebno omrežje)


Najprej je treba omeniti, da se zunanja povezava VPN praktično ne razlikuje od običajne povezave z določenim lokalnim omrežjem. V tem primeru aplikacije na noben način ne bodo občutile nobene razlike in ga bodo zato uporabile kot »vhod« v internet.

Glavna stvar je, da ne bodo potrebovali nobenih nastavitev. Če eden od njih dostopa do oddaljene neposredne storitve, se na računalniku ustvari poseben tako imenovani paket GRE. Ta pa bo v šifrirani obliki poslan na strežnik VPN.


Delovanje strežnika VPN je, da ko prejme paket, ga dešifrira, razstavi in ​​v njegovem imenu izvede potrebno dejanje. Ko prejme odgovor od vira oddaljenega tipa, ga bo postavil neposredno v paket GRE. Po tem ga bo šifriral in poslal odjemalcu.

Ne smemo pozabiti, da je za povečanje stopnje varnosti potrebno sistematično šifriranje podatkov, ki se prenašajo. Pomembno je, da je z uporabo MPPE (Microsoft Point-to-Point Encryption) promet PPTP lahko šifriran.

Predstavlja Microsoftov protokol. Pomembno je, da prve različice niso bile samo nepraktične, ampak tudi sistematično podvržene vdorom, vendar še danes ne slovijo po svoji posebni učinkovitosti. Stvar je v tem, da sodobne različice Microsofta preprosto ne analizirajo nobenih kazni.

OpenVPN je brezplačna tehnološka izvedba VPN, ki je organizirana ob upoštevanju splošno sprejetega sklada internetnih protokolov TCP/IP. Tako ste lahko popolnoma prepričani, da bo povezava vzpostavljena s tistimi ponudniki, ki dejansko ne podpirajo zahtevanega PPTP.

Še posebej OpenVPN deluje, če nimate osebnega naslova IP. Ta funkcija se na primer razlikuje od PPTP, ki nujno zahteva dve omrežni seji hkrati.

Za pospešitev dela z nekaterimi programi in razčlenjevalniki, ki jih uporabljam, so potrebni proxyji, sprva sem jih najel, nato pa sem se odločil namestiti svoje SOKS5 proxy strežnike na obstoječe strežnike s spletnimi stranmi.

Vsi strežniki poganjajo Ubuntu Server 14.04, morda nekje 12.04, vendar bi moral biti opis primeren tudi za vse druge sisteme, ki temeljijo na Debianu.

Za organizacijo delovanja strežnika SOKS5 sta mi znana dva načina:

  1. SOCKS prek SSH. Ta metoda je priročna zaradi svoje preprostosti, vendar je neprijetna, če se uporablja pogosto ali iz različnih strojev;
  2. Namestitev strežnika SOCKS. Uporaba te metode bo vzela nekaj več časa za začetno nastavitev, potem pa bo uporaba proxyja hitrejša in priročnejša.

SOCKS prek SSH

Če želite namestiti SOCKS5 prek SSH, potrebujete samo dostop do strežnika SSH.

Vnesite v terminal ali odjemalca SSH (PuTTY za Windows)

Ssh -D 1080 uporabnik@strežnik

Če zahteva geslo, morate vnesti geslo s strežnika SSH.

-D- označuje vrata, na katerih bo strežnik SOKS5 dostopen

To je to, nato se lahko povežete s strežnikom SOKS5 na localhost:1080 ali 127.0.0.1:1080

Ta metoda je priročna, ker vam ni treba namestiti ali konfigurirati ničesar dodatnega. Toda pred vsako povezavo ali po prekinitvi povezave ssh, na primer zaradi težav z internetom, boste morali znova vnesti ta ukaz.

Namestitev strežnika SOCKS

Namestitev starejše različice strežnika Dante

sudo apt-get posodobite sudo apt-get namestite dante-strežnik

Sudo nano /etc/danted.conf

Pripeljati ga v to formo

Odjava: syslog /var/log/danted.log notranja: eth0 vrata = 1085 zunanja: eth0 metoda: uporabniško ime user.privileged: root user.notprivileged: nobody pass pass ( od: 0.0.0.0/0 do: 0.0.0.0/0 dnevnik: napaka) prehod (od: 0.0.0.0/0 do: 0.0.0.0/0 ukaz: povezava dnevnik: napaka metoda: uporabniško ime)

Čeprav je standardni proxy HTTP odličen za brskanje po spletu, SOCKS proxy so namenjeni drugi programski opremi, kot so e-pošta, hitra sporočila in celo internetna telefonija, s čimer jim dodajo še eno raven varnosti. David Koblas je izumil SOCKS proxy med delom na MIPS Computer Systems, predhodniku Silicon Graphics. Koblas je predstavil arhitekturo NOGAVIČKE leta 1992 in uporaba nove vrste proxyja se je zelo hitro razširila.

Navodila za uporabo proxyja SOKCS

1. Dostopite do seznama proxy strežnikov SOCKS. Obstajata dva načina iskanja. Prvi je iskanje informacij o brezplačnih posredniških strežnikih na spletnih mestih, kot so javni proxy strežniki. Druga možnost je, da se prijavite za zasebno proxy storitev, kot je Unique Internet Services, ki omogoča dostop do tisočih zasebnih proxyjev SOCKS.

2. Prenesite in namestite brezplačno kopijo požarnega zidu proxy. Pojdite na proxyfirewall.org, na dnu strani kliknite povezavo »Prenos«. V oknu, ki se odpre, izberite ukaz "Zaženi". Ko se namestitveni program konča, boste pozvani, da znova zaženete računalnik. Shranite vse odprte datoteke in znova zaženite računalnik.

3. Odprite požarni zid proxy in dodajte svoje proxyje na seznam. Pojdite na zavihek »Zasebni posredniki«, če ste član Unique Internet Services, nato vnesite svoje uporabniško ime in geslo za samodejni uvoz na tisoče posrednikov. Če niste član Unique Internet Services, lahko aplikacijo uporabljate tako, da v spodnjem levem kotu kliknete »Dodaj posrednike« in nato ročno vnesete naslov IP in številko vrat za vsak proxy strežnik SOCKS.

4. Nastavite ločljivost za svoje programe. Ko prvič odprete vsak program po namestitvi požarnega zidu proxy, bo program zaznal požarni zid proxy in vas vprašal, kako naprej. Izberete lahko neposreden dostop do interneta ali povezavo prek SOCKS proxy. Požarni zid proxy si bo zapomnil nastavitve za vsak program v vašem računalniku, vendar jih lahko kadar koli spremenite s klikom na zavihek »Pravila« v požarnem zidu proxy.

Nogavice so lahko izjemno uporabne. Zdaj vam bomo povedali, kako jih pravilno konfigurirati na usmerjevalniku MikroTik. Pogovorimo se torej o NOGAVIČKE?

Predgovor

SOCKS (SOCKet Secure) je omrežni protokol, ki se lahko uporablja za zagotovitev prehoda TCP paketov mimo pravil za blokiranje požarnega zidu. To se izvaja prek proxy strežnika (imenovanega tudi strežnik SOCKS), ki nadzoruje povezavo notranjih odjemalcev in njihove pravice do dostopa do zunanjih virov ali, nasprotno, zunanjih odjemalcev, do virov v omrežju. SOCKS deluje na ravni seje, zato ga je mogoče uporabiti za proxy FTP, HTTP, Telnet in druge protokole na visoki ravni. Medtem ko proxy HTTP praviloma omogoča le proxy GET in POST zahtev.

Vzpostavljanje povezave

Ko odjemalec želi dostopati do zunanjega vira, ki ga blokira požarni zid, se povezava izvede na naslednji način:

  1. Odjemalec se poveže s strežnikom proxy (običajno se uporabljajo vrata TCP 1080);
  2. Strežnik preveri seznam dostopov in ugotovi, ali ima odjemalec pravice do dostopa do zunanjih virov;
  3. Če ima odjemalec take pravice, posredovalni strežnik posreduje paket zunanjemu viru, do katerega odjemalec želi dostopati;
  4. Strežnik ustvari sejo med odjemalcem in zunanjim virom in med njima se začne izmenjava paketov protokola najvišje ravni. Ko je povezava vzpostavljena, se lahko prenašajo tudi paketi UDP.

Trenutno MikroTik podpira SOCKS različice 4, pri podajanju zunanjega vira pa razume le naslov IP. Različica SOCKS4a – lahko razreši domenska imena zunanjih virov. Kasnejša različica protokola, SOCKS5, vključuje razširjeno podporo za avtentikacijo, povezave UDP in IPv6.

Protokol SOCKS5 od danes še ni podprt na napravah MikroTik. Čeprav uporabniki že 8 let prosijo razvijalce, da vključijo podporo za SOCKS5 v nove izdaje RouterOS. Zato mora imeti odjemalec pri delu s SOCKS skupaj z MikroTik tudi različico 4.

Potrebno je zelo skrbno konfigurirati pravila požarnega zidu in dostopni seznam SOCKS, da izključite neželen dostop od zunaj.Naprave, ogrožene zaradi ranljivosti SOCKS, se praviloma uporabljajo za pošiljanje neželene e-pošte in lažnega predstavljanja.

Preidimo na nastavitve strežnika SOCKS na MikroTik:

Nastavitve prek WinBoxa

Nastavitve strežnika SOCKS v WinBoxu se nahajajo v IPNogavice:

Ko potrdite polje Omogočeno strežnik bo postal aktiven. Nato morate konfigurirati dostopne sezname; za to kliknite gumb Dostop:


Aktivne seje SOCKS, ki potekajo skozi strežnik, lahko spremljate na zavihku Povezave

Nastavitve prek terminala

Če želite konfigurirati SOCKS prek terminala, morate najprej konfigurirati tudi nastavitve strežnika. Konfiguracija se izvede z ukazom ip socks set, na voljo so naslednji parametri:

  • omogočeno- vključuje funkcijo proxy strežnika SOCKS ( ja- vključeno, št- izklopljen);
  • pristanišče- številka vrat, na katerih bo strežnik poslušal zahteve SOCKS. Privzeto - 1080
  • časovna omejitev mirovanja povezave- čas, po katerem se neaktivne seje ponastavijo (privzeto – 2 minuti ( 2m));
  • maksimalne povezave- največje število hkratnih povezav (privzeto - 200 )

Trenutne ali konfigurirane parametre si lahko ogledate z ukazom:

  • ukrepanje- ukrepanje, ki bo izvedeno, če bodo izpolnjena merila tega pravila:
    • dovoli- omogočiti promet po tem pravilniku;
    • zanikati- prepovedati promet po tem pravilniku.
  • dst-naslov- naslov ciljnega strežnika;
  • dst-vrata- Ciljna vrata TCP, na katerih oddaljeni strežnik posluša SOCKS
  • src-naslov- izvorni naslov paketa (odjemalec);
  • src-vrata- Izvorna vrata TCP
Praktična uporaba

Recimo, da je zlobni sistemski skrbnik blokiral naše priljubljeno spletno mesto, izvedel naslov in nas prepovedal.


Toda eden od naših zaposlenih mora imeti dostop do tega vira. Zato sistemski skrbnik odpre, aktivira strežnik SOCKS in konfigurira seznam dostopov.


IP naslov računalnika zaposlenega, ki mu morate omogočiti dostop, je naveden kot naslov stranke (v našem primeru 192.168.11.48 ), kot izvorna vrata – katera koli vrata TCP od 1024 do 65535..

Ista nastavitev prek terminala izgleda takole:

Ip socks> set enabled=yes ip socks access> add src-address=192.168.11.48 src-port=1024-65535 dst-address=212.193.249.136 dst-port=80 \ \... action=allow

Končano, zdaj je na stranki, da jo konfigurira zaposleni. Pokažimo nastavitev na primeru brskalnika Google Chrome. Otvoritev nastavitveNaprednoZaupnost in varnost, se pomaknite čisto na dno do točke Sistem in izberite Nastavitve proxyja. V oknu, ki se prikaže, izberite nastavitve LAN→ postavite kljukico nasproti Uporabite proxy strežnik za vaš LAN in pojdi na Napredno. V oknu, ki se prikaže, v vrstico vnesite parametre našega strežnika SOCKS Nogavice(v našem primeru 192.168.11.1 in pristanišče 1080 ) in uporabite nastavitve:


Zdaj posodobimo stran spletnega mesta in woo-a-la, vse deluje! V oknu Povezave so vidne povezave našega računalnika z naslovom IP spletnega mesta.



Pogovor

Ta članek je samo v izobraževalne namene in ni namenjen poučevanju nikogar, kako zaobiti pravila požarnega zidu. Protokol SOCKS 4 je zastarel, ne podpira avtentikacije in ne more razrešiti domenskih naslovov. Iz varnostnih razlogov sploh ne priporočamo uporabe tega protokola, vključno z nastavitvijo na MikroTik.

Privzeto je strežnik SOCKS na usmerjevalnikih MikroTik onemogočen. Če ugotovite, da je aktiviran, je to lahko znak, da so vaš usmerjevalnik ogrozili napadalci. O tem bomo podrobneje govorili v naslednjih člankih.

Je bil ta članek koristen za vas?

Prosim povejte mi zakaj?

Žal nam je, da članek za vas ni bil uporaben: (Prosimo, če ni težko, navedite zakaj? Zelo vam bomo hvaležni za podroben odgovor. Hvala, ker nam pomagate postati boljši!




Vrh