Διαχείριση σχολικού εργαστηρίου/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 συνδέσεις.
Σχετικές αναφορές :
- Pages don't get blocked with Squid over HTTPS
- Feature: HTTPS (HTTP Secure or HTTP over SSL/TLS)
- Filtering HTTPS Traffic With Squid Το άρθρο αυτό αναλύει το πρόβλημα και εξετάζει μια γενική λύση που έχει όμως και νομικές επιπλοκές.
Κανονικές εκφράσεις
επεξεργασία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
Πηγές
επεξεργασία- http://findproxyforurl.com/
- http://ts.sch.gr/wiki/Linux/%CE%A0%CF%81%CE%BF%CF%87%CF%89%CF%81%CE%B7%CE%BC%CE%AD%CE%BD%CE%B1/Squid
PAC αρχείο
επεξεργασίαTo wpad.dat είναι ένα pac (Proxy Auto-Config) αρχείο.
Ένα pac αρχείο περιέχει την javascript συνάρτηση FindProxyForURL(url, host) η οποία για μια συγκεκριμένη URL σαν είσοδο θα επιστρέψει μια συμβολοσειρά που περιγράφει το proxy ή οχι που θα χρησιμοποιηθεί.