Εγκατάσταση και χρήση proxy (Squid)
ΕΓΚΑΤΑΣΤΑΣΗ ΚΑΙ ΧΡΗΣΗ
PROXY SERVER (SQUID)
To Squid είναι ένας
εξυπηρετητής proxy που μπορεί να επιταχύνει την περιήγηση στο Διαδίκτυο. Τι σημαίνει αυτό και πως γίνεται;
Διαβάστε να καταλάβετε. Κάθε λογικός
χρήστης με γρήγορη σύνδεση στο διαδίκτυο
εκνευρίζεται όταν οι ιστοσελίδες κάνουν
παραπάνω από ...μισό δευτερόλεπτο να
εμφανιστούν στο Firefox, γιατί τίποτε δεν
αξίζει περισσότερο από το (χαμένο) χρόνο
του. Επιπλέον, όσο γρήγορη κι αν είναι
η σύνδεση με το διαδίκτυο, το εύρος ζώνης
είναι σημαντικό για τον καθένα μας γιατί
προτιμάμε να το καταναλώνουμε για την
λήψη των τελευταίων αναβαθμίσεων των
διανομών Linux. Επομένως, χρειαζόμαστε
ένα μαγικό εργαλείο που να μας γλυτώνει
χρόνο και εύρος ζώνης. Το Squid είναι
ακριβώς αυτό το μαγικό εργαλείο. Είναι
ένας γρήγορος, αθόρυβος κι ελεύθερος
proxy εξυπηρετητής που αποθηκεύει προσωρινά
(κασάρει) ιστοσελίδες, ελέγχει την
πρόσβαση και άλλα πολλά.
Σε αυτόν τον οδηγό θα
δούμε τρία πράγματα:
- Πως μια απλή εγκατάσταση
του Squid μεγιστοποιεί την ταχύτητα στο
διαδίκτυο. - Πως μια πιο προχωρημένη
εγκατάσταση του μπορεί να προστατεύσει
τα παιδιά μας όταν σερφάρουν. - Πως χρησιμοποιούμε
το Squid για να κάνουμε πλάκα σε φίλους
και συνεργάτες.
Στο τέλος αυτού του
tutorial, θα πρέπει να ξέρουμε πως γίνονται
όλα αυτά. Φτιάξτε καφέ και πάμε!
ΕΓΚΑΤΑΣΤΑΣΗ SQUID
Η εγκατάσταση του Squid
είναι πολύπλοκη και περιλαμβάνει λίγη
...μαγεία, γι' αυτό ακολουθήστε αυτά τα
βήματα μέχρι κεραίας!
- Τηλεφωνήστε σε
γνωστούς/φίλους/συγγενείς και πείτε
τους ότι θα έχετε πολύ σημαντική δουλειά
με τον υπολογιστή για μερικές μέρες.
- Από το διαχειριστή
λογισμικού της διανομής σας και
εγκαταστήστε το πακέτο squid. Μπορεί να
το βρείτε ως squidd ή squid-daemon. - Αυτό είναι όλο.
Καθίστε αναπαυτικά και ...ηρεμήστε. Όλοι
θα νομίζουν ότι δουλεύετε σκληρά σε
κάτι, γι' αυτό εκμεταλλευτείτε το
κατάλληλα!
TIP Αναζητήστε το squid στον διαχειριστή λογισμικού σας (Synaptic, YaST,
Yum, κτλ.)
ΕΚΚΙΝΗΣΗ SQUID & ΚΑΣΑΡΙΣΜΑ ΙΣΤΟΣΕΛΙΔΩΝ
Κάποιες διανομές μας
γλυτώνουν χρόνο ξεκινώντας το Squid
αυτόματα αφού το εγκαταστήσουμε. ¶λλες,
όπως οι Fedora και SUSE, δεν το κάνουν. Στο
Fedora, ξεκινάμε το Squid με την εντολή service
squid start και μετά δίνουμε chkconfig --level 345
squid on για να ξεκινά αυτόματα με κάθε
επανεκκίνηση. Για το SUSE, πηγαίνουμε στο
ΥaST > System > Services, βρίσκουμε το Squid και
κάνουμε κλικ στο Enable. Έτσι ξεκινά ο proxy
και θα κάνει το ίδιο αυτόματα σε κάθε
εκκίνηση του PC μας. Εναλλακτικά, για να
ξεκινήσει ο proxy μπορούμε να δώσουμε από
την κονσόλα /etc/init.d/squid start.
Μέχρι εδώ δεν κάναμε
καμία ιδιαίτερη ρύθμιση εκτός από το
να εγκαταστήσουμε την εφαρμογή και να
την ξεκινήσουμε. Τώρα, το Squid περιμένει
υπομονετικά στο περιθώριο να το
αξιοποιήσουμε. Για αυτό πρέπει να
ανοίξουμε τον περιηγητή ιστοσελίδων
και να τον ρυθμίσουμε ώστε να χρησιμοποιεί
ως proxy server το ίδιο το μηχάνημα μας.
Στο Firefox, πηγαίνουμε
στο μενού Edit > Preferences και στην καρτέλα
General κάνουμε κλικ στο Connection Settings. Εκεί
επιλέγουμε Manual Proxy Configuration, κάνουμε κλικ
στο Same Proxy for All Protocols και στο πεδίο HTTP
δίνουμε 127.0.0.1 ενώ στο Port βάζουμε 3128. Σε
αυτή την πόρτα (3128) “ακούει” εξορισμού
το Squid.
Στο Konqueror, πηγαίνουμε
στο Settings > Configure Konqueror, και στο νέο
διάλογο πάμε στην καρτέλα Proxy, επιλέγουμε
Manually Specify Proxy Settings και κάνουμε κλικ στο
κουμπί Setup. Στο μικρό διάλογο που
εμφανίζεται, δίνουμε 127.0.0.1 και 3128 στα
αντίστοιχα πεδία και πατάμε OK.
Τώρα, πριν από κάθε άλλη
κίνηση, ανοίγουμε μια κονσόλα, και
δίνουμε την εντολή: tail -f
/var/log/squid/access.log, αφού γίνουμε υπερχρήστες
(su -). Αυτό είναι απαραίτητο επειδή το
Squid ρυθμίζει τα δικαιώματα των αρχείων
του φακέλου /var/log/squid ώστε να είναι
προσβάσιμα μόνο από τους χρήστες 'squid'
και root. Αυτό σημαίνει ότι ως κανονικοί
χρήστες δεν μπορούμε να διαβάσουμε τα
αρχεία log, που σημαίνει ότι οι διαδικτυακές
μας συνήθειες είναι ασφαλείς από
αδιάκριτα μάτια. Στη συνέχεια, δίνουμε
ένα URL στο Firefox/Konqueror ενώ ταυτόχρονα
παρατηρούμε τι γίνεται στην κονσόλα με
την tail -f. Εάν όλα πήγαν κατ' ευχήν, εκεί
θα πρέπει να εμφανιστούν διάφορα
...σανσκριτικά που περιληπτικά λένε ότι
“ζητήθηκε από το Squid η τάδε ιστοσελίδα,
και επειδή δεν την έχει στο cache
(TCP_MISS/200) την κατεβάζει”.
Στον περιηγητή, η ιστοσελίδα
θα εμφανιστεί ως συνήθως, με τη διαφορά
ότι τώρα υπάρχει αποθηκευμένη στο cache
(χώρο προσωρινής αποθήκευσης) του Squid.
Κάθε επόμενη επίσκεψή μας στην ίδια
ιστοσελίδα θα είναι πολύ ταχύτερη γιατί
θα χρησιμοποιείται το “κασαρισμένο”
αντίτυπο.
ΑΛΛΑΓΗ ΡΥΘΜΙΣΕΩΝ
Πριν πάρουμε τηλέφωνο
φίλους και γνωστούς να τους πούμε ότι
η “πολύ σημαντική” δουλειά στο PC μας
τελείωσε, πρέπει να θυμηθούμε ότι ακόμα
χρησιμοποιούμε τις εξορισμού ρυθμίσεις
του Squid. Αυτές επιτρέπουν την χρήση του
proxy μόνο από το τοπικό μηχάνημα. Κανένα
άλλο PC δεν μπορεί να τον χρησιμοποιήσει.
Για να το φτιάξουμε αυτό, καθώς και να
αλλάξουμε πόρτα, πρέπει να πειράξουμε
λίγο το αρχείο ρύθμισης του Squid, που
είναι το /etc/squid/squid.conf. Ακολουθώντας τον
πάγιο κανόνα του Linux, το αρχείο αυτό
αποτελείται συνήθως από μερικές
εκατοντάδες γραμμές, αλλά πριν καταφύγουμε
στα ...ηρεμιστικά παρατηρούμε ότι τα
περισσότερα είναι απλώς σχόλια. Θα
τροποποιήσουμε μόνο δέκα από αυτές τις
γραμμές, επομένως μπορούμε να αγνοήσουμε
όλα τα υπόλοιπα.
Πρώτα, ας αλλάξουμε την
πόρτα. Η 3128 είναι φαινομενικά τυχαία
επιλεγμένη, δύσκολη στην απομνημόνευση,
προβληματική στα firewalls και φυσικά το
πρώτο μέρος που κοιτάνε οι διάφοροι
επίδοξοι εισβολείς όταν εμφανίζεται
κάποιο bug ασφάλειας του Squid. Οι περισσότεροι
αλλάζουν την πόρτα του Squid σε 80 (HTTP), 1080,
8080 ή 8000 και αυτό γίνεται πολύ εύκολα.
Ανοίγουμε το squid.conf με έναν κειμενογράφο
ως υπερχρήστες (π.χ. su -c 'kwrite
/etc/squid/squid.conf') και βρίσκουμε τη φράση
http_port. Το πιθανότερο είναι ότι πρώτα θα
βρούμε κάτι σαν το 'TAG: http_port', που υποδηλώνει
απλώς την αρχή των σχολίων για την
ρύθμιση αυτή. Προσπερνάμε τα σχόλια και
θα πρέπει να βρούμε τη γραμμή #http_port
3128. To κάγκελο # δείχνει ότι είναι σχόλιο,
δηλαδή η γραμμή αυτή θα αγνοηθεί από το
Squid. Παρατηρούμε ότι οι προγραμματιστές
για να μας βοηθήσουν βάζουν την εξορισμού
τιμή στο σχόλιο, ώστε να ξέρουμε περί
τίνος πρόκειται. Εμείς απλά αφαιρούμε
το κάγκελο αλλάζοντας το 3128 σε 8080. Μετά,
όμως, θα πρέπει να αλλάξουμε τις ρυθμίσεις
και στο Firefox/Konqueror.
Αποθηκεύουμε το αρχείο,
το κλείνουμε και μετά δίνουμε squid -k
reconfigure ως υπερχρήστες για να εφαρμοστούν
οι αλλαγές στο Squid. Οι πιο φαντεζί χρήστες
θα προτιμήσουν την εντολή kill -SIGHUP `cat
/var/run/squid.pid`, που κάνει το ίδιο ακριβώς
πράγμα.
Αφού διορθώσαμε την
πόρτα, ας ασχοληθούμε με κάτι πιο σοβαρό:
να επιτρέψουμε τη χρήση του proxy από
άλλους χρήστες (π.χ. τους φίλους μας).
Επιστρέφουμε στο αρχείο squid.conf και
βρίσκουμε την φράση 'acl all'. Το ACL σημαίνει
“λίστα ελέγχου πρόσβασης” (Access Control
List) και θέλουμε να την τροποποιήσουμε
αποκλείοντας όμως τους “κακούς” από
το proxy μας. Κάτω από το 'acl all' θα πρέπει
να υπάρχουν περίπου 16 γραμμές με κανόνες
της λίστας ελέγχου πρόσβασης που
αποτελούν την ελάχιστη ρύθμιση του
Squid. Αυτές θα πρέπει να μείνουν ανέγγιχτες,
αλλά ακριβώς από κάτω (μετά από μερικά
σχόλια) υπάρχει μια γραμμή που λέει:
“http_access allow localhost” ενώ η επόμενη γράφει:
“http_access deny all”. Αυτές οι δύο γραμμές μας
ενδιαφέρουν. Η πρώτη μας επιτρέπει να
συνδεόμαστε, ενώ η δεύτερη αποκλείει
όλους τους υπόλοιπους.
Ο ευκολότερος τρόπος
γα να “ανοίξουμε” τον εξυπηρετητή
proxy στον υπόλοιπο κόσμο είναι να αλλάξουμε
τη δεύτερη γραμμή σε “http_access allow all”,
μετά να αποθηκεύσουμε το αρχείο και να
δώσουμε squid -k reconfigure για να εφαρμοστούν
οι αλλαγές. Έπειτα βεβαιωνόμαστε ότι
έχουμε πρόσβαση στο proxy από οποιοδήποτε
υπολογιστή. Δεν θα το αφήσουμε έτσι
όμως γιατί ένας ανοικτός proxy είναι
παράδεισος για κάθε επίδοξο εισβολέα.
Αφού βεβαιωθούμε,
λοιπόν, ότι δουλεύει, τότε επιστρέφουμε
πίσω στο αρχείο ρύθμισης και αλλάζουμε
την ίδια γραμμή ξανά σε 'deny_all'. Ο λόγος
που μπήκαμε στον κόπο να κάνουμε αυτή
τη δοκιμή είναι απλός: σε λίγο θα βάλουμε
μια περισσότερο πολύπλοκη λίστα πρόσβασης
και το τελευταίο πράγμα που θέλουμε
είναι να δαπανήσουμε χρόνο ψάχνοντας
τι πήγε στραβά όταν το μόνο που μπορεί
να φταίει είναι ότι το firewall μπλοκάρει
το Squid. Χρησιμοποιώντας, όμως, την 'allow
all' και εξασφαλίζοντας ότι δουλεύει,
ξέρουμε ότι όποια προβλήματα αντιμετωπίσουμε
μετά θα έχουν να κάνουν μόνο με κακή
ρύθμιση του Squid. Εάν, παρ' ελπίδα, δεν
δουλέψει το Squid με την 'allow all', τότε είτε
απενεργοποιούμε το firewall (κακή λύση) ή
απλά του ανοίγουμε μια τρύπα στην πόρτα
80.
CIDR ΣΤΗΝ ΠΡΑΞΗ
Το Squid μας επιτρέπει να
περιορίσουμε την πρόσβαση σε αυτό
ανάλογα με τις IP διευθύνσεις του κάθε
χρήστη είτε επιτρέποντας συγκεκριμένες
μόνο IP είτε χρησιμοποιώντας CIDR για να
καθορίσουμε ομάδες διευθύνσεων. Θα
ξεκινήσουμε με ένα απλό παράδειγμα,
δηλαδή θα γράψουμε με το χέρι μια λίστα
με τις IP που θέλουμε να γίνονται δεκτές.
Αυτό αρκεί για μικρά δίκτυα, όπου δεν
θέλουμε κανείς άλλο υπολογιστή να έχει
πρόσβαση. Πάνω από την γραμμή 'http_access
deny all', προσθέτουμε:
acl
internal_network src 192.168.133.1 192.168.133.2 192.168.133.1
http_access
allow internal_network
Φυσικά, οι IP διευθύνσεις
είναι παραδείγματα και πρέπει να
αλλαχτούν. Κατόπιν, σώζουμε το αρχείο,
δίνουμε ξανά squid -k reconfigure και δοκιμάζουμε
αν έχουμε πρόσβαση από τα μηχανήματα
με αυτές τις IP. Για τον φόβο των Ιουδαίων,
δοκιμάζουμε την πρόσβαση και από κάποιο
μηχάνημα που δεν έχει κάποια από αυτές
τις διευθύνσεις. Θα πρέπει να δούμε ένα
Access Denied.
Η χειροκίνητη εισαγωγή
IP διευθύνσεων δεν είναι πρακτική για
μεγάλα δίκτυα υπολογιστών ούτε για
τοπικά δίκτυα με DHCP διευθυνσιοδότηση.
Η λύση εδώ είναι το CIDR, του οποίου η
ρύθμιση είναι εξωφρενικά δύσκολη και
απαιτητική.
Εμείς έχουμε συνηθίσει
να δουλεύουμε με IP διευθύνσεις, δηλαδή
τετράδες αριθμών που χωρίζονται από
τελείες, π.χ. 123.123.123.123. Οι υπολογιστές
μας, όμως, τις μεταφράζουν σε 'long IP'
διευθύνσεις, όπως η 2071690107 που ισοδυναμεί
με την 123.123.123.123.
Αυτός ο μακρύς αριθμός
δεν είναι τυχαίος, αλλά προκύπτει με
συγκεκριμένο αλγόριθμο. Κάθε μέλος μιας
συνηθισμένης IP παίρνει τιμές 0-255 που
μπορούν να αναπαρασταθούν από οχτώ
δυαδικά ψηφία (8 bits). Εδώ, ο μικρότερος
δυαδικός είναι ο 00000000 (το μηδέν στο
δεκαδικό σύστημα) και ο μεγαλύτερος
είναι το 11111111 (255 στο δεκαδικό). Έτσι,
κάθε μέλος της τετράδας της IP μετατρέπεται
σε δυαδικό, και μετά όλα συνενώνονται
σε ένα μακρύ αριθμό. Στο παράδειγμά μας,
ο αριθμός 123 είναι ο 8μπιτος δυαδικός
01111011, και επομένως η IP 123.123.123.123 θα έπρεπε
να αναπαρίσταται από την 01111011 01111011
01111011 01111011. Όμως αυτός ο μακρύς αριθμός
στο δεκαδικό είναι ο 2071690107.
Για να λειτουργήσει το
CIDR πρέπει να δώσουμε μια βασική IP
διεύθυνση καθώς και μια μάσκα δικτύου
(netmask). H μάσκα καθορίζει το μέρος της IP
που είναι σταθερό, δουλεύοντας από τα
αριστερά στα δεξιά σε κάθε bit. Για
παράδειγμα η 192.168.133.0/24 καθορίζει ότι τα
πρώτα 24 δυαδικά ψηφία (που αντιστοιχούν
στο κομμάτι 192.168.133 της τετράδας) είναι
σταθερά, αφήνοντας τα τελευταία 8 φηφία
(το .0 έως το .255) μεταβλητά.
Επιστρέφοντας στο
Squid, τώρα, η διεύθυνση 192.168.133.0/24 θα
επιτρέψει την πρόσβαση σε όσα PC έχουν
διευθύνσεις από 192.168.133.1 έως 192.168.133.255.
Κάποιες από αυτές είναι ρεζερβέ για
διάφορες άλλες χρήσεις, αλλά οι
περισσότερες είναι διαθέσιμες. Αν
δώσουμε 10.0.0.0/8, τότε ανοίγουμε το proxy σε
μια πολύ μεγαλύτερη γκάμα διευθύνσεων
από 10.0.0.1 έως 10.255.255.255.
Ας αφήσουμε τη θεωρία,
όμως. Να τι μπορούμε να βάλουμε στο
Squid:
acl
internal_network src 192.168.132.0/24 192.168.133.0/24
192.168.134.10
http_access
allow internal_network
Οι γραμμές του
παραδείγματος επιτρέπουν την πρόσβαση
σε δύο CIDR κλίμακες διευθύνσεων
(192.168.132.1-255 και 192.168.133.1-255) καθώς και στην
μεμονωμένη IP 192.168.134.10. Μετά από αυτές
τις γραμμές βάζουμε τον κανόνα 'deny all'
για να απορρίψουμε όλες τις υπόλοιπες
διευθύνσεις. Κάπως έτσι μπορούμε να
επιτρέψουμε την πρόσβαση σε όσους
θέλουμε.
ΕΛΕΓΧΟΣ ΠΡΟΣΒΑΣΗΣ ΣΤΟ ΔΙΑΔΙΚΤΥΟ
Όταν δεν σπαταλούν το
χρόνο τους μιλώντας σε διάφορες e-mail
λίστες, κάποια “άτακτα” παιδιά
κυκλοφορούν ιούς, ανταλλάσσουν πειρατικά
παιχνίδια και κατεβάζουν ...πονηρά
πράγματα. Πολλοί γονείς δεν εμπιστευόμαστε
τα παιδιά μας ότι χρησιμοποιούν τον
υπολογιστή μόνο για τα μαθήματα τους,
αλλά το Squid μπορεί να μας δώσει μια κάποια
λύση.
Για αρχή, μπορούμε να
τους ...απαγορεύσουμε την πρόσβαση στο
διαδίκτυο σε συγκεκριμένες ώρες, ώστε
να αναγκαστούν να διαβάσουν. Αυτό γίνεται
μέσω ενός ακόμη κανόνα ACL, του 'time', όπου
καθορίζουμε τις ημέρες και τις ώρες
απαγόρευσης. Οι ημέρες ορίζονται από
ένα λατινικό γράμμα: M για τη Δευτέρα, Τ
για την Τρίτη, W για την Τετάρτη, H για
την Πέμπτη, F για την Παρασκευή, A για το
Σάββατο και S για την Κυριακή. Το γράμμα
D είναι μπαλαντέρ και σημαίνει όλες τις
καθημερινές (MTWHF).
Μέχρι τώρα είχαμε μόνο
ένα ACL κανόνα: 'επέτρεψε τις τάδε
διευθύνσεις'. Τώρα πρέπει να συνδυάσουμε
αυτόν τον κανόνα διευθύνσεων με τον
κανόνα ημερών/ωρών καθώς και να επιτρέψουμε
στους εαυτούς μας να σερφάρουμε όποτε
και όσο θέλουμε (και να κάνουμε ότι
απαγορεύουμε στα παιδιά μας ). Γι' αυτό
πρέπει να χωρίσουμε τις IP διευθύνσεις
σε kids_computers και adult_computers, κάπως έτσι:
acl
kids_computers src 192.168.133.3 192.168.133.4 192.168.133.5
acl
adult_computers src 192.168.133.0/24
Με αυτά ορίζουμε ότι
οι διευθύνσεις από 192.168.133.1 έως
192.168.133.255 χρησιμοποιούνται από ενήλικες
με εξαίρεση τρεις που αντιστοιχούν στα
μηχανήματα των παιδιών μας. Στη συνέχεια
δίνουμε τους κανόνες:
http_access
deny kids_computers homework_time
http_access
allow kids_computers
http_access
allow adult_computers
Οι δύο τελευταίες
γραμμές είναι ευνόητες, αλλά η πρώτη
περιλαμβάνει τα kids_computers και homework_time.
Όταν το Squid αποφασίζει αν θα δώσει
πρόσβαση ή όχι, δουλεύει με τους κανόνες
που εμφανίζονται κατά σειρά στο
squid.conf. Στο παράδειγμά μας, θα βρει πρώτα
την πρώτη γραμμή και θα απαγορεύσει την
πρόσβαση σε όσα μηχανήματα έχουν IP της
ομάδας kids_computers αν η τρέχουσα ημέρα και
ώρα συμπεριλαμβάνονται στο homework_time. Εάν
όχι, θα συνεχίσει να διαβάζει το αρχείο.
Αυτό, λοιπόν, είναι πολύ σημαντικό: το
Squid θα αρνηθεί την πρόσβαση μόνο όταν
συντρέχουν όλες οι συνθήκες που ορίζουμε.
Έτσι αν αν ζητήσει πρόσβαση ένας
υπολογιστής με IP που δεν ανήκει στην
κλάση kids_computers ή σε ώρα/ημέρα που δεν
καλύπτεται από την homework_time τότε το Squid
δεν θα του αρνηθεί πρόσβαση. Η δεύτερη
γραμμή επιτρέπει την πρόσβαση σε όλα
τα PC με IP που ανήκουν στην kids_computers ενώ
η τρίτη σε όλες τις IP της κλάσης
adult_computers. Είναι σημαντικό να καταλάβουμε
ότι παίζει ρόλο η σειρά που εμφανίζονται
οι κανόνες στο αρχείο squid.conf. Αν έχουμε
πρώτα έναν κανόνα accept all και έπειτα τον
'deny kids_computers' τότε όλοι θα έχουν πρόσβαση
στον proxy ανεξάρτητα της IP τους, γιατί το
Squid δεν θα φτάσει ποτέ στον δεύτερο
κανόνα.
Αφού αποκλείσαμε τα
παιδιά από το διαδίκτυο στις ώρες
μελέτης, μπορούμε να τους απαγορεύσουμε
και την λήψη αρχείων από ...πονηρά sites.
Πιο συγκεκριμένα, μας ενδιαφέρουν τρία
πράγματα: sites που γνωρίζουμε, sites που δεν
γνωρίζουμε καθώς και είδη αρχείων που
μπορεί να είναι επικίνδυνα για τους
υπολογιστές τους.
Το πρώτο γίνεται με
έναν ακόμα κανόνα ACL, το dstdomain, με το οποίο
καθορίζουμε επακριβώς τα URLs που τα
παιδιά μας δεν θα μπορούν να επισκέπτονται.
Για παράδειγμα:
acl
banned_sites dstdomain bbc.co.uk
http_access
deny kids_computers homework_time
http_access
deny kids_computers banned_sites
http_access
allow kids_computers
Η παραπάνω λίστα κανόνων
απαγορεύει στα παιδιά να συνδέονται
όταν (υποτίθεται ότι) διαβάζουν,
απαγορεύει να πηγαίνουν γενικώς στο
bbc.co.uk, αλλά σε όλες τις υπόλοιπες
περιπτώσεις τα αφήνει να κάνουν ότι
θέλουν. Ένα ενδιαφέρον σημείο είναι ότι
το Squid είναι ιδιαίτερα προσεκτικό στα
URLs που αποκλείει, δηλαδή θα μπλοκάρει
το bbc.co.uk, αλλά όχι τα news.bbc.co.uk ή το
www.bbc.co.uk.τα οποία
θεωρεί subdomains Εάν θέλουμε να απαγορεύσουμε
το bbc.co.uk και όλα τα subdomain του τότε πρέπει
να βάλουμε μια τελεία πριν, δηλαδή
.bbc.co.uk και το Squid θα αρνείται την πρόσβαση
σε οτιδήποτε URL τελειώνει σε .bbc.co.uk.
Το επόμενο πρόβλημα, ο
αποκλεισμός των επικίνδυνων site που δεν
γνωρίζουμε, λύνεται με τον καθορισμό
“απαγορευμένων” λέξεων. Για παράδειγμα,
μπορούμε να μπλοκάρουμε όλες τις
ιστοσελίδες που περιέχουν την λέξη
'sex' ή 'windows'. Γι' αυτό πρέπει να χρησιμοποιήσουμε
κανονικές εκφράσεις. Μια κανονική
έκφραση για παράδειγμα μοιάζει ως εξής:
acl
noword url_regex -i word
Ο διακόπτης -i σημαίνει
χωρίς διάκριση πεζών-κεφαλαίων, και
έτσι θα περιλαμβάνει κάθε λέξη word, Word,
WOrD, κτλ. Έτσι, μπορούμε να μπλοκάρουμε
τα παιδιά μας από τα ...επίφοβα sites με
τους παρακάτω κανόνες:
acl
nosex url_regex -i sex
acl
nowindows url_regex -i windows
To τελευταίο πρόβλημα,
η απαγόρευση λήψης επικίνδυνων αρχείων,
λύνεται και πάλι με πολύπλοκες κανονικές
εκφράσεις, που περιέχουν ^ και $ για την
αρχή και το τέλος του ανεπιθύμητου
αρχείου. Έτσι μπορούμε να μπλοκάρουμε
κάθε URL που τελειώνει σε “.exe” ώστε τα
παιδιά μας να μην δουν ποτέ εκτελέσιμα
Windows, με τον κανόνα:
acl
noexes url_regex -i exe$
Το δολάριο στο τέλος
σημαίνει ότι τα γράμματα exe πρέπει να
εμφανίζονται στο τέλος του URL. Δηλαδή
το www.hexen.com θα
επιτρέπεται, ενώ το http://evil.com/virus.exe
θα απαγορεύεται.
ΣΥΜΒΟΥΛΕΣ
- Για επιτάχυνση σε
πολύ φορτωμένους proxy εξυπηρετητές,
ορίζουμε την επιλογή 'buffered_logs' του
squid.conf σε 'on'. - Το Squid μπορεί να
λειτουργήσει και σαν reverse proxy δηλαδή να
κασάρει και να στέλνει ιστοσελίδες από
τον http εξυπηρετητή μας στον υπόλοιπο
κόσμο. - Το Squid χρησιμοποιεί
έναν κανόνα μόνο όταν ισχύουν όλες οι
δοσμένες συνθήκες. Για παράδειγμα, δύο
χρονικές συνθήκες με διαφορετικά ώρες
δεν θα δουλέψουν γιατί μόνο μια μπορεί
να είναι αληθής κάθε φορά. - Το Squirm μπορεί να
επιστρέφει παραπομπές με κανονικές
εκφράσεις επιτρέποντας την χρήση
κανόνων στην αντικατάσταση. - Με την tail -f
/var/log/squid/access.log βλέπουμε πως εργάζεται
το Squid.
ΕΠΙΛΟΓΟΣ: ΕΝΑ ΑΣΤΕΙΟ ΜΕ ΤΟ SQUID
Με το Squid μπορούμε να
“πειράξουμε” τους χρήστες του proxy μας.
Συμβουλή: αποφεύγουμε τους οξύθυμους.
Λοιπόν, στην αρχή
υποσχεθήκαμε ότι θα δείξουμε πως μπορούμε
να κάνουμε πλάκα στους γνωστούς μας που
χρησιμοποιούν το proxy μας. Αφού μας
χρωστάνε χάρη που αυξήσαμε την ταχύτητα
τους στο διαδίκτυο, θα μας συγχωρέσουν
ένα μικρό “αστειάκι”.
Αυτό που θα κάνουμε
είναι να ρυθμίσουμε το Squid να ανακατευθύνει
όλες τις αιτήσεις για GIF αρχεία σε μια
φωτογραφία του φίλου/γνωστού που θέλουμε
να “πειράξουμε”. Ουσιαστικά, οι GIF
εικόνες κάθε ιστοσελίδας θα αντικαθιστώνται
αδιακρίτως από αυτήν που θέλουμε εμείς.
Για να το καταφέρουμε,
όμως, θα πρέπει να εγκαταστήσουμε ένα
redirector για το Squid. Τα redirector είναι εξωτερικά
εργαλεία που μπορούν να μετασχηματίζουν
ένα URL σε ένα άλλο χωρίς να το καταλαβαίνει
κανείς. Πέρα από την πλάκα, υπάρχουν και
άκρως νόμιμες χρήσεις αυτών των εργαλείων.
Για παράδειγμα, μπορεί να διατηρούμε
κάποια αρχεία στο δίσκο μας και να μην
θέλουμε οι χρήστες του proxy μας να
καταναλώνουν μέρος του εύρους ζώνης
για να τα κατεβάζουν εκ νέου. Το redirector
που θα χρησιμοποιήσουμε εδώ λέγεται
Squirm, και το κατεβάζουμε από το
http://squirm.foote.com.au.
Μετά τη λήψη του, δίνουμε
τις εξής εντολές μέσα στο φάκελο όπου
βρίσκεται το tarball (αλλάζοντας το όνομα του αρχείο squirm με αυτό που έχουμε κατεβάσει):
tar
xvpfz squirm-1.0.tar.gz
cd
squirm-1.0
cd
regex
./configure
make
cp
regex.h regex.o ..
groupadd
squid
make
su
(κωδικός)
make
install
cd
/usr/local/squirm/etc
mv
squirm.local.dist squirm.local
chown
-R squid /usr/local/squirm
Με τις παραπάνω εντολές, εγκαθιστούμε
το εκτελέσιμο Squirm στο /usr/local/squirm/bin αλλά
θα πρέπει να τροποποιήσουμε και δύο
αρχεία. Καταρχήν, ανοίγουμε το
/etc/squid/squid.conf, βρίσκουμε την γραμμή που
ξεκινάει με 'redirect_program' και την κάνουμε
να δείχνει στο /usr/local/squirm/bin/squirm. Φυσικά,
βγάζουμε το κάγκελο από την αρχή της.
Από κάτω πρέπει να υπάρχει μια γραμμή
'redirect_children', που πρέπει να ρυθμίσουμε σε
10 και επίσης να αφαιρέσουμε το κάγκελο
από την αρχή της. Αποθηκεύουμε το αρχείο
και το κλείνουμε. Στη συνέχεια, δημιουργούμε
το αρχείο /usr/local/squirm/etc/squirm.patterns και εκεί
γράφουμε το εξής:
regexi gif$ homehelenphoto.gif
Η εντολή regexi ψάχνει
χωρίς διάκριση πεζών-κεφαλαίων για την
κανονική έκφραση gif$, δηλαδή κάθε αίτημα
URL που τελειώνει σε gif και το αντικαθιστά
εξολοκλήρου με την φωτογραφία photo.gif.
Στη συνέχεια, φορτώνουμε
τις αλλαγές στο Squid δίνοντας squid -k
reconfigure και λογικά θα πρέπει όλες οι
ιστοσελίδες που περιέχουν gif εικόνες
να εμφανίζουν στη θέση τους την photo.gif.
Φυσικά δεν θέλουμε να προκαλέσουμε
προβλήματα με το αστείο μας, γι' αυτό
βάζουμε την φωτογραφία κάποιου που
γνωρίζουμε ότι θα το διασκεδάσει.
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου