Sett opp socks5 proxy-serveren. Fjerntilgang via proxy. Få en proxy fra SOCKS Admin kontrollpanel

Anonymitet på Internett er ikke et nytt tema. Og du har sannsynligvis installert et program som A4Proxy, SocksChain på datamaskinen din
o.l. Personlig liker jeg ikke når du trenger et slags separat program for å jobbe med proxyer. for det første
det er stygt når det er mange vinduer på oppgavelinjen eller ikonene, for det andre krever disse programmene sprekker, og de
Jeg er for lat til å se :) Det er derfor jeg skrev klasser for å støtte SOCKS5-servere, som jeg nå kan bruke
i noen av programmene dine. Og nå vil jeg fortelle alle hvordan de skal gjøre det.

Hvilke servere og hvilke protokoller vi kan få tilgang til gjennom en proxy avhenger av
typen av denne proxy, det vil si protokollen som vi får tilgang til den. Det finnes flere typer fullmakter:
HTTP-proxyer, SOCKS4, SOCKS5, SSL CONNECT, etc. HTTP-proxyer er de vanligste, de er lettest å finne på internett, men de fungerer dessuten kun med HTTP
de kan sette inn klientens adresse i forespørselshodene, det vil si være
ikke anonym. SOCKS-protokollen er mest bemerkelsesverdig ved at den ikke innkapsler applikasjonsprotokoller, men
transportlag, dvs. TCP/IP og UDP/IP. Siden bare disse protokollene brukes til å fungere på Internett,
gjennom SOCKS kan du jobbe med alle servere, inkludert de samme SOCKS og,
organiser derfor kjeder av SOCKS-servere. Av samme grunn er ALLE SOCKS-servere anonyme - umulig
sende på TCP/IP- og UDP/IP-nivå Ytterligere informasjon uten å forstyrre arbeidet til overordnet
protokoll.

Vi vil fokusere på SOCKS5-protokollen. Beskrivelsen er i
. For SOCKS5 er standardporten 1080, men dette
Ingen legger særlig vekt på standarden. Hver SOCKS-tilkobling går gjennom et autentiseringsstadium, om nødvendig, deretter klienten
sender en kommando. Kommandoen kan være en av tre:
CONNECT - utgående TCP-tilkobling til den angitte adressen. Vi skal se på bruken av denne kommandoen
mer detaljert, siden det er nødvendig oftest. BIND - åpne en port (serveren velger en port og sender adressen og porten til klienten) og godta en TCP-tilkobling.
Serveren må kanskje vite hvem som skal koble seg til. I dette tilfellet må du videreformidle denne informasjonen. UDP ASSOCIATE - åpne en UDP-port (serveren velger porten). Data ment for slutten
vert og data fra den reiser også via UDP. Data i SOCKS5 overføres i binær form, og ikke i tekstform, som i HTTP, SMTP, POP3, etc.

Protokollbeskrivelse

Etter å ha koblet til serveren, sender klienten en pakke som indikerer protokollversjonen og støttet
autentiseringsmetoder. Denne pakken har følgende format:

BYTE-versjon;
BYTE nMethods;
BYTE-metoder

Versjonen må være 5. Hvert metodeelement definerer ikke bare autentiseringsmetoden, men også metoden for datakryptering,
hvis den brukes. Serveren velger en av disse metodene. Du kan spesifisere et hvilket som helst antall metoder, men hvis serveren ikke krever autentisering, er det ingen metoder
annet enn 0x00 (bruk verken autentisering eller kryptering) vil ikke være nødvendig. Som svar sender serveren en pakke med følgende innhold:

BYTE-versjon
BYTE-metoden

hvor metode er metoden valgt av serveren eller 0xFF (ingen av de foreslåtte metodene støttes). Hvis metoden er 0x00, kan du umiddelbart sende kommandoen.

Kommandopakken har følgende format:

BYTE-versjon; // 5
BYTE Cmd; // 1 — KOBLE TIL
BYTE reservert; // 0

BYTE-adr;
WORD port; // Bytes i nettverksrekkefølge, dvs. htons(Port);

Hvis et domenenavn brukes, kommer lengdebyten først, og deretter strengen uten den avsluttende null.

Serveren sender et svar:

BYTE-versjon; // 5
BYTE Rep ; // 0 — Ok
BYTE reservert; // 0
BYTE AType; // 1 - IPv4; 3 - domenenavn; 4 - IPv6
BYTE-adr;
WORD port;

Her er adresse og port adressen og porten som er synlig for verten. Som regel returneres IP-adressen, ikke domenet
Navn. Denne adressen kan avvike fra den vi får tilgang til serveren på, spesielt hvis serveren
brukes til det tiltenkte formålet, det vil si å gå ut fra lokalområdet til Internett. Hvis Rep ikke er null, det vil si en feil, lukker du forbindelsen, inn
ellers samarbeider vi med verten. Vi bruker ikke kryptering, så vi sender og mottar ganske enkelt data som med en vanlig tilkobling. Hvis en av partene stenger forbindelsen til sokkeserveren, vil den umiddelbart stenge forbindelsen til den andre
side. Én sokketilkobling innkapsler én TCP-tilkobling eller forsøk på å etablere en,
så hvis du bruker sokker for anonym portskanning, så dette
prosedyren kan ta en halv dag.

Koding

Siden sokker innkapsler TCP, er det fornuftig å få sokkekoblingsklassen til å stamme fra
socket-klasse, men MFCs CSocket er ikke egnet, pga han har alle metodene
ikke virtuelle. La oss skrive vår egen socket-klasse og kalle den for eksempel CTSocket

#inkludere

klasse CTSocket
{
offentlig:





virtual void Close();
virtuell usignert lang GetHost(); // Finn ut adressen din. Dette kan også være nødvendig.

privat:
SOCKET sokk;
};

Alle kan skrive implementeringen av denne klassen selv (hvem vet ikke hvordan, RTFM MSDN), så jeg vil ikke skrive den
ta i betraktning. La oss nå skrive en sokkekoblingsklasse. Den støtter kun det mest nødvendige settet
funksjoner: bare CONNECT-kommandoen støttes, autentisering og SOCKS-server støttes ikke
spesifiseres kun av IP-adresse, ikke av domenenavn. Flere får ikke plass i én artikkel.

Klasse CSocksSocket: offentlig CTSocket
{
offentlig:
virtuell BOOL CreateSocket();
virtuell BOOL Connect (usignert lang ip, usignert kort port);
virtual BOOL Connect(LPCSTR navn, usignert kort port);
virtuell int Send(const char* str, int len);
virtuell int Recv(char* buf, int maks);
virtuell BOOL Close();
virtuell usignert lang GetHost();

CTSocket* pSocket;
usignerte lange sokker_ip;
usignert short socks_port;

privat:
char buffer; // Denne størrelsen er definitivt nok
usignert lang l_ip; // Adresse returnert av funksjonen
GetHost()

};

// Gjennomføring
BOOL CSocksSocket::CreateSocket()
{
hvis (!pSocket->CreateSocket()) returnerer FALSE;
if (!pSocket->Connect(socks_ip, socks_port)) returner FALSE;
buffer = 5; //Ver
buffer = 1; // 1 metode
buffer = 0; // ingen autentisering
pSocket->Send(buffer, 3);
int n = pSocket->Recv(buffer, 2);
hvis (n != 2) returner FALSE;
metode 0 støttes ikke
returner TRUE;
}

BOOL CSocksSocket::Connect(usignert lang ip, usignert kort port)
{
buffer = 5; //Ver
buffer = 1; // KOBLE
buffer = 0; //Forbeholdt
buffer = 1; //IPv4
*((usignert lang*)(buffer + 4)) = ip;
*((usignert kort*)(buffer + 8)) = port;
pSocket->Send(buffer, 10);
int n = pSocket->Recv(buffer, 10);
hvis (n != 10) returner FALSE;
hvis (buffer != 0) returner FALSE; //
Kan ikke koble til

returner TRUE;
}

BOOL CSocksSocket::Connect(LPCSTR-navn, usignert kort port)
{
buffer = 5;
buffer = 1;
buffer = 0;
buffer = 3; // Domenenavn
int m = strlen(navn);
buffer = m; //
Lengde byte
memcpy(buffer+5, navn, m); //
Kopiering av en streng uten en avsluttende null
*((usignert kort*)(buffer + 5 + m)) = port;
pSocket->Send(buffer, m + 7);
int n = pSocket->Recv(buffer, 10);
hvis (n != 10) returner FALSE;
hvis (buffer != 0) returner FALSE;
hvis (buffer != 1) returner FALSE; //
Vi vil kreve at de forteller oss IP-en, og ikke noe annet.
l_ip = *((usignert lang*)(buffer + 4));
returner TRUE;
}

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

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

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

usignert lang CSocksSocket::GetHost()
{
returner l_ip;
}

//Vel, nå testprogrammet
void main()
{
WSADATA wsadata;
CTSocket tsock;
CSocksSocket ssock(&tsock);

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

ssock.socks_ip = inet_addr("10.10.10.10"); // Skriv inn ønsket adresse her
ssock.socks_port = 1080; //
Gå inn i porten her

if (!ssock.CreateSocket()) returnerer; // Kan ikke koble til sokker
// eller autentisering kreves
if (!ssock.Connect("www.mail.ru", htons(80))) returnerer; //
www.mail.ru
// er utilgjengelig
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));

røye buff;
int n = ssock.Recv(buf, 1000);
buff[n] = 0;
printf("%s", buf);

I dag finnes det flere hovedteknologier som har som formål å skjule IP-adressen. I denne artikkelen vil du få muligheten til å gjøre deg kjent med en av dem, nemlig VPN.

Først av alt, for å fullføre denne prosessen, må du finne ut ikke bare din personlige IP-adresse, men også serveren DNS-adresse. I prinsippet er det ingen vanskeligheter med å få tak i denne informasjonen, det er for eksempel nok å besøke nettstedet www.whoer.net.


Selv om du ønsker å endre IP-adressedataene dine, er det ikke nok å bruke en VPN eller Socks, siden det i dag er mange teknologier som du enkelt kan identifisere det med. Så la oss gå tilbake til emnet vårt og studere VPN-metoden mer detaljert.

VPN (Virtual Private Network, virtuelt privat nettverk)


Først av alt er det verdt å merke seg at VPN-tilkoblingen ekstern type praktisk talt ingen forskjell fra normal tilkobling til dette eller hint lokalt nettverk. I dette tilfellet vil applikasjoner ikke føle noen forskjell på noen måte, og vil derfor bruke den som en "inngang" til Internett.

Det viktigste er at de ikke trenger noen innstillinger. Hvis en av dem får tilgang til en ekstern direktetjeneste, vil det opprettes en spesiell såkalt GRE-pakke på datamaskinen. Den vil på sin side bli sendt i kryptert form til VPN-serveren.


Handlingen til VPN-serveren er at når den mottar pakken, vil den dekryptere den, demontere den og utføre nødvendig handling på dine egne vegne. Etter å ha mottatt et svar fra en ressurs av den eksterne typen, vil den plassere den direkte i GRE-pakken. Etter dette vil den kryptere og sende den til klienten.

Det må huskes at for å øke graden av sikkerhet er det nødvendig med systematisk kryptering av dataene som overføres. Det er viktig at PPTP-trafikk kan krypteres ved å bruke MPPE (Microsoft Point-to-Point Encryption).

Den representerer en Microsoft-protokoll. Det er viktig at de første versjonene ikke bare var upraktiske, men også systematisk utsatt for hacking, men selv i dag er de ikke kjent for sin spesielle effektivitet. Saken er at moderne versjoner av Microsoft ganske enkelt ikke analyserer noen straffer.

OpenVPN er en gratis teknologisk implementering av VPN, som er organisert under hensyntagen til den generelt aksepterte Internett-protokollstabelen TCP/IP. Dermed kan du være helt trygg på at forbindelsen vil bli opprettet med de leverandørene som faktisk ikke støtter den nødvendige PPTP.

Spesielt fungerer OpenVPN hvis du ikke har en personlig IP-adresse. Denne funksjonen er særegen, for eksempel fra PPTP, som nødvendigvis krever to nettverksøkter samtidig.

For å få fart på arbeidet med noen programmer og parsere som jeg bruker, kreves proxyer; først leide jeg dem, men så bestemte jeg meg for å installere SOKS5 proxy-serverne mine på eksisterende servere med nettsteder.

Alle servere kjører Ubuntu Server 14.04, kanskje 12.04 et sted, men beskrivelsen skal også passe for alle andre Debian-baserte systemer.

Jeg kjenner til to måter å organisere driften av en SOKS5-server på:

  1. SOKKER over SSH. Denne metoden er praktisk i sin enkelhet, men upraktisk hvis den brukes ofte, eller brukes fra forskjellige maskiner;
  2. Installere en SOCKS-server.Å bruke denne metoden vil ta litt mer tid førstegangs oppsett, men da vil det være raskere og mer praktisk å bruke en proxy.

SOKKER over SSH

For å installere SOCKS5 via SSH trenger du kun tilgang til SSH-serveren.

Gå inn i terminalen eller SSH-klienten (PuTTY for Windows)

Ssh -D 1080 bruker@server

Hvis den ber om et passord, må du skrive inn passordet fra SSH-serveren.

-D- indikerer porten som SOKS5-serveren vil være tilgjengelig på

Det er det, etter det kan du koble til SOKS5-serveren på localhost:1080 eller 127.0.0.1:1080

Denne metoden er praktisk fordi du ikke trenger å installere eller konfigurere noe ekstra. Men før hver tilkobling eller etter at ssh-tilkoblingen er brutt, for eksempel på grunn av Internett-problemer, må du skrive inn denne kommandoen på nytt.

Installere en SOCKS-server

Installere en eldre versjon av Dante Server

sudo apt-get update sudo apt-get install dante-server

Sudo nano /etc/danted.conf

Bringe ham til denne formen

Utlogging: syslog /var/log/danted.log intern: eth0 port = 1085 ekstern: eth0 metode: brukernavn user.privileged: root user.notprivileged: ingen klientpass ( fra: 0.0.0.0/0 til: 0.0.0.0/0 log: error ) pass (fra: 0.0.0.0/0 til: 0.0.0.0/0 kommando: koble til logg: feilmetode: brukernavn )

Mens en standard HTTP-proxy er flott for nettsurfing, SOCKS proxy annet orientert programvare, som for eksempel E-post, instant messengers og til og med Internett-telefoni, noe som gir dem enda et sikkerhetsnivå. David Koblas oppfant SOCKS-proxyen mens han jobbet på MIPS Computer Systems, forgjengeren til Silicon Graphics. Koblas presenterte arkitekturen SOKKER i 1992 og bruken av en ny type proxy spredte seg veldig raskt.

Instruksjoner for bruk av SOKCS proxy

1. Få tilgang til listen over SOCKS proxy-servere. Det er to søkemetoder. Den første er å søke på nettsteder som offentlige proxy-servere for informasjon om gratis proxy-servere. Et annet alternativ er å registrere seg for en privat proxy-tjeneste, for eksempel Unique Internet Services, som gir tilgang til tusenvis av private SOCKS-fullmakter.

2. Last ned og installer en gratis kopi av Proxy Firewall. Gå til proxyfirewall.org, nederst på siden klikker du på lenken "Last ned". Velg "Kjør"-kommandoen i vinduet som åpnes. Når installasjonsprogrammet er fullført, vil du bli bedt om å starte datamaskinen på nytt. Lagre alt åpne filer og start datamaskinen på nytt.

3. Åpne proxy-brannmur og legg til dine proxyer i listen. Gå til fanen "Private fullmakter" hvis du er medlem av Unique Internet Services, og skriv deretter inn brukernavnet og passordet ditt for automatisk å importere tusenvis av fullmakter. Hvis du ikke er medlem av Unique Internet Services, kan du bruke applikasjonen ved å klikke "Add Proxies" i nedre venstre hjørne og deretter manuelt angi IP-adressen og portnummeret for hver SOCKS proxy-server.

4. Still inn oppløsningen for programmene dine. Første gang du åpner hvert program etter at du har installert Proxy Firewall, vil programmet oppdage Proxy Firewall og spørre deg hvordan du går frem. Du kan velge å få tilgang til Internett direkte eller velge å koble til via SOCKS proxy. Proxy Firewall vil huske innstillingene for hvert program på datamaskinen din, men du kan endre dem når som helst ved å klikke på fanen "Regler" i Proxy Firewall.

Sokker kan være ekstremt nyttige. Nå vil vi fortelle deg hvordan du konfigurerer dem riktig på en MikroTik-ruter. Så la oss snakke om SOKKER?

Forord

SOCKS (SOCKet Secure) er nettverksprotokoll, som du kan sikre at TCP-pakker passerer ved å omgå brannmurens blokkeringsregler. Dette implementeres gjennom en proxy-server (også kalt en SOCKS-server), som kontrollerer tilkoblingen av interne klienter og deres rettigheter til å få tilgang til eksterne ressurser eller omvendt eksterne klienter, til ressurser i nettverket. SOCKS opererer på øktnivå, så den kan brukes til proxy FTP, HTTP, Telnet og andre høynivåprotokoller. Mens en HTTP-proxy, som regel, bare lar deg proxy GET og POST-forespørsler.

Etablere en forbindelse

Når en klient ønsker å få tilgang til en ekstern ressurs som er blokkert av brannmuren, skjer tilkoblingen som følger:

  1. Klienten kobles til proxy-serveren (vanligvis brukes TCP-port 1080);
  2. Serveren sjekker tilgangslisten og bestemmer om klienten har rettigheter til å få tilgang til eksterne ressurser;
  3. Hvis klienten har slike rettigheter, videresender proxy-serveren pakken til den eksterne ressursen som klienten vil ha tilgang til;
  4. Serveren oppretter en økt mellom klienten og den eksterne ressursen, og utvekslingen av protokollpakker på toppnivå begynner mellom dem. Når forbindelsen er opprettet, kan UDP-pakker også overføres.

For øyeblikket støtter MikroTik SOCKS versjon 4, når den spesifiserer en ekstern ressurs, forstår den kun IP-adressen. SOCKS4a versjon – kan løse domenenavn eksterne ressurser. En senere versjon av protokollen, SOCKS5, inkluderer utvidet støtte for autentisering, UDP og IPv6-tilkoblinger.

Per i dag er SOCKS5-protokollen ennå ikke støttet på MikroTik-enheter. Selv om brukere har bedt utviklere om å inkludere SOCKS5-støtte i nye RouterOS-utgivelser i 8 år nå. Derfor, når du arbeider med SOCKS sammen med MikroTik, må klienten også ha versjon 4.

Det er nødvendig å konfigurere brannmurregler og SOCKS-tilgangslisten veldig nøye for å utelukke uønsket tilgang fra utsiden.Som regel brukes enheter som er kompromittert gjennom SOCKS-sårbarheter til å sende spam og phishing-e-post.

La oss gå videre til innstillingene til SOCKS-serveren på MikroTik:

Innstillinger via WinBox

SOCKS serverinnstillinger i WinBox er plassert i IPSokker:

Når du merker av i boksen Aktivert serveren blir aktiv. Deretter må du konfigurere tilgangslister; for å gjøre dette, klikk på knappen Adgang:


Aktive SOCKS-økter som går gjennom serveren kan spores på fanen Tilkoblinger

Innstillinger via terminal

For å konfigurere SOCKS via terminalen, må du også først konfigurere serverinnstillingene. Konfigurasjonen utføres gjennom kommandoen ip socks set, følgende parametere er tilgjengelige:

  • aktivert- inkluderer SOCKS proxy-serverfunksjonalitet ( ja- inkludert, Nei- avslått);
  • havn- Portnummer som serveren vil lytte etter SOCKS-forespørsler på. Standard - 1080
  • tilkobling-tomgangstidsavbrudd- tid som inaktive økter vil bli tilbakestilt etter (standard – 2 minutter ( 2m));
  • maks-tilkoblinger- maksimalt antall samtidige tilkoblinger (standard - 200 )

Du kan se gjeldende eller konfigurerte parametere med kommandoen:

  • handling- handlingen som vil bli iverksatt hvis kriteriene i denne regelen er oppfylt:
    • tillate- la trafikk passere i henhold til denne regelen;
    • benekte- forby ferdsel etter denne regelen.
  • dst-adresse- destinasjonsserveradresse;
  • dst-port- TCP-destinasjonsport som den eksterne serveren lytter etter SOCKS på
  • src-adresse- pakkekildeadresse (klient);
  • src-port- TCP-kildeport
Praktisk bruk

La oss si at en ond systemadministrator blokkerte favorittsiden vår, fant ut adressen og utestengt oss.


Men en av våre ansatte må ha tilgang til denne ressursen. Derfor åpner systemadministratoren, aktiverer SOCKS-serveren og konfigurerer tilgangslisten.


IP-adressen til den ansattes datamaskin som du trenger å gi tilgang til, er angitt som klientadressen (i vårt tilfelle 192.168.11.48 ), som en kildeport – enhver TCP-port fra 1024 til 65535..

Det samme oppsettet via terminal ser slik ut:

Ip-sokker> sett aktivert=ja ip-sokker tilgang> legg til src-address=192.168.11.48 src-port=1024-65535 dst-address=212.193.249.136 dst-port=80 \ \... action=allow

Ferdig, nå er det opp til klienten å konfigureres av en ansatt. La oss vise innstillingen ved å bruke et nettlesereksempel Google Chrome . Åpning InnstillingerAvansertKonfidensialitet og sikkerhet, rull helt ned til punktet System og velg Proxy-innstillinger. Velg i vinduet som vises LAN-innstillinger→ sett et hake ved siden av Bruk en proxy-server for ditt LAN og gå til Avansert. I vinduet som vises, skriv inn parameterne til SOCKS-serveren vår i linjen Sokker(i vårt tilfelle 192.168.11.1 og havn 1080 ) og bruk innstillingene:


Nå oppdaterer vi nettsiden og woo-a-la, alt fungerer! I vinduet Tilkoblinger tilkoblinger fra datamaskinen vår til nettstedets IP-adresse er synlige.



Etterord

Denne artikkelen er kun for pedagogiske formål og er ikke ment å lære noen hvordan de kan omgå brannmurregler. SOCKS 4-protokollen er utdatert, støtter ikke autentisering og kan ikke løse domeneadresser. Av sikkerhetsgrunner anbefaler vi ikke å bruke denne protokollen i det hele tatt, inkludert å sette den opp på MikroTik.

Som standard er SOCKS-serveren på MikroTik-rutere deaktivert. Hvis du oppdager at den er aktivert, kan dette være et tegn på at ruteren din har blitt kompromittert av angripere. Vi vil snakke om dette mer detaljert i de følgende artiklene.

Var denne artikkelen nyttig for deg?

Vennligst fortell meg hvorfor?

Vi beklager at artikkelen ikke var nyttig for deg: (Vennligst, hvis det ikke er vanskelig, angi hvorfor? Vi vil være veldig takknemlige for et detaljert svar. Takk for at du hjelper oss med å bli bedre!




Topp