Upotreba Proxy poslužitelja sa autokonfiguracijom klijenata
Upotreba Proxy poslužitelja sa autokonfiguracijom klijenata (web preglednika)
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 :
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.
Opcija B :Osim “ručnog rada”, moguće je konfigurirati web preglednike da to odrađuju pomoću konfiguracijske skripte.
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 :
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
… i otvara nam se slijedeći prozor:
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:
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):
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 :
… Uočite razliku (Windows i Linux DHCP klijenti).
A sada pogledajmo što je zahtjevao (DHCP Request, opcija 55) Linux DHCP klijent:
I istovremeno što je zahtjevao Windows 7 DHCP klijent:
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):
Na osnovu IP parametara koje je dobio od DHCP poslužitelja , slaže zahtjeve prema DNS poslužitelju na slijedeći način:
- Provjerava se DHCP opcija 15 ( Domain Name)
- 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
-
Od DNS poslužitelja se traži IP adresa, redom (iz točke 1.a. : i , ii , iii , iv, … koliko ima domena)
- DNS serveru daj mi IP adresu od : wpad.firma.os.hr
- Ako nema odgovora za prvu domenu, traži se po drugoj domeni (ii) , trećoj (iii), četvrtoj (iv) i tako koliko ih god ima
- 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
- Radi se HTTP GET na http://wpad.firma.os.hr/wpad.dat te se dohvaća automatska konfiguracijska skripta.
- 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”
…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 :
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 :
- 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 🙂 .