SOKKER

SOCKS  er en netværksprotokol på sessionsniveau af OSI-modellen , som giver dig mulighed for at videresende pakker fra en klient til en server gennem en proxy-server transparent (usynligt for dem) og dermed bruge tjenester bag firewalls (firewalls) .

Den senere version af SOCKS5 antager godkendelse, så kun autoriserede brugere får adgang til serveren.

Introduktion

Klienter bag en firewall , der skal have adgang til eksterne servere, kan i stedet forbindes til en SOCKS proxyserver . En sådan proxyserver administrerer klientens rettigheder til at få adgang til eksterne ressourcer og videregiver klientens anmodning til den eksterne server. SOCKS kan også bruges på den modsatte måde ved at kontrollere eksterne klienters rettigheder til at oprette forbindelse til interne servere bag en firewall .

I modsætning til HTTP -proxyer transmitterer SOCKS alle data fra klienten uden at tilføje noget fra sig selv, det vil sige fra den endelige servers synspunkt er de data, den modtager fra SOCKS-proxyen, identiske med de data, som klienten ville overføre direkte uden fuldmagt. SOCKS er mere generel, den afhænger ikke af specifikke protokoller for applikationslaget (lag 7 af OSI-modellen ) og fungerer på niveau med TCP-forbindelser (lag 4 af OSI-modellen ). På den anden side cacher HTTP - proxyen dataene og kan mere omhyggeligt filtrere indholdet af de transmitterede data.

Protokollen er udviklet af MIPS systemadministrator David Koblas . Efter at MIPS blev en del af Silicon Graphics Corporation i 1992 , holdt Koblas et foredrag om SOCKS på Usenix Security Symposium, og SOCKS blev offentligt tilgængelige. Den fjerde version af protokollen blev udviklet af Ying-Da Lee fra NEC .

SOCKS-servere bruger normalt port 1080 [1] .

SOCKS 4 protokol

SOCKS 4 er designet til at fungere gennem en firewall uden godkendelse til klient-server-applikationer, der kører over TCP -protokollen , såsom Telnet , FTP og populære kommunikationsprotokoller, såsom HTTP , WAIS og Gopher . Grundlæggende kan en SOCKS-server opfattes som en firewall, der understøtter SOCKS-protokollen.

En typisk SOCKS 4-anmodning ser sådan ud:

Klientanmodning til SOCKS Server:

Størrelsen Beskrivelse
1 byte SOCKS versionsnummer, 1 byte (skal være 0x04 for denne version)
1 byte Kommandokode:
  • 0x01 = oprettelse af en TCP/IP-forbindelse
  • 0x02 = TCP/IP- porttildeling (binding)
2 bytes Portnummer
4 bytes IP-adresse
n+1 bytes Bruger ID. Streng med variabel længde afsluttet med en NUL-byte (0x00). Feltet er beregnet til at identificere brugeren (se Ident )

Serversvar til SOCKS-klient:

Størrelsen Beskrivelse
1 byte NUL byte
1 byte Svarkode:
  • 0x5a = anmodning imødekommet
  • 0x5b = anmodning afvist eller ugyldig
  • 0x5c = Forespørgsel mislykkedes, fordi identd ikke kører (eller ikke tilgængelig fra serveren)
  • 0x5d = Forespørgsel mislykkedes, fordi klient-id ikke kan validere bruger-id'et i anmodningen
2 bytes Vilkårlige data, bør ignoreres
4 bytes Vilkårlige data, bør ignoreres

SOCKS 5 protokol

SOCKS 5 [2] er en inkompatibel udvidelse til SOCKS 4-protokollen. Den tilføjer understøttelse af UDP , giver generiske stærke autentificeringsskemaer og udvider adresseringsmetoder, tilføjer understøttelse af domænenavne og IPv6 -adresser . Den indledende kommunikationsopsætning består nu af følgende:

Godkendelsesmetoder er nummereret som følger:

0x00 Der kræves ingen godkendelse
0x01 GSSAPI
0x02 RFC 1929 brugernavn/adgangskode
0x03-0x7F Reserveret af IANA
0x03 KAP
0x04 Ikke besat
0x05 Udfordring-svar (godkendelse)
0x06 SSL
0x07 NDS-godkendelse
0x08 Multi-faktor autentificeringsramme
0x09 JSON-blok af parametre
0x0A–0x7F Ikke besat
0x80-0xFE Forbeholdt privat brug metoder

Indledende hilsen fra klienten:

Størrelsen Beskrivelse
1 byte SOCKS versionsnummer (skal være 0x05 for denne version)
1 byte Antal understøttede godkendelsesmetoder
n bytes Godkendelsesmetodenumre, variabel længde, 1 byte for hver understøttet metode

Serveren rapporterer sit valg:

Størrelsen Beskrivelse
1 byte SOCKS versionsnummer (skal være 0x05 for denne version)
1 byte Valgt godkendelsesmetode eller 0xFF, hvis der ikke blev tilbudt en acceptabel metode

Efterfølgende identifikation afhænger af den valgte metode.

Kundeanmodning:

Størrelsen Beskrivelse
1 byte SOCKS versionsnummer (skal være 0x05 for denne version)
1 byte Kommandokode:
  • 0x01 = oprettelse af en TCP/IP-forbindelse
  • 0x02 = TCP/IP-porttildeling (binding)
  • 0x03 = UDP-porttilknytning
1 byte Reserveret byte, skal være 0x00
1 byte Adressetype:
  • 0x01 = IPv4-adresse
  • 0x03 = domænenavn
  • 0x04 = IPv6-adresse
Afhænger af typen af ​​adresse Adressetildeling:
  • 4 bytes for en IPv4-adresse
  • Den første byte er længden af ​​navnet, efterfulgt af domænenavnet uden den afsluttende null
  • 16 bytes for en IPv6-adresse
2 bytes Portnummer, i rækkefølge fra høj til lav ( big-endian )

Serversvar:

Størrelsen Beskrivelse
1 byte SOCKS versionsnummer (0x05 for denne version)
1 byte Svarkode:
  • 0x00 = anmodning godkendt
  • 0x01 = SOCKS serverfejl
  • 0x02 = Forbindelse nægtet af regelsæt
  • 0x03 = netværk ikke tilgængeligt
  • 0x04 = vært utilgængelig
  • 0x05 = forbindelse nægtet
  • 0x06 = TTL -udløb
  • 0x07 = kommando ikke understøttet / protokol fejl
  • 0x08 = adressetype understøttes ikke
1 byte Byte reserveret, skal være 0x00
1 byte Opfølgningsadressetype:
  • 0x01 = IPv4-adresse
  • 0x03 = domænenavn
  • 0x04 = IPv6-adresse
Afhænger af typen af ​​adresse Adressetildeling:
  • 4 bytes for en IPv4-adresse
  • Den første byte er længden af ​​navnet, efterfulgt af domænenavnet uden den afsluttende null
  • 16 bytes for en IPv6-adresse
2 bytes Portnummer, i rækkefølge fra høj til lav ( big-endian )

Implementeringer

Se også

Noter

  1. Servicenavn og transportprotokolportnummerregister . IANA. Dato for adgang: 8. januar 2016. Arkiveret fra originalen 3. marts 2016.
  2. Marcus Leech <[email protected]>. SOCKS protokol version  5 . tools.ietf.org. Hentet 6. juni 2020. Arkiveret fra originalen 18. oktober 2020.

Links