Upotreba Proxy poslužitelja sa autokonfiguracijom klijenata

Upotreba Proxy poslužitelja sa autokonfiguracijom klijenata (web preglednika)

 

[toc]

 

 

 

Uvod

Objasniti ćemo kako koristiti proxy poslužitelj u svim web preglednicima ali bez potrebe ručnog konfiguriranja svakog web preglednika. Naime konfigurirati korištenje proxy poslužitelja u web preglenicima, možemo na tri načina:

A.    Ručnim unošenjem IP adrese ili imena proxy poslužitelja te porta na kojem se nalazi, uz mogućnosti ručnog definiranja iznimki za koje se ne treba koristiti poslužitelj [pr. lokalne mreže i poslužitelji i sl.].

B.    Ručnim unošenjem proxy poslužitelja i automatske konfiguracijske skripte (koja također može sadržavati iznimke kao i u točki A.)

C.   Uključivanjem automatske detekcije proxy poslužitelja (i njegove konfiguracijske skripte , kao u točki B).

 

Što je Proxy poslužitelj

Mi ćemo se bazirati na metodi iz točke C.

Ali prvo, podsjetimo se što je Proxy poslužitelj.

Proxy poslužitelj je posrednik između (vašeg) web preglednika i Interneta. U mrežama koje ne koriste proxy poslužitelj, vaš web preglednik se direktno spaja na određenu web stranicu a isto tako i web preglednik svakog drugog računala u mreži. Često se događa da određeni dio ljudi posjećuje iste web stranice, s kojih se kod svakog spajanja, svaki puta (za svaki web preglednik odnosno korisnika) “skidaju” isti podaci s interneta.

Proxy poslužitelj je centralno mjesto na mreži na koje se svi web preglednici prvo spajaju, a on se u pozadini spaja na internet i pri tome svaku posjećenu stranicu, tj. svaki njen element (a kojih svaka stranica ima i na stotine [svaka sličica,logo, animacija, …] ) pri tome drži u svojoj RAM memoriji i/ili na tvrdom disku. Ovime je opisan osnovni princip rada proxy poslužitelja.

 

 

Osim toga proxy poslužitelji imaju i na desetke drugih funkcionalnosti poput:

  • Preciznog definiranja veličine objekata (s web stranica), koji će se držati u RAM memoriji
  • Definiranja ukupne veličine RAM memorije za cache svih objekata
  • Definiranja veličine objekata koji će se snimati na Tvrdi disk (pojedinačno , i ukupne veličine)
  • Definiranja DNS poslužitelja koje će proxy poslužiteljkontaktirati te definiranje veličine interne memorije za cache-iranje DNS podataka (ili ne)
  • Ograničenje prava pristupa na internet, prema IP adresi klijenta ili prema korisničkom računu klijenta, koji se može nalaziti u Active Directory-ju,  LDAP-u i sl.
  • Ograničenje prava pristupa samo na određene web stranice,
  • Ograničenje prava pristupa na sve osim na  određene web stranice (pr. Youtube, Facebook i sl.),
  • Ograničenje brzine pristupa prema raznim parametrima,
  • Ograničenje pristupa prema raznim drugim parametrima i protokolima (pr. Zabranjen je  FTP promet prema/od interneta u radno vrijeme od 08:00 do 16:00.h. )
  • Ograničenja/odobrenja pristupa za razne Chat protokole (Skype , Yahoo , MSN , ICQ , …)

Proxy poslužitelji obično rade sa: HTTP, HTTPS i FTP protokolima.

Napomena : Osnovna konfiguracija mrežne opreme u mrežama koje koriste proxy poslužitelje podrazumjeva zabranu izlaska na internet za sve osim za proxy poslužitelj !.

 

 

 

 

Podaci o našoj testnoj konfiguraciji:

Web/DHCP/DNS/proxy poslužitelj ima IP  adresu : 192.168.100.254

Hostname poslužitelja je:  server1

Proxy poslužitelj je na portu: 8888

 

Logička shema naše (zamišljene) mreže  :

Proxy-basic-net

 

Da ne bi bili isključivi prema close source programima i sustavima, pokazati ćemo kako je simbioza između close source i open source programa i sustava jednostavna.

Odluka je pala na Windows Server 2003 R2 te njegove DHCP i DNS poslužitelje (close source strana) te na Apache Web Server i Squid Proxy  Server (open source strana).Jednostavno zato  jer su mi bili dostupni u trenutku pisanja i zadovoljavaju sve što je potrebno da bi napravili funkcionalan proxy poslužitelj koji koristi autokonfiguraciju na strani klijenata odnosno web preglednika.

 

Koristili smo squid proxy server ( http://www.squid-cache.org/  ) kompajliran za Windows OS.

Instalacija i konfiguracija neće biti objašnjena (ovo je posebna priča [i potencijalno članak]) ali dovoljno je definirati disk i direktorij gdje će se smještati objekti , IP adresa poslužitelja i ACL.koji je za potrebe testa definiran da propušta sve.tj. dopušta svima korištenje proxy poslužitelja, bez obzira na IP/Hostname ili korisnički račun u Active Directory-ju ili nekoj LDAP bazi ili sl.

 

Istovremeno smo instalirali  i konfigurirali Apache Web poslužitelj (najosnovnija instalacija i konfiguracija). Naime osnovna namjena Apache Web poslužitelja je samo smještanje automatske konfiguracijske skripte.

Nakon što smo instalirali i konfigurirali proxy poslužitelj, potrebno je svaki web preglednik ručno konfigurirati da ga i koristi. Dakle krećemo od klijentske strane.

Kao što smo spomenuli na početku ovdje su vidljive opcije A, B i C (za konfiguraciju proxy poslužitelja u web pregledniku):

 

Opcija A : Ručno konfiguriranje proxy servera.

Proxy-opcija1

 

Opcija B :Osim “ručnog rada”, moguće je konfigurirati web preglednike da to odrađuju pomoću konfiguracijske skripte.

Proxy-opcija2

Opcija C: Automatskim prepoznavanje proxy poslužitelja na mreži, uz korištenje iste konfiguracijske skripte:

==> Mi ćemo koristiti upravo ovu metodu.

 

 

Kako to sve zajedno radi u teoriji ?.

U praksi se najčešće koriste dvije metode za “autodiscovery” proxy poslužitelja.

Prva se oslanja na posebnu opciju u DHCP poslužitelju, koju mora podržavati DHCP klijent (a i web preglednik).

Druga se oslanja na DNS poslužitelj.

 

Objasnimo prvu metodu :

Dakle mrežne kartica mora biti konfigurirana da IP parametre mreže dobiva od DHCP poslužitelja.

Primjer je konfiguracija mrežne kartice (IPv4 : TCP/IP) u Windows 7 :

Win7-TCP-IPconfig

Dakle procedura je standardna za DHCP protokol, s time da kao što smo rekli i DHCP klijent (u ovom slučaju ovo Windows 7 računalo) mora podržavati opciju 252 (što uglavnom nije slučaj za večinu Windows i Linux Operativnih sustava, “by default”).

Pokušajmo to ipak napraviti na strani DHCP poslužitelja, za one Operativne sustave koji to standardno podržavaju bez ikakvih modifikacija sustava:

Pokrenimo DHCP poslužitelj , označimo naš poslužitelj (server1),  desni klik , Set Predefined Options  Sada trebamo dodati novu DHCP opciju : odaberimo: Add

DHCP-252-1

… i otvara nam se slijedeći prozor:

DHCP-252-2

Sada ćemo dodati DHCP opciju 252

Name : WPAD

Data type: String

Code: 252

Description (Opis) : Proxy Serve Automatic Configuration

Potvridmo sa OK

 

 

Sada trebamo odabrati naš željeni opseg DHCP poslužitelja (Scope):

Desni klik na Scope options :odabrati:  Configure Options

Sada idemo do kraja , do naše nove opcije 252:

DHCP-252-3

Uključimo ju i pod String value, moramo upisati URL do naše wpad.dat datoteke (koja treba biti u root direktoriju web poslužitelja) – za sada ćemo koristiti samo IP adresu.

 

I to je to što se tiće DHCP poslužitelja.

Sada ćemo pokrenuti Wireshark, da vidimo da li naši Windows-i 7 standardno koriste DHCP opciju 252.

 

Podsjetimo se i kako teče “razgovor” prema DHCP standardu (tkzv. DORA ):

Client ⇒ Server  : DHCP Discover

Server ⇒ Client  : DHCP Offer

Client ⇒ Server  : DHCP Request

Server ⇒ Client  : DHCP Acknowledge

 

… i ako se zatvara konekcija

Client ⇒ Server  : DHCP Release

 

Wireshark nam kaže da smo od našeg DHCP poslužitelja dobili slijedeće (filtrirane su samo DHCP poruke i to dio poruke koji nam je zanimljiv tj. bitan za razumjevanje):

DHCP-wire--1 (Slika : Windows DHCP klijent)

 

Prema tome, kao što sam i rekao, ništa od AutoDiscovery protokola za Proxy u ovom slučaju, ili u slučaju sa Standardnog Linux-a :

DHCP-wire--2(Slika: Linux : DHCP klijent)

… Uočite razliku (Windows i Linux DHCP klijenti).

 

A sada pogledajmo što je zahtjevao (DHCP Request, opcija 55) Linux DHCP klijent:

DHCP-wire-REQ--2-Win

 

I istovremeno što je zahtjevao Windows 7 DHCP klijent:

DHCP-wire-REQ--2-Win

 

Dakle u nekoliko opcija se razlikuju (Windows u odnosu na Linux DHCP klijent) ali niti jedan niti drugi nisu spominjali opciju 252 koja nas je zanimala (ovo je moguće konfigurirati ali ovo je također neka druga tema [članak]).

 

Riješenje

A sada riješenje problema koje radi i na Linux i Windows OS-u , bez rekonfiguriranja samog OS-a.

Dakle ovo je ona druga metoda, preko DNS poslužitelja.

Procedura je slijedeća:

Mrežnu karticu također konfiguriramo da koristi DHCP poslužitelj kao i prva metoda.

Nadalje treba nam Web preglednik koji je konfiguriran da koristi automatsku konfiguraciju proxy poslužitelja (naša opcija C):

Proxy-opcija3

Na osnovu IP parametara koje je dobio od DHCP poslužitelja , slaže zahtjeve prema  DNS poslužitelju na slijedeći način:

 

  1. Provjerava se DHCP opcija 15 ( Domain Name)
    1. Ako ima više domena za svaku se pravi FQDN (hostname.domena):

                                      i.        wpad.imedomene1

                                    ii.        wpad.imedomene2

                                   iii.        wpad.imedomene3

                                   iv.        wpad.imedomene4

…pr. ime domene je :  firma.os.hr    ⇒ tada će se tražiti wpad.firma.os.hr

  1. Od DNS poslužitelja se traži IP adresa, redom (iz točke 1.a. : i , ii , iii , iv, … koliko ima domena)
    1. DNS serveru daj mi IP adresu od : wpad.firma.os.hr
    2. Ako nema odgovora za prvu domenu, traži se po drugoj domeni (ii) , trećoj (iii), četvrtoj (iv) i tako koliko ih god ima
  2.  Pošto je ovo jednostavna mreža i primjer te imamo samo jednu domenu (firma.os.hr), DHCP zahtjev je bio poslan za : wpad.firma.os.hr i DNS bi nam odgovara da je IP adresa : 192.168.100.254
  3. Radi se HTTP GET na http://wpad.firma.os.hr/wpad.dat te se dohvaća automatska konfiguracijska skripta.
  4. Automatska konfiguracijska skripta se učitava te se web pregledik konfigurira prema njoj (o tome malo kasnije)

 

Konfiguracija DNS poslužitelja

Slijedi konfiguracija DNS poslužitelja koji već mora biti konfiguriran sa gore navedenom domenom , tako da ćemo dodati samo A record (za Host)  [DNS je također jedna druga tema/članak] , osim A recorda , mogli smo doati i Alias record (CNAME) , koji bi pokazivao na već postojeći A record : server1.firma.os.hr

 

 

Pokrenimo (konfiguraciju) DNS poslužitelja.

Dakle pošto smo se odlučili za A record , dodajemo wpad pod Name i IP adresu:  192.168.100.254

 

Dodajmo DNS A record : U “Forward Lookup zones

DNS-ForwardLookup-A-record

…i Add host.

 

Nakon ovoga bi DNS resolving wpad.firma.os.hr  trebao vratiti IP 192.168.100.254

Provjerimo u Command Prompt-u (cmd):

 

C:>nslookup wpad.firma.os.hr

Server:  server1.firma.os.hr

Address:  192.168.100.254

 

DNS request timed out.

    timeout was 2 seconds.

*** Request to wpad.firma.os.hr timed-out

 

 

DNS resolving ne radi !!.

 

 

U čemu je problem ?

Imamo sigurnosni problem !.

Pošto je u mnogim mrežama sigurnost zapostavljena, te je moguća automatska registracija FQDN-a računala, te je moguće da netko lažira svoj hostname u wpad.imedomene , MS (a i mnogi drugi DNS poslužitelji) je u DNS ugradio zaštitu te ne dozvoljava resolving takvog imena tj wpad hostname-a. te se on nalazi u listi hostaname-ova koja je blokirana.

 

Poruka koju ćemo dobiti (na DNS poslužitelju) je :

DNS-Security-Error

Da bismo to riješti isključiti ćemo tu listu a sigurnosni problem riješiti na način da se samo računala dodana u domenu mogu registrirati u DNS (i to samo da Admin Domene ima ta prava).

 

Kako to riješti :

  1. Moramo instalirati Support Tools sa instalacijskog CD-a od Windows Server 2003 R2 :

Putanja CDa-  , …\SUPPORT\TOOLS

Pokrenuti (instalirati) :SUPTOOLS.MSI

 

 

Pokrenimo Command Prompt (cmd) :

 

Sada maknimo blok listu:

C:>dnscmd /config /enableglobalqueryblocklist 0

Registry property enableglobalqueryblocklist successfully reset.

Command completed successfully.

 

I probajmo da li  DNS resolving radi

 

 

C:>nslookup wpad.firma.os.hr

Server:  server1.firma.os.hr

Address:  192.168.100.254

 

Name:    wpad.firma.os.hr

Addresses:  192.168.100.254

 

 

Nakon ovoga moramo kreirati autokonfiguracijsku datoteku na Web poslužitelju koji smo naveli (wpad.firma.os.hr).

Datoteka se mora zvati wpad.dat , i sadržavati minimalno lsijedeće redove:

 

function FindProxyForURL(url,host)

 

 {

 return “PROXY 192.168.100.254:8888”;

 }

 

 

Dakle ovo je osnovna konfiguracija datoteke wpad.dat, koja mora sadržavati Prox Server i njegov port. Osim toga ovdje je moguće definirati raznorazna pravila i izuzetke.

Pr. da se za neke mreže ili poslužitelje ne koristi proxy , za druge da , za treće neki drugi proxy itd.

 

Napomena : Datoteka se mora nalaziti u root direktoriju web poslužitelja.

 

Sada je sve spremno za rad 🙂 .

Hrvoje Horvat avatar
Hrvoje Horvat
Hrvoje Horvat mrežni je i sistem inženjer s dugogodišnjim (18+ g.) iskustvom u razvoju, testiranju i implementaciji, od najmanjih do enterprise kategorije IT sustava. Njegova područja rada su od mrežnih protokola do mrežnih servisa, preko standardne mrežne opreme do specijaliziranih komponenti i sustava, preko raznih mrežnih elemenata i sustava za mrežnu pohranu i dijeljenje podataka te platformi za Virtualizaciju, do protokola i sustava za redundanciju te sustava visoke dostupnosti (HA).