Politica di gestione dell'accesso ad internet
Questa è la guida per la configurazione del server con le seguenti politiche di accesso ad internet:
- Utenti non autenticati non escono
- Utenti autenticati escono solo se sono nei gruppi internet, internetflat o serale
- L'accesso alla rete Internet è consentito da lunedì a venerdì dalle 7.00 alle 22.00 ed il sabato dalle 7.00 alle 14.00 per il gruppo internet, mentre per il gruppo serale l'orario è limitato dalle 18.00 alle 22.00. Il gruppo internetflat non ha limitazioni di orario.
- Tutte le attività svolte vengono registrate in appositi log files.
- La navigazione su Internet viene svolta in modalità protetta (filtro sui contenuti)
File di configurazione di squid
Riportiamo un file di esempio funzionante, commenteremo poi alcune sezioni:
hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY cache_mem 128 MB maximum_object_size 204800 KB maximum_object_size_in_memory 32 KB cache_dir ufs /var/spool/squid 1000 16 256 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 563 # https, snews acl SSL_ports port 873 # rsync acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports ##### CONTROLLO SUL BROWSER ##### # controllo sul browser # non facciamo uscire il browser internet explorer per problematiche di sicurezza (come suggerito # dal Security Task Force) # abilitiamo il log degli user agent useragent_log /var/log/squid/useragent_log acl noexplorer browser MSIE # blocco di explorer indipendemente da utente,gruppo, orario etc. http_access deny noexplorer # pagina personalizzata di errore. Il file deve esistere nella directory # /usr/share/squid/errors/English/ altrimenti squid non parte. Allegato # alla pagina un esempio per questo file. deny_info ERR_NO_INTERNET_EXPLORER noexplorer ##### FINE CONTROLLO SUL BROWSER ##### auth_param basic program /usr/lib/squid/ldap_auth -b ou=Users,dc=fuss,dc=local -h localhost -v 3 # definizione ACL per il gruppo 'internet' external_acl_type gruppointernet %LOGIN /usr/lib/squid/squid_unix_group -g internet acl acl_internet external gruppointernet # definizione ACL per il gruppo 'internetflat' external_acl_type gruppointernetflat %LOGIN /usr/lib/squid/squid_unix_group -g internetflat acl acl_internetflat external gruppointernetflat # definizione ACL per gruppo 'serale' external_acl_type grupposerale %LOGIN /usr/lib/squid/squid_unix_group -g serale acl acl_serale external grupposerale # richiesta della password acl password proxy_auth REQUIRED # orari di accesso. acl orariogenerico time M T W H F 7:00-22:00 A 7:00-14:00 acl orarioserale time M T W H F 18:00-22:00 A 13:00-18:00 acl orariodirigente time M T W H F 8:00-14:00 # acl per singoli utenti, in questo caso 'renata' e 'stefano' acl dirigente proxy_auth renata stefano http_access allow dirigente orariodirigente # verifica con le acl del gruppo 'serale' con autenticazione e orario per il serale http_access allow password acl_serale orarioserale localhost # verifica con le acl del gruppo 'internet' assieme ad autenticazione e orario http_access allow password acl_internet orariogenerico localhost # idem come sopra, ma il gruppo 'internetflat' non ha limitazioni di orario http_access allow password acl_internetflat localhost # nessun altro puo' passare http_access deny all http_reply_access allow all icp_access allow all visible_hostname <NOME SERVER>.<DOMINIO> httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on coredump_dir /var/spool/squid extension_methods REPORT MERGE MKACTIVITY CHECKOUT
IMPORTANTE: sostituire <DOMINIO> con il nome del dominio della scuola. Se non lo sapete o non lo ricordate lo potete trovare scritto in diversi file di configurazione, per esempio in /etc/resolv.conf
Vediamo in che modo viene implementata la policy che avevamo definito all'inizio:
- Utenti non autenticati non escono
Questa regola viene implementata da
auth_param basic program /usr/lib/squid/ldap_auth -b ou=Users,dc=<DOMINIO>,dc=local -h localhost -v 3 acl password proxy_auth REQUIRED
ATTENZIONE: se gli username contengono lettere maiuscole l'autenticazione non funziona (vedi #190)
- Utenti autenticati escono solo se sono nel gruppo Internet
Questa regola viene implementata da
external_acl_type unix_group %LOGIN /usr/lib/squid/squid_unix_group -g <NOME GRUPPO CHE ESCE SU INTERNET> acl internet external unix_group
- L'accesso alla rete Internet è consentito da lunedì a venerdì dalle 7.00 alle 22.00 ed il sabato dalle 7.00 alle 14.00
Questa regola viene implementata da
acl orario time M T W H F 7:00-22:00 A 7:00-14:00
NOTA: da tenere presente se si desiderano fare degli aggiornamenti notturni attraverso cron
Come vedete nei tre casi precedenti abbiamo definito un'acl: è una mera definizione e non provoca alcuna azione. Per passare all'azione e utilizzare le acl che abbiamo definito dovremmo usare
http_access allow internet password orario localhost
che tradotto in italiano dice: regola di accesso: permetti l'uso del proxy alle richieste che soddisfano le acl "internet" "password" "orario" e "localhost"
Come agire per riconfigurare squid
- Utilizzando l'utente root modificare il file /etc/squid/squid.conf prendendo come riferimento l'esempio portato sopra, possiamo addirittura cancellare il file che troviamo nel server e sostituirlo con il nostro esempio, a patto che ci ricordiamo di modificare le parti indicate (il dominio e il nome del gruppo)
- Riavviare squid
/etc/init.d/squid restart
- Adesso per concludere il lavoro in modo pulito diamo un alias al server, in questo modo con una sola how-to copriamo tutte le scuole.
Il primo passo è fermare bind:
/etc/init.d/bind9 stop
- Apriamo con un editor il file di database del DNS:
vi /var/cache/bind/db.local
- Incrementiamo il seriale di 1 e aggiungiamo la seguente riga in fondo:
proxy CNAME <NOME DEL SERVER>
NOTA: solitamente il nome è server, lo vediamo comuue indicato come record A nel file che stiamo modificando
- Stop del server DHCP
/etc/init.d/dhcp3-server stop
- Eliminare il journal di BIND, eseguendo:
rm /var/cache/bind/*.jnl
- Riavviare il serer BIND:
/etc/init.d/bind9 start
- Riavviare il server DHCP:
/etc/init.d/dhcp3-server start
- Ultimo passaggio e' disabilitare nscd sul server.
update-rc.d -f nscd remove ; /etc/init.d/nscd stop
- In alternativa possiamo ridurre la cache del servizio nscd sul server, editando il file /etc/nscd.conf per rispecchiare le direttive dello specchietto riportato qua sotto
enable-cache group yes
positive-time-to-live group 60
negative-time-to-live group 60
suggested-size group 211
check-files group yes
NOTA: l'utilità di nscd sul server è molto limitata, è quindi preferibile disabilitarlo
Come cambiare la lingua
Possiamo cambiare la lingua dei vari messaggi di errore che squid presenta agli utenti. Per esempio per utilizzare la lingua italiana è sufficiente aggiungere
error_directory /usr/share/squid/errors/Italian
nel file di configurazione. Le lingue supportate corrispondono alle directory presenti in /usr/share/squid/errors/
Verifiche
E' importante eseguire tutte le verifiche indicate per essere sicuri che il proxy funzioni veramente
- provare a navigare con un utente autorizzato (=inserito nel gruppo internet) indicando correttamente username e password;
- provare a navigare con un utente autorizzato indicando correttamente username ma sbagliando la password;
- provare a navigare con un utente non autorizzato (=non inserito nel gruppo internet) indicando correttamente username e password;
- provare a navigare con un utente autorizzato utilizzando le sue credenziali corrette, poi provare a toglierlo dal gruppo internet e verificare se il proxy lo blocca subito;
FTP
Per abilitare il traffico FTP e' necessario permettere il traffico di questo servizio attraverso il firewall. Vedi patch allegata alla pagina.
Troubleshooting
TODO: da inserire i comandi per fare troubleshooting
Attachments
-
patch.firewall
(2.0 KB) - added by cgabriel
7 years ago.
Patch fuss-server firewall per FTP
-
ERR_NO_INTERNET_EXPLORER
(0.8 KB) - added by cgabriel
7 years ago.
Pagina di errore di esempio per il controllo sul browser MSIE. Da copiare in /usr/share/squid/errors/English/
