Squid e autenticazione su Active Directory 2008.07.24 14:58

È giunto il momento di rifare il proxy aziendale - ovviamente Squid - e con l'occasione cambio il metodo di autenticazione appoggiandomi al dominio: una password in meno per gli utenti e controllo più centralizzato. Le condizioni al contorno sono sempre quelle: Debian come guest su VMware ESX così aumentiamo la percentuale di virtualizzazione con tutti i pro (ma anche i contro).

La macchina deve essere in dominio, e consento inoltre l'accesso al Web solo agli utenti appartenenti al gruppo 'web'.

# wbinfo -n web
S-1-5-01-0123456789-012345678-01234567-0123 Domain Group (2)

# apt-get install apache2-utils squid
+--8<--+[ /etc/squid/squid.conf ]+----8<--------8<----------------8<-----------+
#auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
#### tutto su UNA RIGA ####
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
 --require-membership-of=S-1-5-01-0123456789-012345678-01234567-0123
auth_param ntlm children 5
auth_param ntlm keep_alive on
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/htpasswd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

acl password proxy_auth REQUIRED
acl free src 192.168.0.1
#acl our_networks src 192.168.0.0/24 172.16.0.0/16

http_access allow free
http_access allow password
#http_access allow our_networks
http_access deny all
+----------->8---------------->8-------->8----+[ /etc/squid/squid.conf ]+-->8--+

Consiglio di configurare e provare il proxy senza alcun tipo di autenticazione (via le righe ^auth_param e correlate), quindi aggiungere/togliere a piacimento. Ho anche previsto un'autenticazione basic (auth_param basic) e un computer che può uscire libero (acl free).

# htpasswd -c -m /etc/squid/htpasswd user1
# htpasswd -m /etc/squid/htpasswd user2
# chgrp -v proxy /etc/squid/htpasswd
# chmod -v 640 /etc/squid/htpasswd
# chgrp -v proxy /var/run/samba/winbindd_privileged

# /etc/init.d/squid reload

Et voila! Ma non posso fare a meno di controllare l'utilizzo di Squid: i log non sono human-friendly, quindi

# apt-get install sarg webalizer
# cp -v /etc/cron.daily/sarg /etc/cron.hourly/sarg
+--8<--+[ /etc/webalizer/squid.conf ]+----8<--------8<----------------8<-------+
LogFile /var/log/squid/access.log
LogType squid
+------->8---------------->8-------->8----+[ /etc/webalizer/squid.conf ]+-->8--+

+--8<--+[ /etc/cron.hourly/sarg ]+----8<--------8<----------------8<-----------+
/usr/sbin/sarg-reports today
+----------->8---------------->8-------->8----+[ /etc/cron.hourly/sarg ]+-->8--+
pippofante.it by Federico Mion