Wenn man die Listen auf mehreren Schulservern nutzen möchte, bietet sich die Verteilung über den rsync-daemon an. Die Aktivierung ist recht einfach, wenn man die Datei /etc/defailt/rsync anpasst:
root@app01:/etc# egrep -v "^$|^#" /etc/default/rsync
RSYNC_ENABLE=true
RSYNC_OPTS=''
RSYNC_NICE=''
RSYNC_IONICE='-c3'
Und dann in die neu zu erstellende Datei /etc/rsyncd.conf die zu exportierenden Ordner mit Zugriffsbeschränkungen auf die entspr. Subnetze einträgt:
root@app01:/etc# egrep -v "^$|^#" /etc/rsyncd.conf
gid = users
read only = true
use chroot = true
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log
[shallalist]
path = /srv/rsyncd/shallalist
comment = Shallalist
hosts allow = 10.0.0.0/8 192.168.0.0/16
[fai]
path = /srv/rsyncd/fai
comment = FAI-ISOs
hosts allow = 10.0.0.0/8 192.168.0.0/16
Nun können die Schulserver des Nachts in einem cron-job ihre Updates bandbreitenschonend ziehen. Das Script dafür könnte so ausschauen:
#!/bin/bash
#
# Shallalisten per rsyncd aktualisieren.
# Thorsten Strusch <thorsten@ksan.de>
###########################################################################
KSAN_RSYNC_SERVER="app01.edu.DOMAIN.TLD"
SHALLABASE="/var/lib/squidguard/db/shallalist"
UCSBASE="/var/lib/ucs-school-webproxy/ksan"
PATH="${PATH}:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
mkdir -p $SHALLABASE $UCSBASE
rsync -qaz $KSAN_RSYNC_SERVER::shallalist /var/lib/squidguard/db/shallalist
chown -R proxy. /var/lib/squidguard/
# Grundschutz
cp -p ${SHALLABASE}/aggressive/domains ${UCSBASE}/aggressive-d
cp -p ${SHALLABASE}/aggressive/urls ${UCSBASE}/aggressive-u
cp -p ${SHALLABASE}/anonvpn/domains ${UCSBASE}/anonvpn-d
cp -p ${SHALLABASE}/anonvpn/urls ${UCSBASE}/anonvpn-u
cp -p ${SHALLABASE}/costtraps/domains ${UCSBASE}/costtraps-d
cp -p ${SHALLABASE}/costtraps/urls ${UCSBASE}/costtraps-u
cp -p ${SHALLABASE}/gamble/domains ${UCSBASE}/gamble-d
cp -p ${SHALLABASE}/gamble/urls ${UCSBASE}/gamble-u
cp -p ${SHALLABASE}/porn/domains ${UCSBASE}/porn-d
cp -p ${SHALLABASE}/porn/urls ${UCSBASE}/porn-u
cp -p ${SHALLABASE}/redirector/domains ${UCSBASE}/redirector-d
cp -p ${SHALLABASE}/redirector/urls ${UCSBASE}/redirector-u
cp -p ${SHALLABASE}/sex/lingerie/domains ${UCSBASE}/sex-lingerie-d
cp -p ${SHALLABASE}/sex/lingerie/urls ${UCSBASE}/sex-lingerie-u
cp -p ${SHALLABASE}/spyware/domains ${UCSBASE}/spyware-d
cp -p ${SHALLABASE}/spyware/urls ${UCSBASE}/spyware-u
cp -p ${SHALLABASE}/violence/domains ${UCSBASE}/violence-d
cp -p ${SHALLABASE}/violence/urls ${UCSBASE}/violence-u
cp -p ${SHALLABASE}/warez/domains ${UCSBASE}/warez-d
cp -p ${SHALLABASE}/warez/urls ${UCSBASE}/warez-u
cp -p ${SHALLABASE}/weapons/domains ${UCSBASE}/weapons-d
cp -p ${SHALLABASE}/weapons/urls ${UCSBASE}/weapons-u
# Weitere Listen im Ordner ${UCSBASE}, die auf -u oder -d enden, werden
# nun eingebunden - das ist der „hook” für lokale Anpassungen.
#update-squidguard > /dev/null
# domain und url basierte Blacklisten inkl. lokaler Listen aktivieren:
ucr set proxy/filter/global/blacklists/domains="$(for url in /var/lib/ucs-school-webproxy/ksan/*-d; do echo -n "ksan/$(basename $url) "; done)"
ucr set proxy/filter/global/blacklists/urls="$(for url in /var/lib/ucs-school-webproxy/ksan/*-u; do echo -n "ksan/$(basename $url) "; done)"