Supponiamo che nella vostra rete venga utilizzato Squid come proxy, sul quale è stata abilitata l’autenticazione NTLM. In questo modo, mediante Active Direcetory ed ai Domain Controller di casa Microsoft, sarà possibile fare in modo che, in base ai gruppi di appartenenza, i vari utenti della LAN possano visualizzare soltanto alcune tipologie di siti.
Però, occorre precisare che Squid, di per sè, non è in grado di gestire alcun tipo di content filtering, ma per fare ciò è necessario utilizzare alcuni add-on, quali DansGuardian o squidGuard.
Saranno proprio questi ultimi, mediante delle query ldap dirette al Domain Controller, a suddividere l’utenza in base ai siti che può visitare.
Nel caso in cui il primo Domain Controller di riferimento non sia più raggiungibile, si potrebbe operare direttamente sul file hosts, posizionato nella directory /etc, in modo da modificare il contenuto della entry relativa all’hostname del DC (ad esempio ldap.vostrodominio.org), associandolo all’indirizzo IP dell’altro Domain Controller.
Il seguente scrip serve proprio a mettere in pratica quanto appena detto:
#!/bin/bash DC1=192.168.1.1 DC2=192.168.1.2 destinatario=<vostroindirizzo>@<vistrodominio.org> logfile=/var/log/ping.log count_1=0 count_2=0 tmp=/var/log/tmp.log var=`cat $tmp` while [ $count_1 -lt 2 ] do echo "Pinging DC1..." if ping -c 1 $DC1 then if grep -q "$DC2" "/etc/hosts" then /bin/sed -i 's/192.168.1.2/192.168.1.1/g' /etc/hosts echo "0" > $tmp exit 0 else exit 0 fi else let count_1=count_1+1 if [ $count_1 -eq 1 ] then echo "$(date) Primary Domain Controller Unreachable, trying again..." >> $logfile else echo "$(date) Primary Domain Controller Unreachable, trying to switch over DC2..." >> $logfile if [ "$var" = "0" ] then echo "$(date) Primary Domain Controller Unreachable, trying to switch over DC2." | mail -iv -s "Alert: DC1 unreachable" $destinatario; echo "1" > $tmp fi fi fi done if [ $count_1 -eq 2 ] then while [ $count_2 -lt 2 ] do echo "Pinging DC2..." if ping -c 1 $DC2 then /bin/sed -i 's/192.168.1.1/192.168.1.2/g' /etc/hosts exit 0 else let count_2=count_2+1 if [ $count_2 -eq 1 ] then echo "$(date) Secondary Domain Controller Unreachable, trying again..." >> $logfile else echo "$(date) Unable To Contact Any Domain Controller" >> $logfile if [ "$var" = "1" ] then echo "$(date) Unable To Contact Any Domain Controller." | mail -iv -s "Alert: DC1 and DC2 unreachable" $destinatario; echo "2" > $tmp fi fi fi done fi exit 0
Rendiamo eseguibile lo scrip appena creato:
nightfly@nightbox:~$ sudo chmod +x ping.sh
Creiamo infine una entry per crontab, schedulando l’esecuzione di tale scrip ogni minuto:
* * * * * root ping.sh > /dev/null 2>&1
Ovviamente, nel caso in cui abbiate bisogno di alcuni chiarimenti sul codice, non esitate a contattarmi.
A presto.