Διαχείριση σχολικού εργαστηρίου/WebProxy

Από Βικιβιβλία

Διακομιστής μεσολάβησης[επεξεργασία]

Ο διακομιστής μεσολάβησης (proxy server) είναι ένα πρόγραμμα που παρέχει υπηρεσία ενδιάμεσης μνήμης (caching) σε ένα τοπικό δίκτυο. Ο squid είναι από τους ποιο δημοφιλής ελεύθερους διακομιστές μεσολάβησης.

Περιβάλλον δοκιμών με χρήση εικονικής μηχανής[επεξεργασία]

Με χρήση του VirtualBox και κατάλληλη ρύθμιση των δικτύου της εικονικής μηχανής μπορούμε να έχουμε τον εικόνικό πελάτη στο ίδιο τοπικο δίκτυο με τον υπολογιστή μας και να δοκιμάσουμε με ασφάλεια και γρήγορα τις σχετικές ρυθμίσεις.

Για παράδειγμα σε laptop με wlan 10.164.6.149 διεπαφή προκειμένου η εικονική μηχανή να είναι σε τοπικό δίκτυο με τη διεπαφή αυτή στις ρυθμίσεις δικτύου της εικονικής μηχανής στην καρτέλα Adapter 1 επιλέγουμε το κουτάκι 'Enable Network Adapter' και στο πτυσσόμενο μενού 'Attached to' επιλέγουμε 'Bridged Adapter' και στο Name επιλέγουμε 'wlan0'

Βήματα στησίματος squid[επεξεργασία]

Ρύθμιση proxy στον πλοηγό διαδικτύου firefox . Στην απλή περίπτωση κάνουμε χειροκίνητη ρύθμιση του proxy στον firefox ακολουθώντας τα βήματα που φαίνονται στον ακόλουθο οδηγό με εικόνες από το wikihow

Επαλήθευση αρχείο ρυθμίσεων squid[επεξεργασία]

$ sudo  squid3 -k parse

Παρακολούθηση αρχείων ημερολογίου του squid[επεξεργασία]

$ sudo tail -f /var/log/squid3/access.log

Επανεκκίνηση του squid[επεξεργασία]

$ sudo service squid3 restart

Λίστες ελέγχου πρόσβασης Access Control Lists ACL[επεξεργασία]

O squid παρέχει μεταξύ άλλων μια χρήσιμη υπηρεσία caching που βελτιώνει την απόκριση της πλοήγησης στο διαδίκτυο σε ένα τοπικό δίκτυο. Είναι θεμιτό οι διαχειριστές να θέλουν να προστατεύσουν και να περιορίσουν την πρόσβαση στην υπηρεσία αυτή.

Μια βασική περίπτωση ελέγχου πρόσβασης είναι να επιτρέπουμε την πρόσβαση στον squid μόνο σε ΗΥ που είναι στο τοπικό μας δίκτυο.

Access control is done on a per-protocol basis: when Squid accepts an HTTP request, the list of HTTP controls is checked. Similarly, when an ICP request is accepted, the ICP list is checked before a reply is sent.

Assume that you have a list of IP addresses that are to have access to your cache. If you want them to be able to access your cache with both HTTP and ICP, you would have to enter the list of IP addresses twice: you would have lines something like this:

acl localnet src 192.168.1.0/255.255.255.0
..
http_access allow  localnet 
icp_access  allow  localnet

Πώς λειτουργείο o squid[επεξεργασία]

Γραμμές που ξεκινάνε με acl λέγονται acl γραμμές. Οι γραμμές που χρησιμοποιούνε τέτοιες acl γραμμές λέγονται acl-τελεστές. Ένας acl τελεστής μπορεί να αρνηθεί ή να επιτρέψει μια αίτηση

Με τις acl γραμμές ορίζουμε κλάσεις. Όταν ο squid δέχεται ένα αίτημα ελέγχει τη λίστα των acl-τελεστών που ταιριάζουν με αυτόν τον τύπο της αίτησης: μια HTTP αίτηση προκαλεί τον έλεγχο των acl-τελεστών που ξεκινάνε με http_access.

Οι τελεστές ελέγχονται με τη σειρά που εμφανίζονται στο αρχείο ρυθμίσεων . Εφόσον ο squid βρεί acl-τελεστή που αρνείται μια αίτηση δεν θα κοιτάξει τις παρακάτω γραμμές και σταματάει τον έλεγχο.

Πχ μια src acl γραμμή ορίζει μια κλάση αιτήσεων που έχουν σαν αφετηρία κάποια συγκεκριμένη IP ή ένα εύρος IP. Και εφόσον ορίσουμε τη κλάση αυτή κατόπιν με έναν acl-τελεστή μπορούμε να επιτρέψουμε ή να απαγορεύσουμε αυτή την κλάση αιτήσεων.

Τύποι κλάσεων ελέγχου[επεξεργασία]

  • Source/Destination IP address
  • Source/Destination Domain
  • Regular Expression match of requested domain
  • Words in the requested URL
  • Words in the source or destination domain
  • Current day/time
  • Destination port
  • Protocol (FTP, HTTP, SSL)
  • Method (HTTP GET or HTTP POST)
  • Browser type
  • Name (according to the Ident protocol)
Κλάση διευθύνσεων IP[επεξεργασία]
 acl myNet '''src''' 10.0.0.0/255.255.0.0 
 http_access allow myNet

Στις παραπάνω δύο γραμμές του squid.conf : α) ορίζουμε μια κλάση ελέγχου (ολες τις τοπικές διευθύνσεις του δικτύου 10.0.0.0/16 ) β) με τον αντίστοιχο acl τελεστή διατάζουμε τον squid να κάνει δεκτές τις αιτήσεις που η διεύθυνσή τους προέλευσης (src) ανήκει στην κλάση που ορίσαμε με το όνομo myNet

Αν αλλάξουμε στην acl γραμμή src σε dst τότε ορίζουμε την κλάση των αιτήσεων που έχουν στο πεδίο προορισμού τις διευθύνσεις που δίνουμε.

Λίστα απαγόρευσης[επεξεργασία]

Από λίγες δοκιμές που έκανα θέλει προσοχή η σειρά με την οποία έχουμε τις ρυθμίσεις στο squid.conf

% sudo nano /etc/squid3/squid.conf


# Squid normally listens to port 3128
http_port 3128

cache_dir ufs /var/spool/squid3 15000 16 256

acl Videos dstdom_regex youtube
http_access deny Videos

acl bad url_regex -i "/etc/squid3/acl-block.acl"
http_access deny bad

acl localnet src 10.164.6.0/24
http_access allow localnet

#acl localhost src 127.0.0.1
#http_access allow localhost

http_access deny all



% sudo nano /etc/squid3/acl-block.acl και γράφουμε λέξεις που δεν θέλουμε να είναι στα urls

https[επεξεργασία]

O squid δεν μπορεί να εξετάσει και να χειριστεί https συνδέσεις.


Σχετικές αναφορές :

Κανονικές εκφράσεις[επεξεργασία]

Regular expressions in Squid are case-sensitive by default. If you want to match both upper or lower-case text, you can prefix the regular expression with a -i. Have a look at the next example, where we use this to match either sex SEX (or even SeX).

Using regular expressions allows you to create more flexible access lists. So far you have only been able to filter sites by destination domain, where you have to match the entire domain to deny access to the site. Since regular expressions are used to match text strings, you can use them to match words, partial words or patterns in URLs or domains.

The most common use of regex filters in ACL lists is for the creation of far-reaching site filters: if the url or domain contain a set of banned words, access to the site is denied. If you wish to deny access to sites that contain the word sex in the URL, you would add one acl rule, rather than trying to find every site that has adult material on it.

The big problem with regex filters is that not all sites that contain the word sex in the URL are pornographic. By denying these sites you are likely to be infringing people's rights, and you should refer to a lawyer for advice on the legality of this.

Creating a list of sites that you don't want accessed can be tedious. There are companies that sell adult/unwanted material lists which plug into Squid, but these can be expensive. If you cannot justify the cost, you may be able to locate a free list, though they will not include full coverage.

The url_regex acl type is used to match any word in the URL. Here is an example:

Ρύθμιση wpad[επεξεργασία]

Το wpad είναι ένα πρωτόκολλο που χρησιμοποιούν οι πελάτες για να βρούνε ένα το URL ενός αρχείου ρυlaθμίσεων που όταν το εκτελέσουν μπορούν να βρούν τον proxy για μια συγκεκριμένη διεύθυνση

Ένας πελάτης αναζητεί το αρχείο ρύθμισης wpad.dat μέσω του http .

Ένας τρόπος σύμφωνα με το wpad πρωτόκολλο είναι μέσω του DHCP . Υπάρχει μια επιλογή (252) στο DHCP που αν ενεργοποιηθεί ο DHCP εξυπηρετητής επιστρέφει στου DHCP πελάτες(εφόσον το ζητήσουν) το URL του αρχείου wpad.dat . Η URL αυτή πχ http://wpad/wpad.dat . Μπορούν να χρησιμοποιηθούν και άλλες θύρες (εκτός της προκαθορισμένης του http) οπότε το URL μπορεί να είναι πχ http://wpad:245/wpad.dat

Ρύθμιση διακομιστή[επεξεργασία]

Στον κεντρικό εξυπηρετητή του τοπικού μας δικτύου θα χρειαστεί να εγκαταστήσουμε τον apache. Στο στάδιο αυτό μπορούμε να ακολουθήσουμε τις οδηγίες του σχολικού δικτύου προσέχουμε όμως γιατί έχουν λάθος στις παρακάτω γραμμές :

$ sudo gedit /etc/apache2/mods-available/mime.conf

AddType application/x-javascript-config dat
AddType application/x-ns-proxy-autoconfig dat

Και στo τεχνικό εγχειρίδιο 'Οδηγίες εγκατάστασης και ρύθμισης διακομιστή μεσολάβησης Squid' ,έκδοση 2 , Νοέμβριος 2009 του ΙΤΥ στην παράγραφο 2.4.2 Ρύθμιση web εξυπηρετητή σε Ubuntu αναφέρεται επίσης η ρύθμιση χωρίς την τελεία. AddType application/x-javascript-config dat

Πιθανών να λειτουργούσε σε κάποια παλιότερη έκδοση ;

Όπως φαίνεται και από τα σχόλια του αρχείου αυτού από άλλες πηγές που βρήκα στο διαδίκτυο αλλά και από δικές μου δοκιμές το σωστό είναι το:

 
AddType application/x-javascript-config .dat
AddType application/x-ns-proxy-autoconfig .dat

Ρύθμιση πελατών[επεξεργασία]

Θέλουμε τα προγράμματα πλοήγησης του παγκόσμιου ιστού στους πελάτες να χρησιμοποιούν τον proxy server μας και για την cache αλλά και για την εφαρμογή πολιτικών. Βασικά ερωτήματα: Μπορεί να γίνει μια system-wide ρύθμιση που να επηρεάζει όσα προγράμματα θελήσουν να έχουν πρόσβαση στο διαδίκτυο; Επίσης μπορούμε να ρυθμίσουμε ένα πλοηγό ώστε ένας απλός χρήστης να μην μπορεί να αλλάξει τις σχετικές ρυθμίσεις

Η ρύθμιση πρέπει να γίνει σε όλους τους πλοηγούς διαδικτύου που χρησιμοποιούνται σε ένα πελάτη:

Firefox[επεξεργασία]
Ρύθμιση proxy[επεξεργασία]
'Preferences' -> Advanced -> Connection - Settings -> επιλέγουμε 'Auto detect proxy settings for this network'

To βίκι της τ.σ έχει οδηγίες για ρύθμιση που δεν αλλάζει από το χρήστη.


Κλείδωμα ρυθμίσεων[επεξεργασία]

Οι αλλαγές που κάνουμε στις ρυθμίσεις μπορούν να αλλαχθούν από άλλους χρήστες. Προκειμένου να κλειδώσουμε τη συγκεκριμένη ρύθμιση ακολουθούμε τις οδηγίες στο mozillaZine .

Στο Firefox 41 οι οδηγίες αυτές λειτούργησαν χωρίς πρόβλημα. Στις οδηγίες αυτές αναφέρεται και το εξής: The mozilla.cfg file should be saved ANSI encoded.. Αλλά δεν υπάρχει πρόβλημα δημιουργώντας το lock αρχείο με έναν απλό επεξεργαστή κειμένου.

$ sudo nano /usr/lib/firefox/defaults/pref/proxy.js
//
pref("general.config.obscure_value", 0);
pref("general.config.filename", "mozilla.cfg");

$ sudo nano /usr/lib/firefox/mozilla.cfg
//
lockPref("network.proxy.type", 4);

Κάνουμε επαλήθευση μεταβαίνωντας στη σελίδα: about:config και αναζητώντας την ιδιότητα network.proxy.type όπου το status του θα είναι locked

Chrome[επεξεργασία]

Ο Google Chrome είναι πλοηγός διαδικτύου της Google.

Υπάρχει επιλογή ρύθμισης του διακομιστή μεσολάβησης :

Μενού --> Ρυθμίσεις --> Εμφάνιση σύνθετων ρυθμίσεων --> Δίκτυο --> Αλλαγή ρυθμίσεων διακομιστή μεσολάβησης

θα ανοίξει παράθυρο με τις σχετικές ρυθμίσεις του Λειτουργικού Συστήματος όπου λογικά υπάρχει και η επιλογή Ανίχνευση της διαμόρφωσης διαμεσολαβητή αυτόματα.

Αυτό σημαίνει ότι αν θέσουμε τη ρύθμιση αυτή θα επηρεάσει αυτόματα και τον explorer που επίσης χρησιμοποιεί τη ρύθμιση του συστήματος.

Από τι φαίνεται η ρύθμιση αυτή λειτουργεί σε επίπεδο χρήστη.

Οπότε κλείδωμα της ρύθμισης πρέπει να γίνει στο επίπεδο του λειτουργικού συστήματος. Στα windows αυτό μάλλον σημαίνει χρήση πολιτικών ή του μητρώου(registry).

Explorer - Edge[επεξεργασία]

Έλεγχος wpad[επεξεργασία]

Σε ubuntu 14.04 κάνουμε λήψη του πακέτου libpacparser που περιέχει το βοήθημα pactester.

Κατόπιν κάνουμε τον έλεγχο για μια διεύθυνση ως εξής: $ pactester -p wpad.dat -u http://www.google.com PROXY 10.164.6.x:3128; DIRECT

Δηλαδή αν ένας πελάτης αναζητήσει το URL google.com , και εφόσον έχει ρυθμιστεί ο πελάτης να κάνει χρήση του wpad τότε θα γίνει λήξη και εκτέλεση του wpad.dat και θα μας δώσει την έξοδο: PROXY 10.164.6.x:3128; DIRECT

For a pac file hosted at http://wpad/wpad.dat:

$ curl -s http://wpad/wpad.dat | pactester -p - -u http://google.com

Πηγές[επεξεργασία]

PAC αρχείο[επεξεργασία]

To wpad.dat είναι ένα pac (Proxy Auto-Config) αρχείο.

Ένα pac αρχείο περιέχει την javascript συνάρτηση FindProxyForURL(url, host) η οποία για μια συγκεκριμένη URL σαν είσοδο θα επιστρέψει μια συμβολοσειρά που περιγράφει το proxy ή οχι που θα χρησιμοποιηθεί.