Internetmegosztás oktatási intézményben
Csoport alapú tiltólisták alkalmazása proxy szerveren


Tartalom:
1. A  rendszer működésének rövid áttekintése
2. A kiszolgáló telepítése és alapbeállításai
3. Automatikus IP beállítások a klienseken
4. A Squid proxy server
5. A SquidGuard
6. A tiltólisták módosítása
7. Az Internet-használat ellenőrzése

Ez a leírás az Internet megosztás egyik módszerét mutatja be a Squid proxy szerver alkalmazásával. A proxy szerver a kliensek által lekért tartalmat (weblapot) letölti az Internetről, a kliensnek átadja és tárolja. Ismételt oldal-látogatás esetén a második felhasználónak a tartalmat nem az Internetről, hanem a saját tárolójából adja vissza. Oktatási intézményben különösen fontos lehet a proxyval megvalósítható funkciók:
•    korlátozhatjuk vele a nem kívánt internetes címek látogatását
•    korlátozhatjuk az Internet-hozzáférést felhasználói azonosítás vagy IP cím alapján
•    szűrhetünk vele internetes tartalmat
•    felhasználhatjuk statisztika készítésre
•    reklám-jellegű tartalmak kikapcsolásával sávszélességet takaríthatunk meg
•    korlátozhatjuk a kliensek felé nyújtott sávszélességet
A fenti funkciók közül nagyméretű tiltólisták alkalmazását, reklám tartalmak kikapcsolását és Internet-használati statisztikák készítését mutatom be CentOS-6 Linux operációs rendszeren.

1. A  rendszer működésének rövid áttekintése

Az egyszerűbb üzemeltetés érdekében a kiszolgáló a belső hálózatnak DHCP szolgáltatást is biztosít. Automatikusan beállítja a klienseken az IPV4 címeket, átjárót, hálózati maszkot, DNS szerver IP címét és a DNS utótagot is. A bemutatásra kerülő példában ez: suli.local. A kliensek valamelyikén a böngésző programot elindítva, az megpróbál automatikus konfigurációs beállításokat találni, letölteni a wpad.suli.local nevű gépről a wpad.dat fájlt. Tehát a konfigurációs fájl URL-jének a következőnek kell lennie: http://wpad.suli.local/wpad.dat. A kiszolgálón működő
DNS szerver feloldja ezt a gépnevet és a webszerver a kérést kiszolgálja. A wpad.dat fájl tartalma alapján a böngésző megállapítja a proxy szerver IP címét, portszámát és ehhez kapcsolódva eléri az Internetet.
Ha nem akarjuk az automatikus böngésző-beállítást használni, a DNS és a DHCP részt kihagyhatjuk. Ebben az esetben a böngésző(k)ben kézzel kell majd megadni a proxy szerverünk IP címét és portszámát.
A webszerver használata mindenképp ajánlott, hiszen segítségével tiltási üzeneteket és a statisztikákat jelenítünk meg. Használhatjuk az automatikus proxybeállítás URL-t is, a fenti URL-t, vagy (DNS nélkül) IP címet megadva a böngésző beállításainál. Példánkban ez http://192.168.99.1/wpad.dat.
 
A kiszolgáló működését Ubuntu Linux 11.10 alatt futtatott Oracle VM VirtualBox 4.1 program segítségével ellenőriztem. A CentOS-6 Linux telepítésénél két hálózati eszközt választottam, az elsőnél Brigde-elt kártya (eth0), a másodiknál Belső hálózat, intnet beállításokkal. Kliensként Microsoft Windows XP és Ubuntu Linux 11.10-et telepítettem, ezeknél egy hálózati kártyát,
Belső hálózat, intnet beállításokkal határoztam meg (1. ábra). A klienseken tesztelt böngészőprogramok a következők: Mozilla Firefox, Google Chrome és Internet Explorer.
 
VBox
1. ábra (nagyítható)
 
2. A kiszolgáló telepítése és alapbeállításai

 
A CentOS-6 Linux telepítése legegyszerűbben DVD-ről történhet. A www.centos.org oldalon megtaláljuk a tükör szerverek listáját. Töltsük a DVD-képet iso formátumban. A telepítésnél magyar nyelvet is választhatunk. Adjunk nevet a kiszolgálónak, példánkban ez cent6m.suli.local. A Configure Network kapcsolóra kattintva az IPv4 beállításoknál válasszunk Kézi módszert, és adjunk IP címeket a csatolóknak. Az Automatikus csatlakozást is kapcsoljuk be mindkét csatolónál. Példánkban az eth0 csatoló kapcsolódik a routerhez, az eth1 a belső hálózat kapcsolójához. A IP beállítások a következők:
 

Cím: Hálózati maszk Átjáró
DNS kiszolgálók:
eth0 192.168.4.17
24 192.168.4.1 192.168.4.1
eth1 192.168.99.1 24

 
A hálózati beállításokat módosítanunk kell saját hálózatunknak megfelelően.
A partíciók meghatározásánál vegyük figyelembe a kiszolgálónk merevlemezeinek méretét és a szerver egyéb funkcióit. Szerencsés, ha a proxy gyorsítótára külön partícióra, vagy akár külön merevlemzre kerül. E partíció csatolási pontja: /var/spool/squid. Mérete több tíz giga bájt is lehet, példánkban 80 GB. Telepítéskor a Create Custom Layout (egyéni elrendezés létrehozása) lehetőséget választva határozhatunk meg partíciókat. A szoftverösszeállításnál, attól függően, hogy szeretnénk-e grafikus felületet a Basic Server, vagy a Minimal Desktop ajánlott. A bemutatott példában Minimal Desktop szerepel.
A csomagok telepítése után a kiszolgáló újraindul. Ezután hozzuk létre saját felhasználói fiókunkat és állítsuk be a dátum és idő szinkronizálását a hálózaton keresztül.
 
A kiszolgáló hálózati csatolók között csomagtovábbítást nem végez. Fontos, hogy a tanulói hálózat számára címfordítást (NAT) ne alkalmazzunk, mert az megkerülhetővé teszi proxy szervert.
 
A programok telepítése előtt az alapértelmezett tárolókhoz (repository) adjuk az RPMforge tárolót. Indítsuk el a Terminál-t és kérjünk root jogosultságot. Először telepítsük a yum-priorites és az mc csomagokat a következő parancsokkal:

 
[pferi@cent6m ~]# su -
Jelszó:
[root@cent6m etc]# yum install yum-priorities mc
 
Kapcsoljuk ki a SELinux alrendszert. Az /etc/selinux/config fájl SELINUX kezdetű sorát módosítsuk:
 
SELiNUX=disabled
 
Indítsuk újra a kiszolgálót, majd állítsuk be a tárolók proritását. Az /etc/yum.repos.d/CentOS-Base.repo fájlban a tárolókat jelző részeket bővítsük a priority=1 sorral:

[base]
...
priority=1

[updates]
...
priority=1

[extras]
...
priority=1
 
Telepítsük az említett tárolót:
 
[root@cent6m ~]# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
[root@
cent6m ~]# rpm -ivh rpmforge-release-0.5.2-2.el6.rf.i686.rpm

Az /etc/yum.repos.d/rpmforge.repo fájlban az [rpmforge] részt bővítsük a priority=5 sorral és ellenőrizzük, hogy a többi résznél az enabled = 0 sor szerepel:
 

[rpmforge]
priority=5

Frissítsük az operációs rendszert és telepítsük a proxy szervert (squid), a tartalomszűrést megvalósító (squidGuard) csomagokat, a DNS, a DHCP és a webszervert, valamint a tűzfal beállítására szolgáló programot:
 
[root@cent6m ~]# yum update
[root@cent6m ~]# yum install squid squidguard* dnsmasq dhcp httpd system-config-firewall
 
 
3. Automatikus IP beállítások a klienseken

 

Engedélyezzük, hogy a kiszolgálónk néhány szolgáltatása hozzáférhető legyen a hálózat gépeinek. Indítsuk el a tűzfalat: Rendszer/Adminisztráció/Tűzfal. A Megbízható szolgáltatások listájából válasszuk ki a DNS és a WWW(HTTP)-t valamint az Egyéb portoknál adjuk hozzá következőket: 67 udp és 8080 tcp. Alkalmazzuk az új beállításokat.
 
Módosítsuk az /etc/dhcp/dhcpd.conf fájl tartalmát a következőre:
 

authoritative;
subnet 192.168.99.0 netmask 255.255.255.0 {
  range 192.168.99.10 192.168.99.100;
  option domain-name-servers 192.168.99.1;
  option domain-name "suli.local";
  option routers 192.168.99.1;
  option broadcast-address 255.255.255.0;
  default-lease-time 600;
  max-lease-time 7200;
}
 
Ez egy egyszerű DHCP szervert állít be, a range sorban megadott tartományból kapnak IP címeket a kliensek. Az /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample fájlban több minta konfigurációt is találunk a DHCP különböző működésére.
Indítsuk el a DHCP szervert és állítsuk
be az automatikus indulást:
 
[root@cent6m ~]# service dhcpd start
[root@cent6m ~]# chkconfig --levels 235 dhcpd on
 
Egy kliens gépen ellenőrizzük a kiszolgáló működését. A kliensnem range sorban megadott IP tartományból kell címet kapnia. Nem megfelelő működés esetén ellenőrizzük a hálózat eszközeit és vizsgáljuk meg a /var/log/messages fájl utolsó sorait
.
 
Bővítsük az /etc/hosts állományt a következő két sorral:

192.168.99.1    cent6m.suli.local    cent6m
192.168.99.1    wpad.suli.local    wpad
 
Az  DNS szerverként az egyszerű dnsmasq programot alkalmazzuk. Konfigurációs állománya az /etc/dnsmasq.conf. Módosítsuk az állomány két sorát: a strict-order és az interface sorok elől töröljük a # jelet és interface értéke legyen eth1. Az alábbi parancs az állomány aktív sorait mutatja, azokat amelyek nem # jellel kezdődnek és nem üresek.
 

[root@cent6m ~]# cat /etc/dnsmasq.conf | sed '/^#/d; /^ *$/d'
strict-order
interface=eth1
 
Indítsuk el a DNS cache szervert és állítsuk be az automatikus indulást:
 
[root@cent6m ~]# service dnsmasq start
[root@cent6m ~]# chkconfig --levels 235 dnsmasq on
 
Egy kliens gépen ellenőrizzük a kiszolgáló működését. Parancssorba, vagy Linux kliens esetén a terminálba írjuk az nslookup fsf.hu parancsot, amivel megpróbáljuk meghatározni az fsf.hu gép IP címét:  
 
C:\Documents and Settings\tanulo>nslookup fsf.hu
Server: 
cent6m.suli.local
Address:  192.168.99.1

Non-authoritative answer:
Name:    fsf.hu
Address:  195.56.172.143
 
Látjuk, hogy a névfeloldás sikerült, a dnsmasq program a kiszolgálón működik.
Ellenőrizzük, hogy a kiszolgáló hosts állományába megadott gépnévvel elérjük-e a kiszolgálót:
 

C:\Documents and Settings\tanulo>ping wpad.suli.local

wpad.suli.local [192.168.99.1] pingelése 32 bájt méretű adatokkal:

Válasz 192.168.99.1: bájt=32 idő<10 ezredmp. TTL=64
Válasz 192.168.99.1: bájt=32 idő<10 ezredmp. TTL=64
Válasz 192.168.99.1: bájt=32 idő<10 ezredmp. TTL=64
Válasz 192.168.99.1: bájt=32 idő<10 ezredmp. TTL=64

192.168.99.1 ping-statisztikája:
    Csomagok: küldött = 4, fogadott = 4, elveszett = 0 (0% veszteség),
Oda-vissza út ideje közelítőlegesen, milliszekundumban:
    minimum = 0ms, maximum = 0ms, átlag = 0ms

 
Indítsuk el a webszervert és állítsuk be az automatikus indulást:
 
[root@cent6m ~]# service httpd start
[root@cent6m ~]# chkconfig --levels 235 httpd on
 
A klienseken indítsuk el a böngészőprogramot és ellenőrizzük, hogy a kapcsolat beállításainál a Proxybeállítások automatikus felismerése a hálózatban be van állítva (Mozilla Firefox esetén: Beállítások / Haladó / Hálózat / Kapcsolat, 1. ábra). A kiszolgálón figyeljük meg a webszerver log állományának utolsó sorait:
 

[root@cent6m ~]# tail -5 /var/log/httpd/access_log
192.168.99.10 - - [02/Mar/2012:23:48:03 +0100] "GET /wpad.dat HTTP/1.1" 404 287 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Win32; Trident/4.0)"
192.168.99.10 - - [02/Mar/2012:23:48:07 +0100] "GET /wpad.dat HTTP/1.1" 404 276 "-" "Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2"
192.168.99.11 - - [03/Mar/2012:01:31:38 +0100] "GET /wpad.dat HTTP/1.1" 404 276 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"
192.168.99.12 - - [02/Mar/2012:23:49:47 +0100] "GET /wpad.dat HTTP/1.1" 404 276 "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0.2) Gecko/20100101 Firefox/10.0.2"
192.168.99.13 - - [02/Mar/2012:23:55:02 +0100] "GET /wpad.dat HTTP/1.1" 404 276 "-" "Mozilla/5.0 (X11; U; Linux i686; hu-HU; rv:1.9.2.26) Gecko/20120131 CentOS/3.6-1.el5.centos Firefox/3.6.26"
 
A fenti sorokat elemezve láthatjuk, hogy négy kliensen különböző böngészőprogramok voltak elindítva és azok mindegyike megpróbálta letölteni a wpad.dat fájlt a proxy konfigurálásához. Ezt az állományt még nem hoztunk létre, a webszerver a 404-es hibakóddal válaszolt.
 

 
4. A Squid proxy server
 

A Squid proxy szerver konfigurációs állománya az /etc/squid/squid.conf. Az alapértelmezett állományt módosítsuk saját hálózatunknak és kiszolgáló paramétereinek megfelelően. Az acl localnet src kezdetű sor a mi belső hálózatunkat határozza meg. A http_port után a kiszolgáló belső IP címe és a 8080-as portszám álljon. A cache_dir sorban a cache méretét (megabyte-ban) és az abban lévő könyvtárak számát határozzuk meg. Az alapértelmezett érték a következő:
 
cache_dir ufs /var/spool/squid 100 16 256
 
A fenti sor azt mutatja, hogy a cache a /var/spool/squid könyvtárban van, mérete 100 megabyte, itt 16 könyvtárat találunk, mindegyikben 256 alkönyvtárral. A telepítésnél megadott partíció méretétől függően módosítsuk az értékeket. A következő paranccsal:

[root@cent6m ~]# cat /etc/squid/squid.conf | sed '/^#/d; /^ *$/d'
 
jelenítsük meg a squid.conf nem # jellel kezdődő és nem üres sorait. Ezek a következők:
 
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 192.168.99.0/24
acl SSL_ports port 443
acl Safe_ports port 80            # http
acl Safe_ports port 21            # ftp
acl Safe_ports port 443           # https
acl Safe_ports port 70            # gopher
acl Safe_ports port 210           # wais
acl Safe_ports port 1025-65535    # unregistered ports
acl Safe_ports port 280           # http-mgmt
acl Safe_ports port 488           # gss-http
acl Safe_ports port 591           # filemaker
acl Safe_ports port 777           # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 192.168.99.1:8080
hierarchy_stoplist cgi-bin ?
cache_dir ufs /var/spool/squid 70000 32 256
coredump_dir /var/spool/squid
refresh_pattern ^ftp:        1440    20%    10080
refresh_pattern ^gopher:     1440    0%    1440
refresh_pattern -i (/cgi-bin/|\?) 0    0%    0
refresh_pattern .        0    20%    4320
cache_mem 32 MB
maximum_object_size 144 MB

Félkövér formázással a módosított sorokat emeltem ki. Az utolsó sor megadja a maximális fájlméretet, amit tárol a Squid.
A /var/www/html könyvtárba hozzuk létre a
wpad.dat fájlt. Tartalma legyen a következő:
 
function FindProxyForURL(url, host)
{
    if (isPlainHostName(host))
        return "DIRECT";
    if (isInNet(host, "192.168.99.0", "255.255.255.0"))
        return "DIRECT";
    if (isInNet(host, "127.0.0.1", "255.255.255.255"))
        return "DIRECT";
return "PROXY 192.168.99.1:8080";
}

A fenti fájl nem csak a proxy használatára állítja be böngészőt, hanem bizonyos címek esetén (gépnév, saját hálózat gépei, sajátgép) közvetlen kapcsolatot állít be.
Indítsuk el a Squid proxy szervert és állítsuk be az automatikus indulást:
 
[root@cent6m ~]# service squid start
[root@cent6m ~]# chkconfig --levels 235 squid on
 
A klienseken indítsuk el a böngészőprogramot és ellenőrizzük az Internet működését.

 
5. A SquidGuard

 
A SquidGuard egy átirányító és elérést szabályozó kiegészítés a Squid-hez. Szabad szoftver. Használata rugalmas és gyors szűrést tesz lehetővé. Magát a programot és a hozzá tartozó feketelistákat (squidguard-blacklist) már feltelepítettük az RPMForge tárolóból. A program konfigurációs állománya az /etc/squid/squidguar.conf, a tiltólisták pedig a /var/lib/squidguard könyvtárban találhatók. Ezek kategóriákba rendezett Internetes címadatbázisok azokról az oldalakról, amelyek látogatását megtiltjuk a felhasználóknak. Figyeljük meg a könyvtár, majd valamelyik alkönyvtár (esetünkben warez) tartalmát:

[root@cent6m ~]# ls /var/lib/squidguard/
ads    aggressive   drugs   gambling  local  proxy     warez
adult  audio-video  forums  hacking   mail   violence
[root@cent6m ~]# ls /var/lib/squidguard/warez/
domains  domains.db  expressions  urls  urls.db
 
A domains, az urls és az expressions fájlok - szöveges állományok. A SquidGuard a gyorsabb működés érdekében nem ezekkel a szöveges állományokkal dolgozik, hanem a belőlük létrehozott Berkeley DB formátumú adatbázissal. Vizsgáljuk meg a domains és a domains.db fájlok típusát:
 
[root@cent6m ~]# file /var/lib/squidguard/warez/domains
/var/lib/squidguard/warez/domains: ASCII text
[root@cent6m ~]# file /var/lib/squidguard/warez/domains.db
/var/lib/squidguard/warez/domains.db: Berkeley DB (Btree, version 9, native byte-order)
  
A SquidGuard használatba vételéhez bővíteni kell az alábbi két sorral az /etc/squid/squid.conf állományt:
 
redirect_program /usr/bin/squidGuard -c /etc/squid/squidguard.conf
redirect_children 5
 
Készítsünk másolatot az eredeti squidguard.conf állományról:
 
[root@cent6m squid]# cp squidguard.conf squidguard.conf.default
 
és módosítsuk a tartalmát a következőre:
 
dbhome /var/lib/squidguard
logdir /var/log/squidguard
dest ads {
    domainlist        ads/domains
    urllist           ads/urls
    expressionlist    ads/expressions
    redirect http://localhost/images/nulbanner.png
}
dest adult {
    domainlist        adult/domains
    urllist           adult/urls
    expressionlist    adult/expressions
}
dest aggressive {
    domainlist        aggressive/domains
    urllist           aggressive/urls
    expressionlist    aggressive/expressions
}
dest drugs {
    domainlist        drugs/domains
    urllist           drugs/urls
    expressionlist    drugs/expressions
}
dest gambling {
    domainlist        gambling/domains
    urllist           gambling/urls
    expressionlist    gambling/expressions
}
dest hacking {
    domainlist        hacking/domains
    urllist           hacking/urls
    expressionlist    hacking/expressions
}
dest proxy {
    domainlist        proxy/domains
    urllist           proxy/urls
    expressionlist    proxy/expressions
}
dest violence {
    domainlist        violence/domains
    urllist           violence/urls
    expressionlist    violence/expressions
}
dest warez {
    domainlist        warez/domains
    urllist           warez/urls
    expressionlist    warez/expressions
}
acl {
    default {
        pass !ads !adult !aggressive !drugs !gambling !hacking !proxy !violence !warez any
        redirect http://localhost/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u
    }
}

 
Hozzuk létre a /var/www/html/images könyvtárat:
 
[root@cent6m ~]# mkdir /var/www/html/images
 
A nullbanner.png és a blocked.gif képeket mentsük ebbe a könyvtárba. A squidGuard.cgi fájlt a /var/www/cgi-bin könyvtárba másoljuk.
Módosítsuk az állományok jogosultságait. A két képnek mindenki számára olvashatónak, a cgi fájlnak futtathatónak kell lennie:
 
[root@cent6m ~]# chmod +r /var/www/html/images/blocked.gif
[root@
cent6m ~]# chmod +r /var/www/html/images/nulbanner.png
[root@cent6m ~]# chmod +x /var/www/cgi-bin/squidGuard.cgi
 
Ezek a képek helyettesítik a tiltott, jellemzően reklám, tartalmakat (ads csoport), a squidGuard.cgi fájl által generált tartalom pedig akkor jelenik meg, amikor a felhasználó tiltott webtartalmat nyit meg.
Ahhoz, hogy a tiltólisták érvényre jussanak újra kell konfigurálni a Squid-et:
 
[root@cent6m ~]# squid -k reconfigure
 
Ellenőrizzük a SquidGuard működését a gyakorlatban. Azoknak a weboldalaknak, melyek nem szerepelnek a tiltólistákban a klienseken elérhetőeknek kell lenniük. Keressünk olyan oldalt, melyikre vonatkozik a tiltás. Például a warez kategóriában megtaláljuk a moviz.net címet:

sqg tiltas
2. ábra (nagyítható)

 
A SquidGuard nem engedi a hozzáférést, átirányít az általunk felmásolt squidGuard.cgi állományra. Ennek segítségével láthatjuk a saját IP címünk, milyen internetes címet próbáltunk megnyitni, a pontos időt és dátumot a szerveren és azt is, hogy a tiltott oldal milyen csoportba tartozik.
Az ads csoportra más szabály vonatkozik. Ebből a csoportból megnyitott weboldalt a SquidGuard lecseréli a nullbaner.png képre.
 
nb
3. ábra
 
Ezzel a megoldással a weboldalak részeiként megjelenő reklámtartalmakat szinte észrevétlenül cserélhetjük le, gyorsítva ezzel az oldal megjelenését. A blocked.gif képet squidGuard.cgi jeleníti meg olyan képek helyett, melyek forrása tiltott webhely.
A
nullbaner.png és blocked.gif képeket más képekkel helyettesíthetjük, és squidGuard.cgi állomány tartalmát is módosíthatjuk igényeinknek megfelelően.
 
 
6. A tiltólisták módosítása
 
Az alapértelmezett tiltólistákat módosíthatjuk vagy használhatunk más listákat is.
A SquidGuard weboldalán (http://www.squidguard.org) több javasolt forrást is találunk a Blacklists menüpont alatt. Ezek között vannak ingyenesek és olyanok is, amelyek használatáért fizetni kell.
Módosításaink csak akkor jutnak érvényre, ha újrageneráljuk az adott db adatbázist és újrakonfiguráljuk a Squid-et is.
 
Példaként hozunk létre egy ejnye nevű csoportot, a domain szöveges állománnyal, abban egyetlen nemjooldal.hu sorral:
 
[root@centos5 ~]# mkdir /var/lib/squidguard/ejnye
[root@centos5 ~]# echo "nemjooldal.hu" > /var/lib/squidguard/ejnye/domains
[root@cent6m ~]# chown -R squid:squid /var/lib/squidguard
 
A harmadik parancs az állományok tulajdonosát módosítja. 
Módosítsuk a squidguard.conf állományt. Hozzuk létre az új cél osztályt az alábbi sorokkal:
 
dest ejnye {
    domainlist    ejnye/domains
}

  
A szabályt is bővítsük az új taggal:
 
pass !ads !adult !ejnye !aggressive !drugs !gambling !hacking !proxy !violence !warez any
 
Hozzuk létre a /root könyvtárban a rebuild.sc állományt az alábbi tartalommal:
 

#!/bin/bash
#/usr/bin/squidguard -C all
/usr/bin/squidguard -C /var/lib/squidguard/ejnye/domains
chown -R squid:squid /var/lib/squidguard
squid -k reconfigure
 
Ez a szkript az adatbázisok újraépítésére szolgál. A második sora minden adatbázist újraépít. Mivel ez (különösen gyengébb teljesítményű gépen) több percig is eltarthat a harmadik sor csak egy kategória újraépítésére mutat példát. A szkript futtatása előtt töröljük a # jelet a második sor előtt, vagy módosítsuk a kategóriát a harmadikban. A két utolsó sor megváltoztatja az állományok tulajdonosát és újrakonfigurálja a Squid-et.
Adjunk futási jogot és futtassuk a szkriptet:
 
[root@cent6m ~]# chmod u+x /root/rebuild.sc
[root@
cent6m ~]# /root/rebuild.sc
Processing file and database /var/lib/squidguard/ejnye/domains
    [==================================================] 100 % done
   
Látjuk, hogy csak az ejnye csoport adatbázis épült újra. Próbáljuk a kliensen megnyitni a nemjooldal.hu címet:
 
n j
4. ábra
 
 
7. Az Internet-használat ellenőrzése

A Squid Internet-használati naplóállománya a /var/log/squid/access.log. Valós időben is megfigyelhetjük a forgalmat a tail -f paranccsal:
 
[root@cent6m ~]# tail -f /var/log/squid/access.log
1331154229.583    626 192.168.99.12 TCP_MISS/200 12317 GET http://fsf.hu/ - DIRECT/195.56.172.143 text/html
1331154230.391    299 192.168.99.12 TCP_MISS/200 2989 GET http://fsf.hu/kapcsolatfelvetel/ - DIRECT/195.56.172.143 text/html

 
A fenti sorokban látjuk, hogy a 192.168.99.12 IP címről az fsf.hu oldalt nyitották meg. A mezők szóközzel vannak elválasztva, az első oszlop dátum és idő, csak szabvány UNIX formátumban, vagyis az első szám az 1970 óta eltelt másodperceket mutatja. A log állomány képernyőre történő kiíratását a Ctrl+C billentyűkombinációval szakíthatjuk meg. Az alábbi program segítségével átalakíthatjuk a UNIX formátumú időértéket hagyományosra. Hozzuk létre a /root könyvtárban az alábbi állományt squidlog.sc néven:
 
#!/usr/bin/perl -p
s/^\d+\.\d+/localtime $&/e;

 
Módosítsuk a jogosultságot és adjuk ki a parancsot ismételten, kimenetét a programba irányítva:
 
[root@cent6m ~]# chmod u+x squidlog.sc
[root@cent6m ~]# tail -f /var/log/squid/access.log | /root/squidlog.sc
Wed Mar  7 23:12:47 2012     86 192.168.99.12 TCP_MISS/304 413 GET http://fsf.hu/wp-includes/images/rss.png - DIRECT/195.56.172.143 -

 
Részletes napi, heti és havi internet-használati statisztikákat a Sarg (Squid Analysis Report Generator) nevű programmal készíthetünk. Telepítéséhez adjuk ki a következő parancsot:
 
[root@cent6m ~]# yum install sarg
No package sarg available.

 
E sorok írásakor a sarg csomag még nincs a tárolóban. Telepítsük a testing tárolóból:
 
[root@cent6m ~]# yum --enablerepo=rpmforge-testing install sarg
Installing:
 sarg        i686        2.3.1-1.el6.rft          rpmforge-testing        512 k
Installed:
  sarg.i686 0:2.3.1-1.el6.rft
Complete!

 
Módosítsuk a Sarg konfigurációs állományát, az /etc/sarg/sarg.conf fajlt, hogy az aktív sorai (a nem üres es nem # jellel kezdődők) a következők legyenek:
 
access_log /var/log/squid/access.log
graph_font /usr/share/fonts/dejavu/DejaVuSans.ttf
output_dir /var/www/sarg/ONE-SHOT
resolve_ip yes
index yes
mail_utility mail
show_successful_message no

 
Ellenőrizhetjük a módosított konfigurációs állomány "hasznos" sorait a következő paranccsal: cat /etc/sarg/sarg.conf | sed '/^#/d; /^ *$/d'
A Sarg minden reggel elkészíti az előző nap internet-használati statisztikáit. Ezeket a http://localhost/sarg/ címen tekinthetjük meg a kiszolgálón (ha van grafikus felület a kiszolgálón). A háloóat valamelyik gépéről, csak akkor érhetjük el, ha a gép IP címével
(esetünkben ez 192.168.99.12) bővítjük az /etc/httpd/conf.d/sarg állományt. Az Allow from sorok után adjuk meg a munkaállomás IP címét: Allow from 192.168.99.12
Konfigurájluk újra webszervert:
 
[root@cent6m ~]# service httpd reload
A(z) httpd újratöltése:

 
A Sarg statisztikái ezután elérhetőek a 192.168.99.12 gépről:
 
sarg
5. ábra

Mivel a SARG által összeállított jelentés bizalmas információkat tartalmaz, semmiképp se engedélyezzük hozzáférést bármilyen IP-ről. Az oldal tartalmát mi magunk is kezeljük ennek megfelelően. A felhasználókat figyelmeztessük, hogy az Internet használatát a rendszer naplózza.