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