sch-scripts/squid-advanced

Ρύθμιση squid

1. Εισαγωγή

Το squid είναι μια εφαρμογή διαμεσολάβησης δικτύου (web proxy). Αυτό που κάνει είναι να αποθηκεύει τις σελίδες που προσπελαύνουν οι πελάτες στον τοπικό εξυπηρετητή και αν στη συνέχεια ζητηθούν από άλλον (ή και τον ίδιο) πελάτη να τις παρέχει ο τοπικός εξυπηρετητής. Με αυτόν τον τρόπο μειώνεται η κίνηση δεδομένων από και προς το δίκτυο και η περιήγηση γίνεται πιο γρήγορη. Επίσης μπορεί να λειτουργήσει και σαν ελεγκτής της πρόσβασης στο διαδίκτυο. Να απαγορεύει δηλαδή την πρόσβαση σε ορισμένα sites ή να απαγορεύει την πρόσβαση σε ορισμένους χρήστες. Οι τρόποι που μπορεί να ρυθμιστεί το squid και οι πολιτικές που μπορεί να εφαρμόσει είναι πάρα πολλοί, στη συνέχεια παραθέτουμε οδηγίες για την εφαρμογή της ακόλουθης πολιτικής:

  • Τοπική αποθήκευση των σελίδων για πιο γρήγορη πλοήγηση
  • Σε κάποιους χρήστες επιτρέπεται ελεύθερα η πρόσβαση στο διαδίκτυο
  • Για τους υπόλοιπους χρήστες απαγορεύεται η πρόσβαση σε συγκεκριμένα sites
  • Σε κάποιους χρήστες απαγορεύεται εντελώς η πρόσβαση στο διαδίκτυο

2. Γενική περιγραφή

Δημιουργούμε 3 λίστες

  • whitelist_users.acl με τους χρήστες που θα έχουν ελεύθερη πρόσβαση σε όλα τα domains
  • banned_domains.acl με τα domains που θα αποκλείονται (π.χ. facebook, hi5)
  • banned_users.acl με τους χρήστες που τους έχει απαγορευτεί η πρόσβαση

Η λίστες αυτές θα οριστούν με τέτοιο τρόπο ώστε να υπερισχύει αυτή που είναι πιο πάνω. (πχ. αν κάποιος/α είναι στη whitelist_users και στη banned_users τότε έχει ελεύθερη πρόσβαση στο δίκτυο. Αν κάποιος/α είναι στη whitelist_users και προσπαθήσει να ανοίξει ένα site που είναι στη banned_domains τότε θα μπορεί να ανοίξει το site κανονικά)

Στη συνέχεια ρυθμίζουμε το squid ώστε να υλοποιεί την παραπάνω πολιτική βασισμένο στο περιεχόμενο των λιστών

3. Η διαδικασία βήμα βήμα

Όλες οι αναφερόμενες ενέργειες γίνονται στον εξυπηρετητή.

  • Εγκατάσταση του squid

sudo apt-get install squid3 
  • Στο φάκελο /etc/squid3 δημιουργήστε 3 αρχεία. Ένα για κάθε λίστα που περιγράψαμε πιο πάνω. Το κάθε αρχείο περιέχει μόνο τα ονόματα των χρηστών ή των domains που ανήκουν σε αυτήν τη λίστα. Δίνουμε παραδείγματα των αρχείων αυτών.

whitelist_users.acl (οι χρήστες που θα έχουν ελεύθερη πρόσβαση - ένας ανά γραμμή)

lab-admin
teacher
user1

banned_domains.acl (τα domains που θα απαγορεύονται - ένα ανά γραμμή) μπορείτε να βάλετε και τμήμα του domain

facebook
.hi5.com
video.google.com

banned_users.acl (οι χρήστες που δεν θα έχουν καθόλου πρόσβαση στο διαδίκτυο - ένας ανά γραμμή)

user3
giannis

Τα αρχεία αυτά είναι οι html σελίδες που θα εμφανίζονται στους χρήστες όταν προσπαθήσουν να προσπελάσουν μία σελίδα στην οποία δεν έχουν πρόσβαση. Μπορείτε να τα αλλάξετε ελεύθερα ώστε να ταιριάζουν στο πνεύμα και την αισθητική σας.

  • Στο αρχείο /etc/squid3/squid.conf κάτω από το # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS βάζετε (άλλαξε και αποσχολιάστε το υπο-δίκτυο):

        #SCH-SCRIPTS begin
        error_directory /usr/share/squid3/errors/el   
#       acl schoolnet src 10.x.y.0/24
        acl banned_domains url_regex -i "/etc/squid3/banned_domains.acl"
        acl banned_users ident "/etc/squid3/banned_users.acl"
        acl whitelist_users ident "/etc/squid3/whitelist_users.acl"
        deny_info ERR_SCH-SCRIPTS_BANNED_DOMAINS banned_domains
        deny_info ERR_SCH-SCRIPTS_BANNED_USERS banned_users
        http_access allow whitelist_users        
        http_access deny banned_users
        http_access deny banned_domains
        http_access allow localhost
        http_access allow schoolnet
        http_access deny all
        #SCH-SCRIPTS end

  • επαναφορτώνετε τις ρυθμίσεις

    sudo invoke-rc.d squid3 force-reload
    Αυτό πρέπει να γίνεται κάθε φορά που αλλάζει κάποιο από τα αρχεία ρυθμίσεων
  • Δηλώστε τον proxy στους clients
  • Αν έχετε fat clients πρέπει να δηλώσετε τον proxy στον εικονικό δίσκο

    Από το περιβάλλον sch-scripts πηγαίνετε: Εξυπηρετητής --> Εικονικός δίσκος --> Άνοιγμα κονσόλας και στην κονσόλα που ανοίγει δίνετε τις εντολές (χωρίς sudo):

gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set '/system/proxy/mode' 'manual'
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type bool --set '/system/http_proxy/use_http_proxy' true
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set '/system/http_proxy/host' 'server'
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type int --set '/system/http_proxy/port' 3128

Το όνομα server στην 3η εντολή είναι το όνομα που χρησιμοποιούν οι fat clients για να αναγνωρίζουν τον ltsp server και είναι hardcoded στον κώδικα του ltsp. Oπότε αυτό και μόνο αυτό (ή η ip του) πρέπει να χρησιμοποιηθεί ανεξάρτητα με το διαφορετικό όνομα που πιθανώς να έχετε δώσει στον ltsp server σας.

Προτείνεται σε περίπτωση που ο ltsp server αλλάζει ip - για παράδειγμα φορητός ltsp server που πηγαίνει σε πολλαπλά εργαστήρια - να χρησιμοποιείται στην εν λόγω εντολή η δήλωση 'server'.

  • Για thin clients δηλώστε τον proxy στον server:

sudo gconftool-2 --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set '/system/proxy/mode' 'manual'
sudo gconftool-2 --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type bool --set '/system/http_proxy/use_http_proxy' true
sudo gconftool-2 --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set '/system/http_proxy/host' 'localhost'
sudo gconftool-2 --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type int --set '/system/http_proxy/port' 3128

Αν κάνετε αλλαγές στα αρχεία ρυθμίσεων μην ξεχάσετε να επαναφορτώσετε τις ρυθμίσεις στο squid

  • sudo invoke-rc.d squid3 force-reload

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

  • να δηλωθεί ο διαμεσολαβητής στις ρυθμίσεις του συστήματος ή της εφαρμογής
  • να εγκατασταθεί το πρόγραμμα ident2 στους υπολογιστές. (χρειάζεται για την ανά χρήστη ρύθμιση της πρόσβασης) Για συστήματα debian και ubuntu apt-get install ident2

Πιο λεπτομερείς οδηγίες για την εγκατάσταση του squid:

http://ts.sch.gr/ts/downloadsDetails.do?action=downloadsDetails&itemId=351990

Πληροφορίες για το πως λειτουργεί ο διαμεσολαβητής squid:

http://wiki.squid-cache.org/FrontPage

sch-scripts/squid-advanced (last edited 26-02-2011 15:53:21 by ?apapakl)