Αποστολέας Θέμα: Φιλτράρισμα σελίδων απο thin - fat client - server  (Αναγνώστηκε 8342 φορές)

tallis

  • Βετεράνος
  • ****
  • Μηνύματα: 79
Φιλτράρισμα σελίδων απο thin - fat client - server
« στις: 01 Φεβ 2011, 05:44:47 μμ »
Υπάρχει η δυνατότητα να φιλτράρω τις σελίδες που δίνει ο proxy (ενδεχομένως squid  + dansguardian) χρησιμοποιώντας διαφορετικά policies για τον κάθε χρήστη; π.χ. οι καθηγητές να μπορούν να μπαίνουν σε κάποιες σελίδες που οι μαθητές δεν επιτρέπετε να μπουν .. ;
Απόστολος Γιόκας
ΠΕ20 - ΕΠΑΛ Ορεστιάδας

apapakL

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 365
    • ΕΛ/ΛΑΚ και εκπαίδευση
Απ: Φιλτράρισμα σελίδων απο thin - fat client - server
« Απάντηση #1 στις: 01 Φεβ 2011, 09:12:30 μμ »
Η δυνατότητα υπάρχει χρησιμοποιώντας squid3. Χρησιμοποιώ αυτή τη μέθοδο εδώ και αρκετό καιρό σε δυο ltsp εργαστήρια (είμαι σε δυο σχολεία).

Κώδικας: [Επιλογή]
sudo apt-get install squid3
στη συνέχεια φτιάξε 3 αρχεία

/etc/squid3/whitelist_users.acl --> εδώ βάζεις τα ονόματα των χρηστών που επιτρέπεται ελεύθερη περιήγηση, πχ teacher (έναν χρήστη ανά γραμμή)

Κώδικας: [Επιλογή]
teacher
daskalos
#user01

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

Κώδικας: [Επιλογή]
a1a01
a1a02
#a1a03

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

Κώδικας: [Επιλογή]
facebook
youtube
.hi5.com
myspace.com

 Αν στο address bar ενός browser το url περιέχει μια από τις παραπάνω λέξεις, το site κόβεται για όλους εκτός από τους whitelist users.

Σε αυτά τα αρχεία μπορείς να σχολιάσεις με το σύμβολο # στην αρχή της γραμμής

για να φτιάξεις τα αρχεία για παράδειγμα το /etc/squid3/whitelist_users.acl δώσε σε ένα τερματικό
Κώδικας: [Επιλογή]
gksu gedit /etc/squid3/whitelist_users.acl
στη συνέχεια κατέβασε τα αρχεία ERR_SCH-SCRIPTS_BANNED_DOMAINS --> (http://wiki.ubuntu-gr.org/sch-scripts/squid?action=AttachFile&do=get&target=ERR_SCH-SCRIPTS_BANNED_DOMAINS) και ERR_SCH-SCRIPTS_BANNED_USERS --> (http://wiki.ubuntu-gr.org/sch-scripts/squid?action=AttachFile&do=get&target=ERR_SCH-SCRIPTS_BANNED_USERS)

αντέγραψέ τα στο /usr/share/squid3/errors/el

στη συνέχεια επεξεργάσου το αρχείο /etc/squid3/squid.conf

Κώδικας: [Επιλογή]
gksu gedit  /etc/squid3/squid.conf
πήγαινε στη γραμμή 641 (με ctrl+i και γράφεις το νούμερο της γραμμής).

Κάτω από τη γραμμή

Κώδικας: [Επιλογή]
# 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

Μετά επαναφορτώνουμε το squid3
 
Κώδικας: [Επιλογή]
sudo service squid3 force-reload
Για να παίζουν τα whitelists και banned users στους fat clients πρέπει να είναι εγκατεστημένη η υπηρεσία ident2 στον εικονικό δίσκο. Αν χρησιμοποιείς τα sch-scripts άνοιξε μια κονσόλα στον εικονικό δίσκο και έλεγξέ το.

Κώδικας: [Επιλογή]
apt-get install ident2
Λογικά θα σου πει ότι το χει.
Επειδή υπάρχει ένα bug στο ltsp του Ubuntu και δεν έχει γίνει σωστά το registration της ident2 ώστε να ξεκινάει με την εκκίνηση των fat clients κάνε το εξής (στην κονσόλα του εικονικού δίσκου)

Κώδικας: [Επιλογή]
update-rc.d -f openbsd-inetd remove
Κώδικας: [Επιλογή]
update-rc.d openbsd-inetd defaults 20
Στη συνέχεια και ενώ είσαι ακόμα στην κονσόλα του εικονικού δίσκου των fat clients εκτέλεσε τα παρακάτω έτσι ώστε να γίνει υποχρεωτική η χρήση του proxy

Κώδικας: [Επιλογή]
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
Το κλειδί '/system/http_proxy/host' το ορίζουμε σαν 'server' γιατί οι fat αλλά και οι thin ξέρουν τον ltsp εξυπηρετητή με το συγκεκριμένο όνομα (το 'server' είναι hardcoded στον κώδικα του ltsp) ανεξαρτήτως ονόματος που μπορεί να έχεις δώσει στον ltsp εξυπηρετητή. θα μπορούσες να βάλεις και την ip του εξυπηρετητή αλλά σε περίπτωση που ο εξυπηρετητής αλλάζει ip (πχ συνάδελφος που αλλάζει σχολεία με ltsp εξυπηρετητή το προσωπικό του laptop) ή έχει πολλαπλές κάρτες δικτύου με διαφορετικές ip (π.χ. για να λειτουργεί σε περισσότερα από ένα υποδίκτυα) θα είχες πρόβλημα.

Αν θέλεις κλειδώνεις τις ρυθμίσεις του firefox για όλους τους χρήστες έτσι ώστε να χρησιμοποιούν της ρυθμίσεις proxy του συστήματος χωρίς να έχει ο χρήστης τη δυνατότητα να την αλλάξει... Ούτε ο admin του συστήματος θα μπορεί να την αλλάξει  ;D αλλά δεν πειράζει γιατί θα είναι στους whitelist_users.

Για να το κάνεις αυτό δημιουργείς το αρχείο /etc/firefox/pref/users.js

Κώδικας: [Επιλογή]
gedit /etc/firefox/pref/users.js
γράφεις τα παρακάτω και αποθηκεύεις (κλειδώνει και δυο τρεις άλλες ρυθμίσεις...)

Κώδικας: [Επιλογή]
try {
///////////////////////
// Καρτέλα «Βασικές» //
///////////////////////

// «Στην εκκίνηση του Firefox:»
//   0 = «Προβολή μιας κενής σελίδας»
//  *1 = «Προβολή της αρχικής μου σελίδας»
//   3 = «Προβολή των παραθύρων και των καρτελών που υπήρχαν την τελευταία φορά»
lockPref("browser.startup.page", 1);
// «Τοποθεσία:»
lockPref("browser.startup.homepage", "www.google.gr");

/////////////////////////////////////////////
// Καρτέλα «Για προχωρημένους» -> «Δίκτυο» //
/////////////////////////////////////////////

// «Ρυθμίστε τον τρόπο με τον οποίο ο Firefox θα συνδέεται στο διαδίκτυο» -> «Ρυθμίσεις...»
// «Ρύθμιση διαμεσολαβητών για την πρόσβαση στο διαδίκτυο»
//  0 = «( ) Χωρίς διαμεσολαβητή»
//  4 = «( ) Αυτόματος εντοπισμός ρυθμίσεων διαμεσολαβητή για αυτό το δίκτυο»
//  5 = «(*) Χρήση ρυθμίσεων διαμεσολαβητή συστήματος»
//  1 = «( ) Χειροκίνητη ρύθμιση διαμεσολαβητή»
//  2 = «( ) URL αυτόματης ρύθμισης διαμεσολαβητή:»
lockPref("network.proxy.type", 5);
// Να μη βγάζει την μπάρα "Know your rights"
lockPref("xxx.legal.rights.seen", "0.0");
// Να μη βγάζει το παράθυρο με τις νέες επεκτάσεις που προστέθηκαν
lockPref("extensions.update.notifyUser", false);

}
catch(e) {
  displayError("lockedPref", e);
}


αφού τελειώσεις όλα αυτά βγαίνεις από την κονσόλα του εικονικού δίσκου

Κώδικας: [Επιλογή]
exit
και κάνεις συμπίεση εικονικού δίσκου από τα sch-scripts

Έπειτα κάνεις το ίδιο για τους thin clients. Εκτελείς στο κανονικό τερματικό του 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
Το κλειδί '/system/http_proxy/host' το ορίζουμε σαν 'localhost' για να καλύπτει όλες τις περιπτώσεις των ανεξαρτήτως ονόματος που μπορεί να έχεις δώσει στον ltsp εξυπηρετητή. θα μπορούσες να βάλεις και την ip του εξυπηρετητή αλλά σε περίπτωση που ο εξυπηρετητής αλλάζει ip (πχ συνάδελφος που αλλάζει σχολεία με ltsp εξυπηρετητή το προσωπικό του laptop) ή έχει πολλαπλές κάρτες δικτύου με διαφορετικές ip (π.χ. για να λειτουργεί σε περισσότερα από ένα υποδίκτυα) θα είχες πρόβλημα.

Προτείνεται για τους fat 'server' και για τους thin 'localhost' για να μην έχεις πρόβλημα με πιθανή αλλαγή ip του ltsp εξυπηρετητή ή όνομα ltsp-εξυπηρετητή διάφορο του server  πχ. περίπτωση συναδέλφου που πάει σε δυο σχολεία και  ltsp εξυπηρετητή το προσωπικό του laptop το οποίο πιθανώς να μην ονομάζεται 'server'.

Θα μπορούσε κανείς να ορίσει τη τιμή σε 'server' και για τους thin clients. Σε αυτή τη περίπτωση και αν o ltsp-εξυπηρετητής δε λέγεται 'server', για να βγαίνει και o ίδιος μέσω του proxy θα πρέπει να δηλωθεί στο /etc/hosts η τιμή

Κώδικας: [Επιλογή]
127.0.2.1 server
Edit 18-03-2011: Επίσης θα πρέπει να αλλαχτεί στο squid.conf το εξής:

Κώδικας: [Επιλογή]
acl localhost src 127.0.0.1/32
με

Κώδικας: [Επιλογή]
acl localhost src 127.0.0.0/8
Αν θέλεις κλειδώνεις τις ρυθμίσεις του firefox για όλους τους χρήστες έτσι ώστε να χρησιμοποιούν της ρυθμίσεις proxy του συστήματος χωρίς να έχει ο χρήστης τη δυνατότητα να την αλλάξει (με τον ίδιο τρόπο όπως παραπάνω αλλά εκτός εικονικού δίσκου)... Ούτε ο admin του συστήματος θα μπορεί να την αλλάξει  ;D αλλά δεν πειράζει γιατί θα είναι στους whitelist_users.

O chrome τις χρησιμοποιεί ούτως ή άλλος

Κάθε φορά που κάνεις αλλάγές στα αρχεία ρυθμίσεων του squid (squid.conf, whitelist_users.acl κτλ.) να επαναφορτώνεις τις ρυθμίσεις:

Κώδικας: [Επιλογή]
sudo service squid3 force-reload
Ελπίζω να βοήθησα

Υ.Γ: πηγή για τη ρύθμιση του squid3 http://wiki.ubuntu-gr.org/sch-scripts/squid-advanced
« Τελευταία τροποποίηση: 18 Μάρ 2011, 01:42:33 πμ από apapakl »

tallis

  • Βετεράνος
  • ****
  • Μηνύματα: 79
Απ: Φιλτράρισμα σελίδων απο thin - fat client - server
« Απάντηση #2 στις: 01 Φεβ 2011, 09:49:20 μμ »
ευχαριστώ, θα το δοκιμάσω αύριο...
Απόστολος Γιόκας
ΠΕ20 - ΕΠΑΛ Ορεστιάδας

apapakL

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 365
    • ΕΛ/ΛΑΚ και εκπαίδευση
Απ: Φιλτράρισμα σελίδων απο thin - fat client - server
« Απάντηση #3 στις: 02 Φεβ 2011, 01:36:56 πμ »
Επισυνάπτω και ένα scriptάκι το οποίο διευκολύνει την επεξεργασία των αρχείων whitelist, banned_users, banned_domains και squid.conf.
Κάθε φορά που επεξεργάζεστε κάποιο από τα παραπάνω αρχεία χρησιμοποιώντας το script, μόλις το κλείσετε (το αποθηκεύσετε ή δεν τ' αποθηκεύσετε) εκτελείται και η εντολή επαναφόρτωσης ρυθμίσεων του squid  ;). Κάθε μετατροπή - βελτίωση - επέκταση ευπρόσδεκτη. 

Υ.Γ. Μην ξεχάσετε να το κάνετε πρώτα εκτελέσιμο

apanagio

  • ΟΔΕ
  • *
  • Μηνύματα: 163
Απ: Φιλτράρισμα σελίδων απο thin - fat client - server
« Απάντηση #4 στις: 02 Φεβ 2011, 05:34:53 μμ »
Υπάρχει και το script για "αυτόματη" εγκατάσταση:
https://alkisg.mysch.gr/steki/index.php?topic=3383.0

@apapakl:
Αν έχεις χρόνο μπορείς να γράψεις τις ρυθμίσεις του firefox στο wiki;
Επίσης ξέρεις αν η λύση που προτείνεις χαλάει με ενδεχόμενη αναβάθμιση του firefox;

apapakL

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 365
    • ΕΛ/ΛΑΚ και εκπαίδευση
Απ: Φιλτράρισμα σελίδων απο thin - fat client - server
« Απάντηση #5 στις: 02 Φεβ 2011, 09:31:07 μμ »
Δε νομίζω εφ' όσον το αρχείο /etc/firefox/pref/users.js δεν υπάρχει και το δημιουργείς εσύ... Κάτι που δεν αναφέρθηκε είναι ότι για να κόψουμε και τις https συνδέσεις είναι να κάνουμε υποχρεωτική την χρήση proxy και για το ssl. Απλά για ευκολία δηλώνουμε ότι ο proxy πρέπει να είναι ίδιος για όλα τα πρωτόκολλα. Μπορεί να γίνει μέσω του επεξεργαστή ρυθμίσεων:

για τους fat clients από τα sch-scripts ανοίγουμε κονσόλα στον εικονικό δίσκο και δίνουμε:

Κώδικας: [Επιλογή]
gconf-editor
πάμε Αρχείο ---> Νέο υποχρεωτικό παράθυρο. Στη συνέχεια πάμε στο κλειδί /system/http_proxy. Κάνουμε δεξί κλικ στο δεξί τμήμα του παραθύρου και πατάμε Νέο κλειδί. Δίνουμε Όνομα:use_same_proxy, Τύπος: Λογικό (Boolean), Τιμή: Αληθές

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

Το ίδιο κάνουμε και για τους thin clients. Σε κανονικό τερματικό δίνουμε

Κώδικας: [Επιλογή]
sudo gconf-editor
και ακολουθούμε τις παραπάνω οδηγίες.

Σας επισυνάπτω σχετικές εικόνες για το πως είναι τα σχετικά κλειδιά στον εικονικό μου δίσκο (fat clients)
Στους thin-clients (στο server δηλαδή) όπου server  πρέπει να έχει localhost

apapakL

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 365
    • ΕΛ/ΛΑΚ και εκπαίδευση
Απ: Φιλτράρισμα σελίδων απο thin - fat client - server
« Απάντηση #6 στις: 02 Φεβ 2011, 10:57:22 μμ »
Παράθεση
Αν έχεις χρόνο μπορείς να γράψεις τις ρυθμίσεις του firefox στο wiki;

 Ναι θα τις γράψω αυριο μεθαύριο...

tallis

  • Βετεράνος
  • ****
  • Μηνύματα: 79
Απ: Φιλτράρισμα σελίδων απο thin - fat client - server
« Απάντηση #7 στις: 05 Φεβ 2011, 06:22:52 μμ »
Τελικά το υλοποίησα με squid + dansguardian , υποστηρίζει και ident οπότε μπορείς να κάνεις πολύ ωραία φίλτρα για κάθε χρήστη.

Το
gedit /etc/firefox/pref/users.js

με το οποίο κλειδώνεις τον proxy στον firefox λειτουργεί πάρα πολύ ωραία.

Δυστυχώς όμως οι υπόλοιπες οδηγείες δεν κλειδώνουν και το chromium, απλά βάζουν τον proxy σαν default.
Απόστολος Γιόκας
ΠΕ20 - ΕΠΑΛ Ορεστιάδας

apapakL

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 365
    • ΕΛ/ΛΑΚ και εκπαίδευση
Απ: Φιλτράρισμα σελίδων απο thin - fat client - server
« Απάντηση #8 στις: 05 Φεβ 2011, 10:02:40 μμ »
Δυστυχώς όμως οι υπόλοιπες οδηγείες δεν κλειδώνουν και το chromium, απλά βάζουν τον proxy σαν default.
Ναι αλλά ο chromium, αν δεν κάνω λάθος, δεν έχει δικές του ρυθμίσεις proxy χρησιμοποιεί αυτές του συστήματος. Οπότε αν κλειδώσεις αυτή κλειδώνεις και τις ρυθμίσεις του chromium. Μπορεί ο χρήστης να τις προσπελάσει, να φαίνεται ότι μπορεί να τις αλλάξει αλλά στο τέλος δεν θα γίνει εκ νέου ρύθμιση... 

tallis

  • Βετεράνος
  • ****
  • Μηνύματα: 79
Απ: Φιλτράρισμα σελίδων απο thin - fat client - server
« Απάντηση #9 στις: 05 Φεβ 2011, 10:35:43 μμ »
apapaki ... Έχεις δίκιο, δεν το είχα ελέγξει.
Απόστολος Γιόκας
ΠΕ20 - ΕΠΑΛ Ορεστιάδας

tallis

  • Βετεράνος
  • ****
  • Μηνύματα: 79
Απ: Φιλτράρισμα σελίδων απο thin - fat client - server
« Απάντηση #10 στις: 08 Φεβ 2011, 12:20:47 μμ »
Στους FAT clients δεν λειτουργεί σωστά η αναγνώριση χρηστών μέσου ident, δεν αναγνωρίζει καθόλου τον χρήστη, παραθέτω τις γραμμές απο το logfile στις δύο πρώτες περιπτώσεις λειτουργεί σωστά, στην τελευταία όχι.

2011.2.5   17:14:48   10.20.25.7(epal-server.local)   apostolos   -   GET   0   text/html   -   0

2011.2.5   17:36:46   10.20.25.7(epal-server.local)   dokimos1   students   GET   0   -   -   0

2011.2.8   11:26:14   192.168.0.197   -   -   GET   1207   text/html   -   0
ltsp197.local teachers -


, υπάρχει κανένας τρόπος να το λύσω αυτό;
Απόστολος Γιόκας
ΠΕ20 - ΕΠΑΛ Ορεστιάδας

apanagio

  • ΟΔΕ
  • *
  • Μηνύματα: 163
Απ: Φιλτράρισμα σελίδων απο thin - fat client - server
« Απάντηση #11 στις: 08 Φεβ 2011, 08:35:20 μμ »
Δες αυτό το thread.

https://alkisg.mysch.gr/steki/index.php?topic=3499.msg35844#msg35844
μάλλον είναι γνωστό bug

apapakL

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 365
    • ΕΛ/ΛΑΚ και εκπαίδευση
Απ: Φιλτράρισμα σελίδων απο thin - fat client - server
« Απάντηση #12 στις: 08 Φεβ 2011, 09:04:45 μμ »
Κώδικας: [Επιλογή]
update-rc.d -f openbsd-inetd remove
update-rc.d openbsd-inetd defaults 20
Το αναφέρω και στην αρχική μου απάντηση...

tallis

  • Βετεράνος
  • ****
  • Μηνύματα: 79
Απ: Φιλτράρισμα σελίδων απο thin - fat client - server
« Απάντηση #13 στις: 09 Φεβ 2011, 10:47:24 πμ »
Λειτούργησε κανονικά....
Απόστολος Γιόκας
ΠΕ20 - ΕΠΑΛ Ορεστιάδας

tallis

  • Βετεράνος
  • ****
  • Μηνύματα: 79
Απ: Φιλτράρισμα σελίδων απο thin - fat client - server
« Απάντηση #14 στις: 09 Φεβ 2011, 03:25:29 μμ »
Το πρόβλημα με το ident λύθηκε.

Καθώς όμως ο server εξυπηρετεί διαφορετικά δίκτυα ... ( το 10.x.y.z στο eth1 και το 192.168.0.χ στο eth2) έχω το εξής πρόβλημα

βάζοντας το

sudo gconftool-2 --config-source xml:readwrite: etc gconf gconf.xml.mandatory --type string --set ' system http_proxy host' 'epal-server'

στους FAT κανείς δεν έχει πρόσβαση στον proxy του server
(οταν κάνω ping epal-server μου απαντάει το 127.0.1.1)

όταν το αλλάζω σε

sudo gconftool-2 --config-source xml:readwrite: etc gconf gconf.xml.mandatory --type string --set ' system http_proxy host' '10.x.y.7'

(που είναι η ip του server)

συνδέονται στον proxy οι FAT που βρίσκονται στο eth1

καμία ιδέα;

παρατήρηση ... οι thin λειτουργούν παντού κανονικά με host = "epal-server"
Απόστολος Γιόκας
ΠΕ20 - ΕΠΑΛ Ορεστιάδας