Proxy Server Εγκατάσταση - Παραμετροποίηση (Debian)



Θα χρειαστείτε

Υπολογιστή

Λειτουργικό Debian/GNU

Clients

Δίκτυο LAN

debian-logoSquid Proxy Server σε Debian

Squid στα Ελληνικά καθώς και στα Αγγλικά σημαίνει καλαμάρι.
Σε ορολογία Linux Squid ονομάζουμε τον Proxy Server.
Ο Proxy Server διαχωρίζει το εσωτερικό δίκτυο απο τον παγκόσμιο ιστό στις συνδέσεις HTTP και FTP, ώστε κανένας να μην συνδέεται απευθείας στο internet για λόγους που θα δούμε παρακάτω.

Εγκατάσταση:
#apt-get install squid

Παραματροποίηση:
Το αρχείο ρυθμίσεων βρίσκεται στο path /etc/squid/squid.conf και βλεπουμε τις default ρυθμίσεις που ήδη υπάρχουν.

Ας υποθέσουμε ότι έχουμε ένα μηχάνημα με δύο interfaces(κάρτες δικτύου), μία για το εσωτερικό δίκτυο και μια για το εξωτερικό.
Θέλουμε λοιπόν να κασάρουμε τις ιστοσελίδες που επισκέπτονται οι χρήστες στο εσωτερικό δίκτυο με σκοπό την πιο γρήγορη περιήγηση στο διαδίκτυο.
Βάζουμε τις παρακάτω γραμμές στο αρχείο ρυθμίσεων(αφήνουμε δηλαδή το εσωτερικό interface ακούει στο loopback)
http_port 127.0.0.1:8080
http_port 192.168.1.1:8080

Μετά ορίζουμε το hostname του υπολογιστή καθώς και ένα email για τα errors που τυχών θα εμφανιστούν:
visible_hostname gateway.my.proxyserver
cache_mgr email@email.com Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε την Javascript για να τη δείτε.
Βάζουμε τις παρακάτω γραμμές αν δεν υπάρχουν ήδη στο αρχείο:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Μετά πρέπει να ορίσουμε ποιοί υπολογιστές θα μπορούν να χρεισιμοποιούν τον proxy server.
Αν στο εσωτερικό δίκτυο έχουμε διευθύνσεις 192.168.1.x και θέλουμε όλοι να χρεισιμοποιούν τον proxy server τότε βάζουμε:
# θέτουμε όλο το δίκτυο στο "our_networks", το οποίο θα το χρησιμοποιήσουμε παρακάτω acl our_networks src 192.168.1.0/24 # Όλοι το δίκτυο μπορεί να χρεισιμοποιεί τον proxy server http_access allow our_networks
http_access allow localhost
#Μετά αφαιρούμε την πρόσβαση σε οποιονδήποτε άλλο
http_access deny all

Μετά απο κάθε αλλαγή στο αρχείο ρυθμίσεων πρεπει να κάνουμε restart τον squid server με την ακόλουθη εντολή:
/etc/init.d/squid restart

Παραδείγματα:
Μερική πρόσβαση στον proxy server:
Αν θέλουμε μόνο ορισμένοι υπολογιστές με IP διευθύνσεις 192.168.133.1 192.168.133.2 192.168.133.3 να έχουν πρόσβαση στον proxy server, τότε βάζουμε τα ακόλουθα:
acl our_networks src 192.168.133.1 192.168.133.2 192.168.133.3
http_access allow our_networks

Η χειροκίνητη εισαγωγή 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) μεταβλητά.

Επιστρέφοντας στο proxy server, η διεύθυνση 192.168.133.0/24 θα επιτρέψει την πρόσβαση σε όσους υπολογιστές έχουν διευθύνσεις από 192.168.133.1 έως 192.168.133.255. Αν δώσουμε 10.0.0.0/8, τότε ανοίγουμε το proxy σε ένα πολύ μεγαλύτερο εύρος διευθύνσεων από 10.0.0.1 έως 10.255.255.255.

acl our_networks src 192.168.132.0/24 192.168.133.0/24 192.168.134.10
http_access allow our_networks

Οι γραμμές του παραδείγματος επιτρέπουν την πρόσβαση σε δύο CIDR κλίμακες διευθύνσεων (192.168.132.1-255 και 192.168.133.1-255) καθώς και στην μεμονωμένη IP 192.168.134.10. Μετά από αυτές τις γραμμές βάζουμε τον κανόνα 'deny all' για να απορρίψουμε όλες τις υπόλοιπες διευθύνσεις. Κάπως έτσι μπορούμε να επιτρέψουμε την πρόσβαση σε όσους θέλουμε.

ΕΛΕΓΧΟΣ ΠΡΟΣΒΑΣΗΣ
Mπορούμε να τους απαγορεύσουμε την πρόσβαση στο διαδίκτυο σε μερικούς χρήστες, ή σε όλους τους χρήστες σε συγκεκριμένες ώρες. Αυτό γίνεται μέσω ενός ακόμη κανόνα ACL, του 'time', όπου καθορίζουμε τις ημέρες και τις ώρες απαγόρευσης. Οι ημέρες ορίζονται από ένα λατινικό γράμμα: M για τη Δευτέρα, Τ για την Τρίτη, W για την Τετάρτη, H για την Πέμπτη, F για την Παρασκευή, A για το Σάββατο και S για την Κυριακή. Το γράμμα D είναι μπαλαντέρ και σημαίνει όλες τις καθημερινές (MTWHF).
Μπορούμε να χωρίσουμε τις IP διευθύνσεις σε allow1_computers και allow2_computers, κάπως έτσι:
acl allow1_computers src 192.168.133.3 192.168.133.4 192.168.133.5
acl allow2_computers src 192.168.133.0/24
Στη συνέχεια δίνουμε τους κανόνες:

http_access deny allow1_computers homework_time
http_access allow allow1_computers
http_access allow allow2_computers

Οι δύο τελευταίες γραμμές είναι ευνόητες, αλλά η πρώτη περιλαμβάνει τα allow1_computers και homework_time. Όταν το Squid αποφασίζει αν θα δώσει πρόσβαση ή όχι, δουλεύει με τους κανόνες που εμφανίζονται κατά σειρά στο squid.conf. Στο παράδειγμά μας, θα βρει πρώτα την πρώτη γραμμή και θα απαγορεύσει την πρόσβαση σε όσα μηχανήματα έχουν IP της ομάδας allow1_computers αν η τρέχουσα ημέρα και ώρα συμπεριλαμβάνονται στο homework_time. Εάν όχι, θα συνεχίσει να διαβάζει το αρχείο. Αυτό, λοιπόν, είναι πολύ σημαντικό: το Squid θα αρνηθεί την πρόσβαση μόνο όταν συντρέχουν όλες οι συνθήκες που ορίζουμε. Έτσι αν αν ζητήσει πρόσβαση ένας υπολογιστής με IP που δεν ανήκει στην κλάση allow1_computers ή σε ώρα/ημέρα που δεν καλύπτεται από την homework_time τότε το Squid δεν θα του αρνηθεί πρόσβαση. Η δεύτερη γραμμή επιτρέπει την πρόσβαση σε όλα τα PC με IP που ανήκουν στην allow1_computers ενώ η τρίτη σε όλες τις IP της κλάσης allow2_computers. Είναι σημαντικό να καταλάβουμε ότι παίζει ρόλο η σειρά που εμφανίζονται οι κανόνες στο αρχείο squid.conf. Αν έχουμε πρώτα έναν κανόνα accept all και έπειτα τον 'deny allow1_computers' τότε όλοι θα έχουν πρόσβαση στον proxy ανεξάρτητα της IP τους, γιατί το Squid δεν θα φτάσει ποτέ στον δεύτερο κανόνα.

Mπορούμε να τους απαγορεύσουμε και την λήψη αρχείων από συγκεκριμένου είδους sites. Πιο συγκεκριμένα, μας ενδιαφέρουν τρία πράγματα: sites που γνωρίζουμε, sites που δεν γνωρίζουμε καθώς και είδη αρχείων που μπορεί να είναι επικίνδυνα για τους υπολογιστές τους.

Το πρώτο γίνεται με έναν ακόμα κανόνα ACL, το dstdomain, με το οποίο καθορίζουμε επακριβώς τα URLs που τα παιδιά μας δεν θα μπορούν να επισκέπτονται. Για παράδειγμα:

acl banned_sites dstdomain bbc.co.uk
http_access deny allow1_computers homework_time
http_access deny allow1_computers banned_sites
http_access allow allow1_computers

Η παραπάνω λίστα κανόνων απαγορεύει στην υπολογιστές της κλάση allow1_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 θα απαγορεύεται.

 

Πηγή : Σύλλογος Φίλων Λογισμικού Ανοικτού Κώδικα

 



5
Μέσος Όρος: 5 (2 votes)
Η βαθμολογία σας: Κανένα




    RSS Feeds  |  Δημιουργία Ιστοσελίδας