Erinevus lehekülje "SOCKS proxy kasutamine" redaktsioonide vahel

Allikas: Kuutõrvaja
(Sissejuhatus)
(Tööpõhimõte)
 
(ei näidata sama kasutaja 28 vahepealset redaktsiooni)
1. rida: 1. rida:
 
===Sissejuhatus===
 
===Sissejuhatus===
  
SOCKS on nö üldotstarbeline vahendamise (ingl. k. proxy) protokoll, mis võimaldab klientarvutist kasutada praktiliselt kõiki olulisemaid võrguteenuseid. SOCKS protokolli on implementeeritud nii iseseisvate klient-server rakendustena kui muu tarkvara koosseisus. Käesolev tekst keskendub sellistele komponentidele
+
SOCKS on nö üldotstarbeline vahendamise (ingl. k. proxy) protokoll, mis võimaldab klientarvutist kasutada mitmeid olulisi võrguteenuseid, üldiselt üle TCP, kuid teatud juhtumitel ka UDP protokolli kasutavaid teenuseid, nt nimeteenust. SOCKS protokolli on implementeeritud nii iseseisvate klient-server rakendustena kui muu tarkvara koosseisus. Käesolev tekst keskendub sellistele komponentidele
  
* SOCKS server on realiseeritud OpenSSH vahenditega
+
* SOCKS server on realiseeritud OpenSSH vahenditega (SOCKS v. 4 ja 5)
* SOCKS klient sisaldab otseselt SOCKS tuge (nt Iceweasel) või kasutatakse tsocks (transparent socks) teekide abi ning põhimõtteliselt saab seejärel kasutada tavalisi programme
+
* SOCKS klient sisaldab otseselt SOCKS tuge (nt Firefox ehk Iceweasel brauser)
 +
* klientprogrammi jaoks asendatakse osa võrku puudutavaid syscall'isid LD_PRELOAD keskkonnamuutujaga laaditud tsocks (transparent socks) teegi abil vastavate SOCKS funktsioonidega, põhimõtteliselt saab seejärel kasutada programme tavalisel moel (nt telnet, ssh, vnc), kuid peab arvestama, et UDP protokolli kasutavad nimelahendused ei toimu üle SOCKS kanali
  
Tehtud valikut põhjandab asjaolu, et ehk SOCKS ei sobi lausa nö korporatiivse vahendustegevuse jaoks, samas nö ad-hoc ehk kiirkorras tehtud piisavalt üldotstarbelis proxymise jaoks, mis eeldab serveri poolelt ainult OpenSSH olemasolu on lahendus äärmiselt praktiline kasutada. Nt kiireks kaugligipääsu korraldamiseks mingitele haldusliidestele, kui on nö selleks ettenähtud ühenduskanalid riknenud.
+
Teatud mõttes pakub SOCKS sarnast teenust nagu NAT.
  
 
===Tööpõhimõte===
 
===Tööpõhimõte===
  
Olgu kasutada sellised komponendid sellistel tingimustel
+
Põhimõtteliselt töötab SOCKS lahenduse kasutamine selliselt
  
* arvutitest SOCKS klient 1 ja 2 ei saa otse internetti
+
* klientarvutist ei saa otse pöörduda üle avaliku interneti skeemil kujutatud VNC ega HTTPS serverite poole
* tulemüüris töötab SOCKS proxy ja tulemüürist saab internetti pöörduda
+
* tulemüürist saab pöörduda VNC ja HTTPS serverite poole
* huvipakkuv teenus on kujutatud skeemil http serverina
 
  
                  http server
+
                    Klient
 
                       ___
 
                       ___
 
                       |  |
 
                       |  |
25. rida: 25. rida:
 
                       ..
 
                       ..
 
                         |
 
                         |
   SOCKS klient 1       |              SOCKS klient 2
+
                        |
     ___               _|_                ___
+
                      _|_  192.168.102.35, valis.loomaaed.tartu.ee       
   |  |--------------|   |--------------|  |
+
                      |   | tulemüür, SOCKS proxy
   |___|             |___|              |___|
+
                      |___|             
 +
  VNC server 1         |              HTTPS server 2
 +
     ___                 |                 ___
 +
   |  |----------------|----------------|  |
 +
   |___|                                 |___|
 
    
 
    
              tulemüür, SOCKS proxy
+
  10.0.5.25:5901/tcp                            10.0.5.90:443/tcp
              192.168.1.254:1080/tcp
 
  
Kasutaja jaoks on SOCKS proxy kasutamise kogemus sarnane HTTP proxy kasutamisega, kuid SOCKS proxy kasutamisel lisandub asjaolu, et proxy töötab igasuguste protokollidega, st lisaks HTTPle nt SMTP, DNS jt. SOCKS klient ja SOCKS server suhtlevad omavahel kasutades SOCKS protokolli.
+
Kasutaja jaoks on SOCKS proxy kasutamise kogemus sarnane HTTP proxy kasutamisega, kuid SOCKS proxy kasutamisel lisandub asjaolu, et proxy töötab mitmesuguste rakenduse taseme protokollidega, st lisaks HTTPle nt SMTP, VNC jt. SOCKS klient ja SOCKS server suhtlevad omavahel kasutades SOCKS protokolli. Selleks, et klient saaks VNC ja HTTPS teenustele ligi pääseda, peab ta kasutama SOCKS toega tarkvara, näidates klientprogrammides ära SOCKS proxy aadressi ning autentides ennast sellele proxile. Seejärel klientprogrammid pääsevad teenustele ligi, andmevahetus toimub läbi SOCKS proxy.
  
SOCKS vahendajat saab kasutada kahel viisil
+
Käesolevas tekstis käsitletakse juhtumit, kus SOCKS proxy serverina ei kasutata spetsiaalselt SOCKS serveri tarkvara, vaid nö tavalise OpenSSH võimalusi, sellisel lahendusel on mitmeid eeliseid
  
* SOCKS toega rakendus - rakenduse, mida kasutaja kasutab sisaldab SOCKS protokolli tuge, nt Iceweasel brauser
+
* ei ole tarvis hallata spetsiaalset SOCKS serveri tarkvara
* SOCKS teekide laadimine - kasutaja kasutab oma arvutid spetsiaalseid SOCKS teeke, nt pakett tsocks, mis võetakse kasutusele shellis nt LD_PRELOAD tee näitamisega; sisuliselt sellisest shellist seejärel käivitatud programmide jaoks asendatakse operatsioonisüsteemi võrku puudutavad call'id soksifitseeritud samaväärsete call'idega ja tulemusena kasutab nii käivitatud rakendus SOCKS serverit
+
* andmevahetus on krüptitud ning kasutajate autentimine toimub tuttaval viisil
  
Käesolevas tekstis käsitletakse juhtumit, kus SOCKS proxy serverina kasutatakse OpenSSH võimalusi.
+
Praktiliselt sobib SOCKS proxyt kasutada mõlemas suunas toimuva kasutusjuhu jaoks (ehk mitte tingimata sama proxy installatsiooni)
 +
 
 +
* klient asub kohtvõrgus ja proxy abil tehakse ühendusi kohtvõrgust avalikku võrgu teenuste poole
 +
* klient asub avalikus võrgus ja proxy abil tehakse talle kättesaadavaks nt tulemüüri taga (sisevõrgus) töötavaid teenuseid
  
 
===OpenSSH SOCKS proxy käivitamine===
 
===OpenSSH SOCKS proxy käivitamine===
  
   $ ssh -D 1080 eemal.loomaaed.tartu.ee
+
OpenSSH SOCKS proxy funktsionaalsuse kasutamiseks peab klient logima OpenSSH serverisse kasutades -D võtit, nt selliselt
 +
 
 +
   $ ssh -D 1080 valis.loomaaed.tartu.ee
 +
 
 +
Tulemusena kuulab ssh kliendi arvutis pordil 1080/tcp, mida saab kasutada SOCKS proxy serverina
  
===SOCKS-võimelise klientprogrammi kasutamine===
+
  Proto Recv-Q Send-Q Local Address  Foreign Address  State  PID/Program
 +
  tcp  0      0      127.0.0.1:1080 0.0.0.0:*        LISTEN  6040/ssh
 +
 
 +
Sellise kasutuse eelduseks on, et OpenSSH serveris on TCP pordi edasisuunamine lubatud, selliselt
 +
 
 +
  AllowTcpForwarding yes
 +
 
 +
Seda asjakorraldust võiks ettekujutada selliselt, et loogilises mõttes on SOCKS server nö määrdunud üle kahe arvuti, ssh kliendi ja ssh serveri, SOCKS proxy poole pöördutakse ühes arvutis ja SOCKS proxyst väljuvad ühendused teises arvutis.
 +
 
 +
===Iceweaseli kasutamine SOCKS proxyga===
  
 
SOCKS tuge sisaldavad mitmed erinevaid protokolle kasutavad kliendid, nt veebibrauserid. Nt Iceweasel brauseris toimub SOCKS serveri kirjeldamine valides
 
SOCKS tuge sisaldavad mitmed erinevaid protokolle kasutavad kliendid, nt veebibrauserid. Nt Iceweasel brauseris toimub SOCKS serveri kirjeldamine valides
56. rida: 75. rida:
 
[[Pilt:Socks-1.gif]]
 
[[Pilt:Socks-1.gif]]
  
Eeldusel, et eelmises punktis esitatud ssh ühendus on loodud, saab kasutada brauserit, ning teenuste jaoks kuhu pöördutakse, paistavad pöördumised aadressilt eemal.loomaaed.tartu.ee.
+
Eeldusel, et eelmises punktis esitatud ssh ühendus on loodud, saab kasutada brauserit, ning teenuste jaoks kuhu pöördutakse, paistavad pöördumised tulemüüri vastava võrgu poolse võrguseadme ip aadressilt.
  
===tsocks teekide kasutamine===
+
Iceweasel kasutamisel tuleb tähele panna, et vaikimisi toimub andmevahetus küll üle SOCKS proxy, kuid nimelahenduseks kasutatakse kohaliku arvuti resolverit. Selleks, et nimelahendusega tegeleks samuti SOCKS proxy tuleb Iceweaseli seadistamiseks avada nt about:config (kirjutades nii aadressireale) ja seada parameeter
  
Tarkvara paigaldamiseks tuleb öelda
+
  network.proxy.socks_remote_dns = true
 +
 
 +
===tsocks teegi kasutamine===
 +
 
 +
tsocks (transparent socks) http://tsocks.sourceforge.net/ teegi kasutamise idee seisnab selles, et klientprogrammi jaoks asendatakse osa võrku puudutavaid syscall'isid LD_PRELOAD keskkonnamuutujaga laaditud tsocks (transparent socks) teegi abil vastavate SOCKS funktsioonidega. Põhimõtteliselt saab seejärel kasutada programme tavalisel moel (nt telnet, ssh, vnc), kuid peab arvestama, et UDP protokolli kasutavad nimelahendused ei toimu üle SOCKS kanali, st tsocks töötab vaid TCP protokolliga.
 +
 
 +
Tarkvara paigaldamiseks operatsioonisüsteemiga Debian Lenny tuleb öelda
  
 
   # apt-get install tsocks
 
   # apt-get install tsocks
  
tsocks teekide kasutamist kontrollib seadistusfail /etc/tsocks.conf, nt sisuga
+
tsocks teekide kasutamist kontrollib seadistusfail /etc/tsocks.conf, nt sellise sisuga seadistusfail
  
   local = 192.168.0.0/255.255.0.0
+
   local = 127.0.0.1/255.255.255.255
  local = 10.0.0.0/255.0.0.0
 
 
    
 
    
 
   path {
 
   path {
           reaches = 193.40.0.0/255.255.0.0
+
           reaches = 10.0.5.0/24
 
           server = 127.0.0.1
 
           server = 127.0.0.1
 
           server_port = 1080
 
           server_port = 1080
 
           server_type = 5
 
           server_type = 5
 
   }
 
   }
 +
 
 +
  fallback = yes
  
 
mis ütleb, et
 
mis ütleb, et
  
* local - 192.168/16 ja 10/8 võrkude kasutamine toimub ilma SOCKSita, st tavaliselt
+
* local - 127.0.0.1 aadressi kasutamine toimub ilma SOCKSita, st otse
* path - kirjeldab komplekti, mis määrab, et 193.40/16 võrgu kasutamine toimub üle 127.0.0.1:1080 pordi, kus töötab versioon 5 SOCKS proxy
+
* path - kirjeldab komplekti, mis määrab, et 10.0.5.0/24 võrgu kasutamine toimub üle 127.0.0.1:1080 pordil töötava versioon 5 SOCKS proxy
 +
* fallback - pöördumised aadressidele, mis pole ülalpool kirjeldatud toimuvad otse
  
 
Kasutamiseks eeldame et üle-eelmises punktis esitatud moel on ssh ühendus loodud ning sobib öelda nt
 
Kasutamiseks eeldame et üle-eelmises punktis esitatud moel on ssh ühendus loodud ning sobib öelda nt
  
   $ tsocks wget http://kuutorvaja.eenet.ee/ -O - | less
+
   $ tsocks vncviewer 10.0.5.25:5901
  
 
kus tsocks on iseenesest keskkonnamuutujatega tegelev skript, veendumiseks sobib sisse vaadata või küsida
 
kus tsocks on iseenesest keskkonnamuutujatega tegelev skript, veendumiseks sobib sisse vaadata või küsida
89. rida: 116. rida:
 
   $ file /usr/bin/tsocks
 
   $ file /usr/bin/tsocks
 
   /usr/bin/tsocks: POSIX shell script text executable
 
   /usr/bin/tsocks: POSIX shell script text executable
 +
 +
Otsekohesemalt kasutades aga ka nt selliselt
 +
 +
  $ export LD_PRELOAD="/usr/lib/libtsocks.so"
 +
  $ vncviewer 10.0.5.25:5901
 +
 +
Kasutamise lõpetamiseks tuleb öelda
 +
 +
  $ unset LD_PRELOAD
 +
 +
Kuna tsocks funktsionaalsuse sisselülitamiseks tegutsetakse käsureal, siis lülitamine toimib ainult vastavas konkreetses shellis.
 +
 +
SOCKS serveri kontrollimiseks sobib öelda
 +
 +
  $ inspectsocks 127.0.0.1 1080
 +
  Reply indicates server is a version 5 socks server
 +
 +
===Märkused===
 +
 +
* tsocks lahendus ei tööta staatiliselt kompileeritud programmidega
  
 
===Kasulikud lisamaterjalid===
 
===Kasulikud lisamaterjalid===

Viimane redaktsioon: 5. september 2009, kell 11:45

Sissejuhatus

SOCKS on nö üldotstarbeline vahendamise (ingl. k. proxy) protokoll, mis võimaldab klientarvutist kasutada mitmeid olulisi võrguteenuseid, üldiselt üle TCP, kuid teatud juhtumitel ka UDP protokolli kasutavaid teenuseid, nt nimeteenust. SOCKS protokolli on implementeeritud nii iseseisvate klient-server rakendustena kui muu tarkvara koosseisus. Käesolev tekst keskendub sellistele komponentidele

  • SOCKS server on realiseeritud OpenSSH vahenditega (SOCKS v. 4 ja 5)
  • SOCKS klient sisaldab otseselt SOCKS tuge (nt Firefox ehk Iceweasel brauser)
  • klientprogrammi jaoks asendatakse osa võrku puudutavaid syscall'isid LD_PRELOAD keskkonnamuutujaga laaditud tsocks (transparent socks) teegi abil vastavate SOCKS funktsioonidega, põhimõtteliselt saab seejärel kasutada programme tavalisel moel (nt telnet, ssh, vnc), kuid peab arvestama, et UDP protokolli kasutavad nimelahendused ei toimu üle SOCKS kanali

Teatud mõttes pakub SOCKS sarnast teenust nagu NAT.

Tööpõhimõte

Põhimõtteliselt töötab SOCKS lahenduse kasutamine selliselt

  • klientarvutist ei saa otse pöörduda üle avaliku interneti skeemil kujutatud VNC ega HTTPS serverite poole
  • tulemüürist saab pöörduda VNC ja HTTPS serverite poole
                    Klient
                      ___
                     |   |
                     |___|
                       |
                       ..
                   internet
                      ..
                       |
                       |
                      _|_  192.168.102.35, valis.loomaaed.tartu.ee        
                     |   | tulemüür, SOCKS proxy
                     |___|              
 VNC server 1          |               HTTPS server 2
   ___                 |                 ___
  |   |----------------|----------------|   |
  |___|                                 |___|
 
 10.0.5.25:5901/tcp                             10.0.5.90:443/tcp

Kasutaja jaoks on SOCKS proxy kasutamise kogemus sarnane HTTP proxy kasutamisega, kuid SOCKS proxy kasutamisel lisandub asjaolu, et proxy töötab mitmesuguste rakenduse taseme protokollidega, st lisaks HTTPle nt SMTP, VNC jt. SOCKS klient ja SOCKS server suhtlevad omavahel kasutades SOCKS protokolli. Selleks, et klient saaks VNC ja HTTPS teenustele ligi pääseda, peab ta kasutama SOCKS toega tarkvara, näidates klientprogrammides ära SOCKS proxy aadressi ning autentides ennast sellele proxile. Seejärel klientprogrammid pääsevad teenustele ligi, andmevahetus toimub läbi SOCKS proxy.

Käesolevas tekstis käsitletakse juhtumit, kus SOCKS proxy serverina ei kasutata spetsiaalselt SOCKS serveri tarkvara, vaid nö tavalise OpenSSH võimalusi, sellisel lahendusel on mitmeid eeliseid

  • ei ole tarvis hallata spetsiaalset SOCKS serveri tarkvara
  • andmevahetus on krüptitud ning kasutajate autentimine toimub tuttaval viisil

Praktiliselt sobib SOCKS proxyt kasutada mõlemas suunas toimuva kasutusjuhu jaoks (ehk mitte tingimata sama proxy installatsiooni)

  • klient asub kohtvõrgus ja proxy abil tehakse ühendusi kohtvõrgust avalikku võrgu teenuste poole
  • klient asub avalikus võrgus ja proxy abil tehakse talle kättesaadavaks nt tulemüüri taga (sisevõrgus) töötavaid teenuseid

OpenSSH SOCKS proxy käivitamine

OpenSSH SOCKS proxy funktsionaalsuse kasutamiseks peab klient logima OpenSSH serverisse kasutades -D võtit, nt selliselt

 $ ssh -D 1080 valis.loomaaed.tartu.ee

Tulemusena kuulab ssh kliendi arvutis pordil 1080/tcp, mida saab kasutada SOCKS proxy serverina

 Proto Recv-Q Send-Q Local Address  Foreign Address  State   PID/Program 
 tcp   0      0      127.0.0.1:1080 0.0.0.0:*        LISTEN  6040/ssh

Sellise kasutuse eelduseks on, et OpenSSH serveris on TCP pordi edasisuunamine lubatud, selliselt

 AllowTcpForwarding yes

Seda asjakorraldust võiks ettekujutada selliselt, et loogilises mõttes on SOCKS server nö määrdunud üle kahe arvuti, ssh kliendi ja ssh serveri, SOCKS proxy poole pöördutakse ühes arvutis ja SOCKS proxyst väljuvad ühendused teises arvutis.

Iceweaseli kasutamine SOCKS proxyga

SOCKS tuge sisaldavad mitmed erinevaid protokolle kasutavad kliendid, nt veebibrauserid. Nt Iceweasel brauseris toimub SOCKS serveri kirjeldamine valides

 Edit -> Properties -> Advanced -> Network -> Settings

ning täites lahtrid nt selliselt

Socks-1.gif

Eeldusel, et eelmises punktis esitatud ssh ühendus on loodud, saab kasutada brauserit, ning teenuste jaoks kuhu pöördutakse, paistavad pöördumised tulemüüri vastava võrgu poolse võrguseadme ip aadressilt.

Iceweasel kasutamisel tuleb tähele panna, et vaikimisi toimub andmevahetus küll üle SOCKS proxy, kuid nimelahenduseks kasutatakse kohaliku arvuti resolverit. Selleks, et nimelahendusega tegeleks samuti SOCKS proxy tuleb Iceweaseli seadistamiseks avada nt about:config (kirjutades nii aadressireale) ja seada parameeter

 network.proxy.socks_remote_dns = true

tsocks teegi kasutamine

tsocks (transparent socks) http://tsocks.sourceforge.net/ teegi kasutamise idee seisnab selles, et klientprogrammi jaoks asendatakse osa võrku puudutavaid syscall'isid LD_PRELOAD keskkonnamuutujaga laaditud tsocks (transparent socks) teegi abil vastavate SOCKS funktsioonidega. Põhimõtteliselt saab seejärel kasutada programme tavalisel moel (nt telnet, ssh, vnc), kuid peab arvestama, et UDP protokolli kasutavad nimelahendused ei toimu üle SOCKS kanali, st tsocks töötab vaid TCP protokolliga.

Tarkvara paigaldamiseks operatsioonisüsteemiga Debian Lenny tuleb öelda

 # apt-get install tsocks

tsocks teekide kasutamist kontrollib seadistusfail /etc/tsocks.conf, nt sellise sisuga seadistusfail

 local = 127.0.0.1/255.255.255.255
 
 path {
         reaches = 10.0.5.0/24
         server = 127.0.0.1
         server_port = 1080
         server_type = 5
 }
 
 fallback = yes

mis ütleb, et

  • local - 127.0.0.1 aadressi kasutamine toimub ilma SOCKSita, st otse
  • path - kirjeldab komplekti, mis määrab, et 10.0.5.0/24 võrgu kasutamine toimub üle 127.0.0.1:1080 pordil töötava versioon 5 SOCKS proxy
  • fallback - pöördumised aadressidele, mis pole ülalpool kirjeldatud toimuvad otse

Kasutamiseks eeldame et üle-eelmises punktis esitatud moel on ssh ühendus loodud ning sobib öelda nt

 $ tsocks vncviewer 10.0.5.25:5901

kus tsocks on iseenesest keskkonnamuutujatega tegelev skript, veendumiseks sobib sisse vaadata või küsida

 $ file /usr/bin/tsocks
 /usr/bin/tsocks: POSIX shell script text executable

Otsekohesemalt kasutades aga ka nt selliselt

 $ export LD_PRELOAD="/usr/lib/libtsocks.so"
 $ vncviewer 10.0.5.25:5901

Kasutamise lõpetamiseks tuleb öelda

 $ unset LD_PRELOAD

Kuna tsocks funktsionaalsuse sisselülitamiseks tegutsetakse käsureal, siis lülitamine toimib ainult vastavas konkreetses shellis.

SOCKS serveri kontrollimiseks sobib öelda

 $ inspectsocks 127.0.0.1 1080
 Reply indicates server is a version 5 socks server

Märkused

  • tsocks lahendus ei tööta staatiliselt kompileeritud programmidega

Kasulikud lisamaterjalid