squid & squidguard
- belangrijke opmerking
De opzet van deze configuratie is verschillend van die in http://linux800.be/services/iptables . Dit is historisch gegroeid.
Indien u verder opbouwt aan uw bestaande configuratie van http://linux800.be/services/iptables gelieve dan de addressering uit deze oefeningenreeks in het binnen-netwerk als192.168.2xy/24
te behouden.
Indien u begint van scratch, kunt u gewoon de adressering van deze webpagina gebruiken.
- opbouw testomgeving
In virtualbox bouwen we een internal-network 172.16/16 met als naam FWnet.
In dit FW-net zitten,
een squid/firewall, iptbls-fw, met aan de binnenkant IP4-address 172.16.0.1,
een mint-client met als ipv4-address 172.16.1.123,
en een apache2 server (www-binnen) op 172.16.10.100 en 172.16.10.101 .
De buitenkant van de machine iptbls-fw neemt deel aan het 'lokale'-netwerk van onze setup (10.104/16 bij syntra).
In dit specifieke geval gebruik ik zelf 10.104.120.1/16, maar je kiest zelf een uniek adres in samenspraak met de anderen in het netwerk.
We volgen o.a. de handleiding op http://old.linux800.be/lx-svs-info-squid-squidguard.php
- opdracht
- installeer
squid
op de machine iptables/squid genaamdiptbls-fw
- configureer
squid
voor netwerk 172.16/16 - test
mint-client
naarsquid
(werkt dit zonder zonder NAT, zie volgend punt) - configureer
iptbls-fw
als een NAT-router en test op de client - configureer
squidGuard
met een blacklist opiptbls-fw
- test de blacklist op
mint-client
- installeer apache op iptbls-fw en configureer een default page die wordt getoond als
squidguard
een pagina blacklist - configureer iptables als forwarder: GEEN poort 80, wel 53 en 22
- configureer iptables als input filter: 3128 (squid), 80 (waarschuwingspagina), 22, e.a.
- configureer de apache-server met een tweede ip-adres en configureer apache virtual hosts met 2 ip's;
- configureer DNAT op iptables naar de apache-server binnen FWnet. Gebruik poort 80 voor het eerste ip, en poort 8080 voor het tweede ip. test op een client in het netwerk 10.102/16
- installeer
- squid op iptbls-fw
- de huidige netwerk-configuratie:
user@iptbls-fw:~$ ip addr 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:51:f2:0e brd ff:ff:ff:ff:ff:ff inet 10.104.120.1/16 brd 10.104.255.255 scope global eth0 valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:55:b0:6b brd ff:ff:ff:ff:ff:ff inet 172.16.0.1/16 brd 172.16.255.255 scope global eth1
- als op de machine
iptbls-fw
de firewalliptables
nog geconfigureerd was van een vorige oefening, zorg er dan voor datiptables
niet meer actief is; test vervolgens met:user@iptbls-fw:~$ sudo iptables -t filter -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination user@iptbls-fw:~$ sudo iptables -t nat -L Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination
het is echter altijd beter testen de draaien op clean gecloonde virtuals
- installeer squid
user@iptbls-fw:~$ sudo apt-get install squid Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: linux-headers-3.19.0-58 linux-headers-3.19.0-58-generic linux-image-3.19.0-58-generic linux-image-extra-3.19.0-58-generic Use 'apt-get autoremove' to remove them. The following extra packages will be installed: libecap2 libltdl7 libmnl0 libnetfilter-conntrack3 squid-langpack squid3 squid3-common ... ... ...
- test squid
user@iptbls-fw:~$ telnet localhost 3128 Trying ::1... Connected to localhost. Escape character is '^]'. ^] telnet> quit Connection closed.
- configureer squid voor 172.16/16
user@iptbls-fw:~$ sudo vim /etc/squid3/squid.conf ... ... ... # Example rule allowing access from your local networks. # Adapt to list your (internal) IP networks from where browsing # should be allowed #acl localnet src 10.0.0.0/8 # RFC1918 possible internal network acl localnet src 172.16.0.0/16 # RFC1918 possible internal network #acl localnet src 192.168.0.0/16 # RFC1918 possible internal network #acl localnet src fc00::/7 # RFC 4193 local private network range #acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https ... ... ... ... http_access allow localnet http_access allow localhost 902,1 12%
uncomment
acl localnet src 172.16.0.0/16
en
uncommenthttp_access allow localnet
herstart daarnasquid
:
$ sudo service squid3 restart
- configureer de client
In firefox ga naar preferences, advanced, network, settings ...... en vul de juiste velden in ...
- test de client
Ga naar een website:... en in ons geval is het niet gelukt ...
We zien dat deze pagina doorsquid
is gegenereerd, en dat onzefirefox
-settings correct zijn.
... access is denied betekent dat onze acl's niet goed staan, ... of dat we zijn vergetensquid
te herstarten ...$ sudo service squid3 restart [sudo] password for bert: squid3 stop/waiting squid3 start/running, process 1783
en nu lukt het wel ...
- de huidige netwerk-configuratie:
- squidGuard
- install
user@iptbls-fw:~$ sudo apt-get install squidGuard Reading package lists... Done Building dependency tree Reading state information... Done ... The following NEW packages will be installed: libauthen-sasl-perl libencode-locale-perl libfile-listing-perl libfont-afm-perl libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libio-html-perl libio-socket-inet6-perl libio-socket-ssl-perl liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl libnet-http-perl libnet-smtp-ssl-perl libnet-ssleay-perl libsocket6-perl liburi-perl libwww-perl libwww-robotrules-perl squidguard
- inventariseren
We vinden een/etc/squidguard
directory met hierin:user@iptbls-fw:/etc/squidguard$ ls squidGuard.conf.default squidGuard.conf
De twee bestanden zijn identiek. Het is dus niet nodig een veiligheidskopie te maken van
squidGuard.conf
Verder vinden we de volgende bestanden:$ dpkg -L squidguard /usr/lib/squidguard /usr/lib/squidguard/squidguard-data /usr/lib/squidguard/add-sg-to-squid /usr/lib/squidguard/del-sg-from-squid ... /usr/share/man/man1/hostbyname.1.gz /usr/share/man/man1/update-squidguard.1.gz /usr/share/man/man1/sgclean.1.gz /usr/share/man/man1/squidGuard.1.gz ... /usr/share/doc/squidguard /usr/share/doc/squidguard/README /usr/share/doc/squidguard/README.Debian /usr/share/doc/squidguard/copyright /usr/share/doc/squidguard/NEWS.Debian.gz /usr/share/doc/squidguard/examples /usr/share/doc/squidguard/examples/squidGuard.cgi.gz /usr/share/doc/squidguard/examples/squidGuard-simple-de.cgi.gz /usr/share/doc/squidguard/examples/babel.no /usr/share/doc/squidguard/examples/babel.es /usr/share/doc/squidguard/examples/babel.de /usr/share/doc/squidguard/examples/babel.ru /usr/share/doc/squidguard/examples/squidGuardRobot /usr/share/doc/squidguard/examples/squidGuardRobot/squidGuardRobot.gz /usr/share/doc/squidguard/examples/squidGuardRobot/RobotUserAgent.pm /usr/share/doc/squidguard/examples/squidGuardRobot/squidGuardRobot.in.gz /usr/share/doc/squidguard/examples/sample.conf /usr/share/doc/squidguard/examples/babel.fr /usr/share/doc/squidguard/examples/squidGuard-simple.cgi.gz /usr/share/doc/squidguard/examples/babel.nl /usr/share/doc/squidguard/examples/dest-snippet.txt.gz /usr/share/doc/squidguard/examples/babel.en /usr/share/doc/squidguard/CONFIGURATION.gz /usr/share/doc/squidguard/README.LDAP.gz /usr/share/doc/squidguard/changelog.Debian.gz /usr/share/doc/squidguard/ANNOUNCE.gz ... /usr/sbin/update-squidguard /usr/bin/hostbyname /usr/bin/sgclean /usr/bin/squidGuard ... /etc/squidguard /etc/squidguard/squidGuard.conf.default /etc/logrotate.d /etc/logrotate.d/squidguard ... /var/lib /var/lib/squidguard /var/lib/squidguard/db
- minimumconfiguratie
$ sudo vim /etc/squidguard/squidGuard.conf
# CONFIG FILE FOR SQUIDGUARD # minimum configuratie dbhome /var/lib/squidguard/db logdir /var/log/squid dest webtv { domainlist webtv/domains urllist webtv/urls } acl { default { pass !webtv all redirect http://www.perdu.com/index.html } }
De bovenstaande configuratie bestaat uit een declaratie van de blacklist
webtv
en een acl (access control list) die default (iedereen) alles doorgeeft, behalvewebtv
. Indien een website van de blacklist webtv wordt opgevraagd, geeft squidGuard de website www.perdu.com door.
In/var/lib/squidguard/db
maak ik een directorywebtv
met twee bestanden,domains
enurls
. Inhoud van de bestanden:user@iptbls-fw:/var/lib/squidguard/db$ find . -exec ls -l {} \; -exec cat {} \; drwxr-xr-x 2 root root 4096 Oct 13 11:55 webtv -rw-r--r-- 1 root root 22 Oct 13 11:47 domains -rw-r--r-- 1 root root 42 Oct 13 11:54 urls -rw-r--r-- 1 root root 22 Oct 13 11:47 ./webtv/domains vrt.be www.vrt.be vtm.be www.vtm.be vier.be www.vier.be -rw-r--r-- 1 root root 42 Oct 13 11:54 ./webtv/urls linux800.be/sysadmin/ www.ketnet.be/tv-gids/ www.humo.be/muziek/
bijgevolg zijn straks de 3 domeinen en de ketnet url niet meer beschikbaar.
- test squidguard
user@iptbls-fw:~$ /usr/bin/squidGuard 2016-10-13 12:11:21 [3214] /usr/bin/squidGuard: can't write to logfile /var/log/squidguard/squidGuard.log 2016-10-13 12:11:21 [3214] INFO: New setting: dbhome: /var/lib/squidguard/db 2016-10-13 12:11:21 [3214] INFO: New setting: logdir: /var/log/squid 2016-10-13 12:11:21 [3214] init domainlist /var/lib/squidguard/db/webtv/domains 2016-10-13 12:11:21 [3214] init urllist /var/lib/squidguard/db/webtv/urls 2016-10-13 12:11:21 [3214] /usr/bin/squidGuard: can't write to logfile /var/log/squid/squidGuard.log 2016-10-13 12:11:21 [3214] INFO: squidGuard 1.5 started (1476353481.669) 2016-10-13 12:11:21 [3214] INFO: squidGuard ready for requests (1476353481.724) ^C
De volgende melding is niet goed:
/usr/bin/squidGuard: can't write to logfile /var/log/squid/squidGuard.log
Pas op, we squidguard gestart als gewone gebruiker, en dan zijn log-files altijd onbeschrijfbaar, maar ....
Als we toch kijken metls
zien we hetvolgende:$ ls -ld /var/log/squi* drwxr-xr-x 2 proxy proxy 4096 Oct 13 10:51 /var/log/squid3 drwxr-x--- 2 proxy proxy 4096 Oct 13 11:30 /var/log/squidguard
inderdaad, de log setting insquidGuard.conf
is verkeerd:
logdir /var/log/squid
en moet worden aangepast naar
logdir /var/log/squidguard
- test squid + squidguard
We plaatsen nu de volgende regel bovenaan de config van squid3:
$ sudo vim /etc/squid3/squid.conf
redirect_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf ...
en herstarten squid ...
$ sudo service squid3 restart
Als het niet werkt moet je de log files in
/var/log/squid
en/var/log/squidguard
nakijken;
desnoods kan het helpen/usr/bin/squidGuard
of/usr/sbin/squid3
direct als root te starten vanaf de CLI.
In ons geval krijgen we op de test-pc keurig de pagina vanperdu.com
te zien.
...
- install
-
default page
We installeren
apache2
opiptbls-fw
en plaatsen de volgende default pagina:
$ cat /var/www/html/index.html
! IK BEN DE FIREWALL !!<br /> ! Gij moogt niet binnen !
Vervolgens passen we de
/etc/squidguard/squidGuard.conf
file aan:# CONFIG FILE FOR SQUIDGUARD # minimum configuratie dbhome /var/lib/squidguard/db logdir /var/log/squidguard dest webtv { domainlist webtv/domains urllist webtv/urls } acl { default { pass !webtv all #redirect http://www.perdu.com/index.html redirect http://localhost/index.html } }
Vermits squid/squidguard draaien op dezelfde machine is localhost de juiste keuze.
We herstarten squid:
# service squid3 restart squid3 stop/waiting squid3 start/running, process 1520
en testen op onze client naar http://vrt.be --
...
na een refresh (met flushing of cache op de client) verschijnt onze nieuwe pagina.
vervolg van de de oefening: linux800.be/services/iptables/iptables-squid