Part VI - The Ultimate Linux Home Router - SquidGuard - Internet Filtering
Wednesday, December 25, 2013Introduction
It's worth warning that perfect internet filtering is impossible. It's for this reason that parents who have older children often don't bother with it since it tends to filter out benign things. That said, I have young children with tablets that Santa bought them for Christmas. I've locked the tablets down rather thoroughly on their own--prohibiting the use of the browser without a password and using a simple tool to restrict YouTube access. I know, however, that there will be times that they'll need the browser and when they do, they'll be using a browser with most controversial subjects filtered out. Don't get me wrong, I'm not interested in Nerf(tm)ing up the internet and preventing them from seeing some of the realities of life. But when they need unrestricted access, I will be there supervising directly. When I can't, most of the internet will be blocked.Run an update
Since it's been a few days since this was posted, it's worth making sure we're running the latest versions of everything. Run the following and follow any onscreen instructions.$ sudo zypper up
Installing SquidGuad
$ sudo zypper in squidguard
Restricting Tablets - DHCP Reserved Addresses
One option (and certainly not the most bulletproof) is to set the tablets up with static IP addresses. This is really simple to get around if your children have any basic understanding of IP networking (or know how to wield google in their favor). In a later post, I'll be adding authentication to the proxy server, but until then, I wanted to at least force DHCP to assign the same address. The settings panel on my tablets is password protected, so one of the kids changing the settings is not a huge concern of mine. In addition, assigning the IP via DHCP ensures that I won't need to make other configuration changes when the tablet moves to different networks.Reserved addresses are assigned when the DHCP server sees a client with a specific MAC address. Since it's easier to retrieve the current IP address on my tablets, I've written down the two addresses: 192.168.0.121 and 192.168.0.127, and we'll look up the host details on the server.
The following command will display all of the current leases
$ cat /var/lib/dhcp/db/dhcpd.leases | egrep "(^lease)|(hardware)"This will display all of your current leases and their MAC addresses. Find the one that matches what was assigned to the tablets and copy the hardware address.
$ sudo nano /etc/dhcpd.confFind the subnet that corresponds to your network. It'll look something like this:
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.200;
default-lease-time 14400;
max-lease-time 172800;
}
Modify it:
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.200;
default-lease-time 14400;
max-lease-time 172800;
host girlstablet {
fixed-address 192.168.0.30;
hardware ethernet xx:xx:xx:xx:xx:xx;
}
}
I've added a host 'girlstablet', which has the MAC address "xx:xx:xx:xx:xx:xx" assigned it the address 192.168.0.30. I'll be putting all of the restricted devices on the 192.168.0 subnet in the range 192.168.0.30-39. Do the same with any other addresses, assigning them an IP address outside of the normal lease range.Save and Exit, then run:
$ sudo rcdhcpd restart
Installing Blacklists
I'm going ot use Shalla's Blacklists for this example, but there are several others available. Shalla's is for private, non-commercial use only. If you're using it for a business, consult their web site to ensure you are compliant. Creating a script to download the filter list:$ sudo nano /usr/sbin/update_squidguard_blacklistPaste in the following and Save/Exit.
#!/bin/sh cd /var/lib/squidGuard/db rm -r * wget 'http://www.shallalist.de/Downloads/shallalist.tar.gz' tar -xvf shallalist.tar.gz cd BL mv * .. cd .. rmdir BL /usr/sbin/squidGuard -C all chown -R squid * chown -R squid /var/log/squidGuard rm shallalist.tar.gz squid -k reconfigureRun the following:
$ sudo chmod 750 /usr/sbin/update_squidguard_blacklist.sh $ sudo ln -l /usr/sbin/update_squidguard_blacklist.sh /etc/cron.daily/update_squidguard_blacklist.sh $ sudo nano -w /etc/squidguard.confRemove all lines from the file below "logdir /var/log/squidGuard" and paste in the following:
dest adv {
domainlist adv/domains
urllist adv/urls
}
dest aggressive {
domainlist aggressive/domains
urllist aggressive/urls
log aggressiveaccess
}
dest alcohol {
domainlist alcohol/domains
urllist alcohol/urls
log alcoholaccess
}
dest anonvpn {
domainlist anonvpn/domains
urllist anonvpn/urls
log anonvpnaccess
}
dest costtraps {
domainlist costtraps/domains
urllist costtraps/urls
log costtrapsaccess
}
dest dating {
domainlist dating/domains
urllist dating/urls
log datingaccess
}
dest drugs {
domainlist drugs/domains
urllist drugs/urls
log drugsaccess
}
dest gamble {
domainlist gamble/domains
urllist gamble/urls
log gambleaccess
}
dest hacking {
domainlist hacking/domains
urllist hacking/urls
log hackingaccess
}
dest porn {
domainlist porn/domains
urllist porn/urls
log pornaccess
}
dest redirector {
domainlist redirector/domains
urllist redirector/urls
log redirectoraccess
}
dest sexeducation {
domainlist sex/education/domains
urllist sex/education/urls
log sexeducationaccess
}
dest sexlingerie {
domainlist sex/lingerie/domains
urllist sex/lingerie/urls
log sexlingerieaccess
}
dest spyware {
domainlist spyware/domains
urllist spyware/urls
log spywareaccess
}
dest violence {
domainlist violence/domains
urllist violence/urls
log violenceaccess
}
dest webmail {
domainlist webmail/domains
urllist webmail/urls
log webmailaccess
}
dest webtv {
domainlist webtv/domains
urllist webtv/urls
log webtvaccess
}
dest warez {
domainlist warez/domains
urllist warez/urls
log warezaccess
}
acl {
admins {
pass all
}
restricted {
pass !weapons !warez !webtv !webmail !sexlingerie !sexeducation !redirector !porn !hacking !violence !aggressive !alcohol !anonvpn !costtraps !dating !drugs !gamble all
}
default {
pass !spyware all
}
}
Run the following command:
$ sudo echo 'redirect_program /usr/sbin/squidGuard' >> /etc/squid/squid.conf $ sudo /usr/sbin/update_squidguard_blacklist.sh
Subscribe to:
Post Comments
(
Atom
)
Software
You should follow me on Twitter @matthewdippel. I post all kinds of mundane things!
Blog Archive
-
▼
2013
(
6
)
-
▼
December
(
6
)
- Part VI - The Ultimate Linux Home Router - SquidGu...
- Part V - The Ultimate Linux Home Router - Services...
- Part IV - The Ultimate Linux Home Router - DHCP an...
- Part III - The Ultimate Linux Home Router - Active...
- Part II - The Ultimate Linux Home Router - Tumblew...
- Part I - The Ultimate Linux Home (and possibly Sma...
-
▼
December
(
6
)
No comments :
Post a Comment