Εγκατάσταση και χρήση Squid proxy server

dimitris | Πέμ, 08/02/2018 - 09:58 | 32' | 1

To Squid είναι ένας εξυπηρετητής proxy server που μπορεί να επιταχύνει την περιήγηση στο Διαδίκτυο. Τι σημαίνει αυτό και πως γίνεται; Διαβάστε να καταλάβετε.

Κάθε λογικός χρήστης με γρήγορη σύνδεση στο διαδίκτυο εκνευρίζεται όταν οι ιστοσελίδες κάνουν παραπάνω από ...μισό δευτερόλεπτο να εμφανιστούν στο Firefox, γιατί τίποτε δεν αξίζει περισσότερο από το (χαμένο) χρόνο του. Επιπλέον, όσο γρήγορη κι αν είναι η σύνδεση με το διαδίκτυο, το εύρος ζώνης είναι σημαντικό για τον καθένα μας γιατί προτιμάμε να το καταναλώνουμε για την λήψη των τελευταίων αναβαθμίσεων των διανομών Linux. Επομένως, χρειαζόμαστε ένα μαγικό εργαλείο που να μας γλυτώνει χρόνο και εύρος ζώνης. Το Squid είναι ακριβώς αυτό το μαγικό εργαλείο. Είναι ένας γρήγορος, αθόρυβος κι ελεύθερος proxy εξυπηρετητής που αποθηκεύει προσωρινά (κασάρει) ιστοσελίδες, ελέγχει την πρόσβαση και άλλα πολλά.

Σε αυτόν τον οδηγό θα δούμε τρία πράγματα:

  • Πως μια απλή εγκατάσταση του Squid μεγιστοποιεί την ταχύτητα στο διαδίκτυο.

  • Πως μια πιο προχωρημένη εγκατάσταση του μπορεί να προστατεύσει τα παιδιά μας όταν σερφάρουν.

  • Πως χρησιμοποιούμε το Squid για να κάνουμε πλάκα σε φίλους και συνεργάτες.

Στο τέλος αυτού του tutorial, θα πρέπει να ξέρουμε πως γίνονται όλα αυτά. Φτιάξτε καφέ και πάμε!

Εγκατάσταση Squid

Η εγκατάσταση του Squid είναι πολύπλοκη και περιλαμβάνει λίγη ...μαγεία, γι' αυτό ακολουθήστε αυτά τα βήματα μέχρι κεραίας!

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

  1. Από το διαχειριστή λογισμικού της διανομής σας και εγκαταστήστε το πακέτο squid. Μπορεί να το βρείτε ως squidd ή squid-daemon.

  2. Αυτό είναι όλο. Καθίστε αναπαυτικά και ...ηρεμήστε. Όλοι θα νομίζουν ότι δουλεύετε σκληρά σε κάτι, γι' αυτό εκμεταλλευτείτε το κατάλληλα!

     

TIP: Αναζητήστε το squid στον διαχειριστή λογισμικού σας (Λογισμικό Ubuntu, Apt, Synaptic, DNF, κτλ.)
 

Εκκίνηση Squid & κασάρισμα ιστοσελίδων

Κάποιες διανομές μας γλυτώνουν χρόνο ξεκινώντας το Squid αυτόματα αφού το εγκαταστήσουμε. Άλλες διανομές, όπως Fedora και openSUSE, δεν το κάνουν.

Ξεκινάμε το Squid με την εντολή

systemctl start squid

και μετά, για να ρυθμίσουμε την αυτόματη εκκίνηση του Squid κατά την εκκίνηση του υπολογιστή μας, δίνουμε:

systemctl enable squid

Για να ελέγξουμε την κατάσταση του Squid δίνουμε:

systemctl status squid

Για να σταματησουμε το Squid:

systemctl stop squid

Στο openSUSE, μπορούμε να κάνουμε το ίδιο και από το παραθυρικό περιβάλλον: Πηγαίνουμε στο ΥaST > System > Services, βρίσκουμε το Squid και κάνουμε κλικ στο Enable. Έτσι ξεκινά ο proxy και θα κάνει το ίδιο αυτόματα σε κάθε εκκίνηση του PC μας.

Μέχρι εδώ δεν κάναμε καμία ιδιαίτερη ρύθμιση εκτός από το να εγκαταστήσουμε την εφαρμογή και να την ξεκινήσουμε. Τώρα, το Squid περιμένει υπομονετικά στο περιθώριο να το αξιοποιήσουμε. Για αυτό πρέπει να ανοίξουμε τον περιηγητή ιστοσελίδων και να τον ρυθμίσουμε ώστε να χρησιμοποιεί ως proxy server το ίδιο το μηχάνημα μας.

Στο Firefox, από το μενού επιλέγουμε Preferences και στην καρτέλα General κάνουμε κλικ στο Network Proxy. Εκεί επιλέγουμε Manual Proxy Configuration, κάνουμε κλικ στο Same Proxy for All Protocols και στο πεδίο HTTP δίνουμε 127.0.0.1 ενώ στο Port βάζουμε 3128. Σε αυτή την πόρτα (3128) “ακούει” εξορισμού το Squid.

Αντίστοιχες ειναι οι ρυθμίσεις σε άλλους browsers.

Τώρα, πριν από κάθε άλλη κίνηση, ανοίγουμε μια κονσόλα, και δίνουμε την εντολή:

tail -f /var/log/squid/access.log

αφού γίνουμε υπερχρήστες (su -) ή με sudo μπροστά. Αυτό είναι απαραίτητο επειδή το Squid ρυθμίζει τα δικαιώματα των αρχείων του φακέλου /var/log/squid ώστε να είναι προσβάσιμα μόνο από τους χρήστες 'squid' και root. Αυτό σημαίνει ότι ως κανονικοί χρήστες δεν μπορούμε να διαβάσουμε τα αρχεία log, που σημαίνει ότι οι διαδικτυακές μας συνήθειες είναι ασφαλείς από αδιάκριτα μάτια. Στη συνέχεια, δίνουμε ένα URL στο Firefox ενώ ταυτόχρονα παρατηρούμε τι γίνεται στην κονσόλα με την 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 και αυτό γίνεται πολύ εύκολα.

Ανοίγουμε το αρχείο /etc/squid/squid.conf με έναν κειμενογράφο ως υπερχρήστες. Π.χ.

sudo nano /etc/squid/squid.conf

ή από το γραφικό περιβάλλον σε Ubuntu πατάμε Alt+F2 και γράφουμε

gedit admin:///etc/squid/squid.conf

Μέσα στο αρχείο ρυθμίσεων βρίσκουμε τη φράση http_port. Το πιθανότερο είναι ότι πρώτα θα βρούμε κάτι σαν το 'TAG: http_port', που υποδηλώνει απλώς την αρχή των σχολίων για την ρύθμιση αυτή. Προσπερνάμε τα σχόλια και θα πρέπει να βρούμε τη γραμμή #http_port 3128. To κάγκελο # δείχνει ότι είναι σχόλιο, δηλαδή η γραμμή αυτή θα αγνοηθεί από το Squid. Παρατηρούμε ότι οι προγραμματιστές για να μας βοηθήσουν βάζουν την εξορισμού τιμή στο σχόλιο, ώστε να ξέρουμε περί τίνος πρόκειται. Εμείς απλά αφαιρούμε το κάγκελο αλλάζοντας το 3128 σε 8080. Μετά, όμως, θα πρέπει να αλλάξουμε τις ρυθμίσεις και στο Firefox.

Αποθηκεύουμε το αρχείο, το κλείνουμε και μετά δίνουμε

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. Φυσικά δεν θέλουμε να προκαλέσουμε προβλήματα με το αστείο μας, γι' αυτό βάζουμε την φωτογραφία κάποιου που γνωρίζουμε ότι θα το διασκεδάσει.

Δώσε αστέρια!

MO: 4.8 (ψήφοι: 4)

Σχόλια

Ωραίο το squid. Είναι πολύ χρήσιμο όταν έχεις πάνω από 2-3 υπολογιστές στο δίκτυο. Αν έχεις μόνο 1 υπολογιστή, δεν πολυ χρειάζεται νομιζω.