Kattive - LinuxTrent

Transcript

Kattive - LinuxTrent
Proxy
Che cosa fa un proxy ?
In informatica e telecomunicazioni un proxy è un programma
che si interpone tra un client ed un server facendo da tramite
o interfaccia tra i due host, ovvero inoltrando le richieste e le
risposte dall'uno all'altro.
Il client si collega al proxy invece che al server, e gli invia
delle richieste. Il proxy a sua volta si collega al server e
inoltra la richiesta del client, riceve la risposta e la inoltra al
client (Wikipedia).
Proxy - come funziona
FORWARD PROXY
OPEN PROXY
REVERSE PROXY
Proxy, alcuni server proxy.
http://en.wikipedia.org/wiki/Proxy_server#Proxy-Servers
● Apache HTTP Server
● Apache Traffic Server
● DeleGate
● lighttpd
● Nginx
● Polipo
● Privoxy - privacy enhancing proxy.
● Squid cache
.....
.....
SQUID
Configuriamo un nuovo server dedicando una specifica
partizione del disco alla cache di squid.
La partizione verrà assegnata a /var/spool/squid
SQUID
Installiamo squid:
# apt-get install squid3
E apportiamo le opportune modifiche al file di configurazione
# nano /etc/squid/squid.conf
http://www.squid-cache.org/Doc/config/
SQUID
Questo il manuale che utilizzeremo per capire il significato
dei vari parametri presenti nel file squid.conf
http://www.squid-cache.org/Versions/v3/3.1/cfgman/
SQUID - alcuni parametri importanti
# porta su cui restare in ascolto
http_port 8080
# percorso in cui conservare la cache
cache_dir ufs /var/spool/squid3/ 16384 16 256
(imposto l'80% dello spazio disponibile su disco
16384MB calcolato su un disco da 20GB)
# definiamo la nostra prima acl
acl retelocale src 192.168.0.0/24
# e gli assegniamo i relativi permessi
http_access allow retelocale
SQUID - lato client
Installiamo su di un client "elinks" per effettuare dei test di
funzionamento:
# apt-get install elinks
e configuriamo il proxy per elinks:
# cat /etc/elinks/elinks.conf
set protocol.http.proxy.host = "192.168.0.250:8080"
e proviamo a navigare:
# elinks http://www.google.com
DANSGUARDIAN
Dansguardian è un sistema di content filtering che consente di
bloccare la navigazione su specifici siti in base a specifiche
regole configurabili.
Come funziona ?
DANSQUARDIAN --> SQUID
Installiamo dansguardian:
# apt-get install dansguardian
Configuriamo il file /etc/dansguardian/dansguardian.conf
#UNCONFIGURED - Please remove this.....
language = 'italian'
filterport = 8080
# faccio in modo che dansguardian fornisca l'IP del client a
squid tramite l'header della richiesta http
forwardedfor = on
Avviamo il servizio dansguardian
# /etc/init.d/dansguardian start
DANSQUARDIAN --> SQUID
Configurzione minimale di /etc/squid3/squid.conf
# da togliere dopo i test !
debug_options ALL,2
# porta in ascolto
http_port 3128
# definisco le acl
acl localhost src 127.0.0.1
acl comune src 192.168.0.0/24
# attibuisco i permessi per le acl
http_access allow comune
DANSQUARDIAN --> SQUID
# gestisco l'header inviato da dansguardian per # poter estrarre l'ip del client
follow_x_forwarded_for allow localhost
# rimuovo l'header ricevuto da dansguardian per # presentarmi ai server web pubblici con l'indirizzo ip corretto
request_header_access X-Forwarded-For deny all
# informo il server web remoto che il mio ip privato
# che è nell'header è *.*.*.*
header_access Via deny all
DANSQUARDIAN --> SQUID
Per maggiori informazioni relative agli header del
protocollo http:
http://en.wikipedia.
org/wiki/List_of_HTTP_header_fields#Requests
Lato client posso verificare che tutto sia a posto nel
modo seguente:
# elinks http://checkip.dyndns.com
DANSQUARDIAN lato client
Facciamo delle prove di navigazione dal nostro client:
# elinks http://www.google.com
# elinks http://sitochedovrebbeesserebloccato!!!
Lato server squid verifichiamo cosa accade:
# tail -f /var/log/squid3/access.log
DANSELFDUTY
E' un pacchetto incluso in KATTIVE
http://www.kattive.it/index.php?
option=com_content&view=category&layout=blog&id=37&It
emid=66&lang=it
Consente all'utente finale di "assumersi la responsabilità"
della navigazione su specifici siti senza la necessità di un
intervento da parte dell'amministratore di sistema.
DANSELFDUTY
Come funziona ?
KATTIVE - installazione
● scarichiamo kattive dal sito ufficiale
● scompattiamo il file .tgz
● copiamo il contenuto della cartella scompattata in
/opt/kattive
● modifichiamo il contenuto di /etc/apt/sources.list
deb http://debian.fastweb.it/debian/ stable main
deb http://security.debian.org/ stable/updates main
deb http://debian.fastweb.it/debian/ stable-updates main
deb http://archive.debian.org/debian-archive/debian etch main contrib
non-fre
● installiamo i prerequisiti
# /opt/kattive/doc/utility/debian-preinstall.sh
● installiamo kattive
# /opt/kattive/doc/utility/kattivesetup.pl KATTIVE - installazione
● modifichiamo a manina alcuni permessi (la versione 4.6 di
kattive conterrà già tale modifica)
# chown root.www-data /opt/kattive/cgi-bin -R
# chmod +r /opt/kattive/etc -R
oppure utilizziamo la versione aggiornata disponibile a
questo indirizzo
http://www.kattive.it/index.php?
option=com_phocadownload&view=category&id=3%
3Avarie&Itemid=68&lang=it
KATTIVE - Danselfduty
Per far funzionare tutto il "giochino" bisogna:
● gestire "autenticazione" degli utenti da dansguardian,
squid e kattive (mysql, ldap, AD...)
● configurare dansguardian perchè inoltri le pagine
bloccate a danselfduty
● configurare il server su cui è installato kattive perchè
possa accedere alla cartella contenente i file di
dansguardian (nel caso kattive e dansguardian NON siano
stati installati sullo stesso server)
● assegnare gli utenti ai relativi gruppi dansguardian
Autenticazione tramite LDAP
Cosa serve per gestire l'autenticazione e raccogliere le
informazioni necessarie (utenti e gruppi) utilizzando LDAP ?
● creare un utente in AD che ci consenta di interrogare il
database LDAP
● configurare SQUID perchè richieda l'autenticazione
● in base al gruppo di appartenenza dell'utente connesso
verranno applicate le relative regole di dansguardian
Autenticazione tramite LDAP
Verifica funzionamento connessione ldap:
# apt-get install ldap-utils
# cat /etc/ldap/ldap.conf
BASE dc=levicopen,dc=locale
URI ldap://srvad.levicoopen.locale
# /usr/lib/squid3/squid_ldap_auth -R -v 3 -H ldap:
//SERVERLDAP -D "cn=kattive,cn=Users,dc=levicoopen,
dc=locale" -w "PASSWORD" -a never -b "dc=levicoopen,
dc=locale" -f "(&(sAMAccountName=administrator)
(objectClass=Person))"
DANSGUARDIAN - filtri utente
Abilito i relativi plugin per l'autenticazione in
/etc/dansguardian/dansguardian.conf.
authplugin = '/etc/dansguardian/authplugins/proxy-basic.
conf'
DANSGUARDIAN - filtri utente
Imposto il numero di gruppi e dove si trova il file che contiene
l'associazione utente/gruppo, per impostare i relativi filtri in
base al gruppo di appartenenza
filtergroups = 3
filtergroupslist = '/etc/dansguardian/lists/filtergroupslist'
# cat /etc/dansguardian/lists/filtergroupslist
utente1=filter3
utente2=filter3
utente3=filter2
utente4=filter2
NB. filter1 NON viene mai utilizzato in quanto è il default !
SQUID - autenticazione utenti
Abilitiamo l'autenticazione degli utenti tramite LDAP
modificando il file /etc/squid/squid.conf
auth_param basic program /usr/lib/squid3/squid_ldap_auth -R -v 3 -H ldap:
//192.168.0.1 -D "cn=kattive,cn=Users,dc=levicoopen,dc=locale" -w
"kattive2012" -a never -b "dc=levicoopen,dc=locale" -f "(&
(sAMAccountName=%s)(objectClass=Person))"
external_acl_type ldap_group children=10 %LOGIN
/usr/lib/squid3/squid_ldap_group -v 3 -R -H ldap://192.168.0.1 -D
"cn=kattive,cn=Users,dc=levicoopen,dc=locale" -w "Password2012" -a never -b
"dc=levicoopen,dc=locale" -f "(&(objectclass=person)(sAMAccountName=%v)
(memberof=cn=%a,ou=OU-Gruppi,dc=levicoopen,dc=locale))"
auth_param basic children 15
auth_param basic realm Autenticazione per navigazione verso Internet
Dansguardian -> Danselfduty
# cat /etc/dansguardian/dansguardian.conf
reportinglevel = 2
loglevel = 1
accessdeniedaddress = 'http://srvgate.levicoopen.
locale/danselfduty.cgi'
in questo modo eventuali pagine bloccate vengono dirottate
direttamente a danselduty che le gestirà di conseguenza.
NB. è importante "informare" il browser che srvgate.
levicoopen.locale NON dovrà essere "proxato".
Danselfduty -> Dansguardian
nel caso in cui danselfduty e dansguardian siano stati
installati su due server separati, procedere nel modo
seguente:
NB. tutte queste operazioni vanno fatte sul server Kattive
# apt-get install sshfs
# ssh-keygen
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@srvsquid
# mkdir /etc/dansguardian
in /etc/rc.local inserire la seguente riga:
sshfs -o allow_other root@srvsquid:/etc/dansguardian
/etc/dansguardian/
Danselfduty -> Dansguardian
in /opt/kattive/etc/general.conf cambiare il comando
dansguardian -g
in
ssh srvsquid dansguardian -g
e
dansguardian_filters_file => "/etc/dansguardian/filters.
txt",
in
dansguardian_filters_file => "/opt/kattive/cache/filters.
txt",
Danselfduty -> Dansguardian
creiamo il file filters.txt nel posto giusto
# cp -p /opt/kattive/doc/examples/dansguardian/filters.txt
/opt/kattive/cache
e modifichiamolo in base ai gruppi AD utilizzati
es.
internet:filter1:dansguardianf1:/etc/squid/skype.txt:1:1
k_segreteria:filter2:dansguardianf2:/etc/squid/skype.txt:1:1
con la seguente sintassi:
GruppoAD:filtrodansguardian:filefiltrodansguardian:skype.txt:
permessoletturascrittura:abilitodisabilitopreview
Danselfduty -> Dansguardian
● popoliamo l'elenco degli utenti per consentire a
Dansguardian di associare i relativi filtri
/opt/kattive/bin/dansguardianfromLDAP.pl LEVICOOPEN.
LOCALE
e verifichiamo il contenuto dei file
/etc/dansguardian/lists/kattivefiltergroupslist
/etc/dansguardian/lists/filtergroupslist
● copiamo il file /opt/kattive/doc/examples/cron.
daily/updatedg in /etc/cron.daily/updatedg e
modifichiamolo ad hoc