Squid proxy σε Ubuntu 12.04 LTSP Server

Ένας πολύ καλός τρόπος για να μειώσουμε το bandwith που καταναλώνεται κατά την περιήγηση στο διαδίκτυο, αλλά και να ελέγξουμε την πρόσβαση σε αυτό, είναι η χρήση ενος εξυπηρετητή διαμεσολάβησης – proxy server. Παρακάτω δίνεται ένας αναλυτικός οδηγός εγκατάστασης – ρύθμισης squid3 με κλείδωμα ρυθμίσεων proxy συστήματος – firefox, web και user filtering.

Παρακαλούμε κάντε copy paste τις εντολές και τα αντικείμενα με έντονα γράμματα στο τερματικό ή στα διάφορα αρχεία που ανοίγουν για αποφυγή συντακτικών λαθών….

1. Εγκαθιστούμε το squid3. Ανοίγουμε ένα τερματικό πχ με Ctrl+Alt+t και δίνουμε

sudo apt-get install squid3

2. Στη συνέχεια φτιάχνουμε 3 αρχεία

Το 1ο: /etc/squid3/whitelist_users.acl –> εδώ γράφουμε τα ονόματα των χρηστών που επιτρέπεται ελεύθερη περιήγηση, πχ administrator (ένας χρήστης ανά γραμμή)

sudo gedit /etc/squid3/whitelist_users.acl

Έτσι το αρχείο θα μπορούσε να περιέχει τους χρήστες

root
administrator
teacher
daskalos

Το 2ο:  /etc/squid3/banned_users.acl —> εδώ γράφουμε τα ονόματα των χρηστών που δεν επιτρέπεται καθόλου περιήγηση, πχ a1a01 (ένας χρήστης ανά γραμμή)

sudo gedit /etc/squid3/banned_users.acl

Έτσι το αρχείο θα μπορούσε να περιέχει τους χρήστες

user01
user02
a1a0

Το 3ο: /etc/squid3/banned_domains.acl —> εδώ γράφουμε τα domains που θέλουμε να απαγορεύσουμε τη πρόσβαση με έναν από τους επόμενους τρόπους, πχ facebook ή facebook.com ή .facebook.com.

sudo gedit /etc/squid3/banned_domains.acl

Έτσι το αρχείο θα μπορούσε να περιέχει τα domains

facebook
youtube
.hi5.com
myspace.com

Για να παίζουν τα whitelist_users.acl και banned_users.acl πρέπει να είναι εγκατεστημένη η υπηρεσία ident2.

sudo apt-get install ident2

3. Κατεβάζουε τα αρχεία ERR_SCH-SCRIPTS_BANNED_DOMAINS και ERR_SCH-SCRIPTS_BANNED_USERS (είναι συμπιεσμένα εδώ) και τα αντιγράφουμε στο /usr/share/squid3/errors/el

sudo cp ‘/monopati_pou_to_exoume_apothikeusei/ERR_SCH-SCRIPTS_BANNED_USERS’  /usr/share/squid3/errors/el

και

sudo cp ‘/monopati_pou_to_exoume_apothikeusei/ERR_SCH-SCRIPTS_BANNED_DOMAINS’  /usr/share/squid3/errors/el

για παράδειγμα αν τα έχετε αποθηκεύσει στο φάκελο Λήψεις του χρήστη administrator τότε οι εντολές θα είναι:

sudo cp ‘/home/administrator/Λήψεις/ERR_SCH-SCRIPTS_BANNED_USERS’  /usr/share/squid3/errors/el

και

sudo cp ‘/home/administrator/Λήψεις/ERR_SCH-SCRIPTS_BANNED_DOMAINS’ /usr/share/squid3/errors/el

επειδή αυτά τα αρχεία πρέπει να είναι προσπελάσιμα από το squid σιγουρευτείτε οτι έχουν τα κατάλληλα δικαιώματα

sudo chmod 644 /usr/share/squid3/errors/el/ERR_SCH-SCRIPTS_BANNED*

4. Στη συνέχεια πρέπει να επεξεργαστούμε το squid.conf αφού πάρουμε ένα αντίγραφο του αρχικού

sudo cp /etc/squid3/squid.conf /etc/squid3/squidconf.backup

sudo gedit /etc/squid3/squid.conf

Ενεργοποιούμε την cache αναζητώντας και αποσχολιάζοντας τη γραμμή cache_dir ufs /var/spool/squid3 100 16 256

Το 100 σημαίνει οτι θα χρησιμοποιούνται 100 MBytes για caching αρχείων. Αντικαταστήστε με μια μεγαλύτερη τιμή (πχ 1000, 5000, 15000 δηλ. 1Gbyte, 5Gbytes, 15Gbytes) ανάλογα με το διαθέσιμο χώρο στο δίσκο.

Αναζητούμε και αλλάζουμε τη γραμμή acl localhost src 127.0.0.1/32 ::1 σε acl localhost src 127.0.0.0/8 ::1

Mε αυτό το τρόπο θα μπορούμε να χρησιμοπούμε το όνομα ‘server’ και όχι την ip του ltsp server κατά τη δήλωση του proxy και για thin και για fat, ανεξάρτητα από το αν ο LTSP μας έχει όνομα διάφορο, του hardcoded στο LTSP, server (βολικό για όσους έχουν ltsp server στο laptop τους και πάνε σε περισσότερα από ένα σχολεία, αλλά και για γενικοποίηση των οδηγιών). Προσοχή: Αν το μηχάνημά μας δε λέγεται server πρέπει να προσθέσουμε στο αρχείο /etc/hosts τη γραμμή

server 127.0.2.1

Αναζητούμε τη γραμμή 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 #όπου x, y τα αντίστοιχα νούμερα του υποδικτύου σου
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

Προσοχή να μη ξεχάσουμε να βάλουμε τα νούμερα του υποδικτύου μας στη γραμμή παραπάνω που ορίζεται το υποδίκτυο του σχολείου μας. Για πολλαπλά υποδίκτυα προσθέτουμε και άλλες αντίστοιχες γραμμές ( acl schoolnet) με μόνη αλλαγή την ip του υποδικτύου. Αποθηκεύουμε και επαναφορτώνουμε το squid3

sudo service squid3 force-reload

5. Κλείδωμα ρυθμίσεων proxy συστήματος
Μέθοδος:

sudo apt-get install dconf-tools

Από εδώ και πέρα θα πρέπει να εκτελεστούν κάποιες εντολές για να δημιουργηθούν τα κατάλληλα αρχεία. Ωστόσο, με τη βασική προϋπόθεση ότι έχετε ακολουθήσει τον οδηγό ως εδώ, θα μπορούσατε να κατεβάσετε τα απαραίτητα αρχεία από εδώ. Αποσυμπιέστε το dconf.zip (δεξί κλικ αποσυμπίεση εδώ) και στη συνέχεια δώστε σε τερματικό

sudo cp -r ‘/monopati/poueinai/to/dconf’ /etc

και στη συνέχεια

sudo dconf update

Αν κάνετε το παραπάνω δε χρειάζεται να εκτελέτε τις υπόλοιπες εντολές μέχρι το βήμα 6 αφού θα αντιγραφούν τα απαραίτητα αρχεία με το αναγκαίο περιεχόμενο στο /etc/dconf και δε θα χρειαστεί να τα δημιουργήσετε χειροκίνητα με τις παρακάτω εντολές. Ωστόσο καλό είναι να τις διαβάσετε για να δείτε τι ακριβώς περιέχουν και εν πάση περιπτώση για να πάρετε και μια ιδεά από linux command line !!!

sudo mkdir -p /etc/dconf/profile

sudo nano /etc/dconf/profile/user

Στο κενό αρχείο γράφουμε:

user-db:user
system-db:local

αποθηκεύουμε και κλείνουμε
Στη συνέχεια

sudo mkdir -p /etc/dconf/db/local.d

sudo nano /etc/dconf/db/local.d/00_proxy_locksettings

και στο κενό αρχείο προσθέτουμε

[system/proxy]
mode=’manual’
use-same-proxy=true

[system/proxy/http]
enabled=true
host=’server’
port=3128

[system/proxy/https]
host=’server’
port=3128

[system/proxy/ftp]
host=’server’
port=3128

[system/proxy/socks]
host=’server’
port=3128

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

Στη συνέχεια

sudo mkdir /etc/dconf/db/local.d/locks

sudo nano /etc/dconf/db/local.d/locks/00_proxy_locksettings

και στο κενό αρχείο προσθέτουμε

# prevent changes to system proxy
/system/proxy/mode
/system/proxy/use-same-proxy
/system/proxy/http/enabled
/system/proxy/http/host
/system/proxy/http/port

/system/proxy/https/host
/system/proxy/https/port
/system/proxy/ftp/host
/system/proxy/ftp/port
/system/proxy/socks/host
/system/proxy/socks/port


αποθηκεύουμε, κλείνουμε και στη συνέχεια τρέχουμε

sudo dconf update

Ιδιαίτερη προσοχή στις οδηγίες! Αν δεν εφαρμοστούν σωστά υπάρχει πιθανότητα να μην ξεκινήσει το γραφικό περιβάλλον… αν συμβεί αυτό ctrl-alt-f1, συνδεθείτε με τα διαπιστευτήρια σας και σβήστε το φάκελο /etc/dconf

Προσοχή μη σβήσετε όλο το φάκελο /etc!!! Αν δεν είστε σίγουροι ζητήστε βοήθεια!

sudo rm -r /etc/dconf

και κάντε reboot

sudo reboot

6. Τέλος κλειδώνουμε τις ρυθμίσεις proxy του firefox ως εξής:

Φτιάχνουμε ένα αρχείο με το όνομα mozilla.cfg στο /usr/lib/firefox

sudo gedit /usr/lib/firefox/mozilla.cfg

που περιέχει τα εξής:

//
lockPref(“network.proxy.type”, 5);
// όπου 5 = Χρήση ρυθμίσεων διαμεσολαβητή συστήματος

Το αποθηκεύουμε. Δημιουργούμε ένα αρχείο με το όνομα local-settings.js στο /usr/lib/firefox/defaults/pref

sudo gedit /usr/lib/firefox/defaults/pref/local-settings.js

που περιέχει τα εξής:

pref(“general.config.obscure_value”, 0); // only needed if you do not want to obscure the content with ROT-13
pref(“general.config.filename”, “mozilla.cfg”);

Το αποθηκεύουμε. Κάνουμε restart τον firefox και δοκιμάζουμε να αλλάξουμε τις ρυθμίσεις proxy… Για chrome/chromium δε χρειάζεται κάτι αφού χρησιμοποιούν το εργαλείο ρυθμίσεων proxy του συστήματος οι τιμές του οποίου έχουν κλειδώσει με το dconf παραπάνω.

Για να εφαρμοστούν όλες οι παραπάνω ρυθμίσεις στους LTSP clients κάνουμε δημοσίευση εικονικού δίσκου από τα sch-scripts.

Έτσι αν στο address bar ενός browser το url περιέχει μια από τις λέξεις ή τα domains του banned_domains.acl, το site κόβεται για όλους εκτός από τους χρήστες που υπάρχουν στο αρχείο whitelist_users.acl. Όσοι χρήστες είναι στους banned_user.acl δεν μπορούν να προσπελάσουν καμία ιστοσελίδα.

Επισυνάπτεται και ένα shell script το οποίο αν έχετε ακολουθήσει τις παραπάνω οδηγίες σας διευκολύνει στον χειρισμό των λιστών του squid, παρέχοντας ένα user interface σε τερματικό. Κατεβάστε το συμπιεσμένο από εδώ –> squid3_jobs.sh. Για να το χρησιμοποιήσετε αποσυμπιέστε και δώστε δικαιώματα εκτέλεσης: πχ αν το έχετε αποθηκεύσει στο ‘/home/administrator/Επιφάνεια εργασίας’ τότε σε ένα τερματικό (Ctrl+Alt+t) δώστε:

cd ‘/home/administrator/Επιφάνεια εργασίας’

chmod u+x squid3_jobs.sh

στη συνέχεια διπλό κλικ και εκτέλεση σε τερματικό.

Αφήστε μια απάντηση