Squid
Jump to navigation
Jump to search
Squid home server
Network
if is a separated machine, use a static ip and disable networkmanager, wicd or whatever:
- conf /etc/network/interfaces like follows for eth0
# Static eth0 config
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1
Squid install and config
- this was done for squid 3.1.20
apt-get install squid3 service squid3 stop rm -rf /var/spool/squid/* mkdir -p /var/spool/squid3 chown -R proxy:proxy /var/spool/squid3 chmod 0755 /var/spool/squid3 cp -a /etc/squid3/squid.conf /etc/squid3/squid.conf_bkp cat > /etc/squid3/squid.conf << EOF # from http://thejimmahknows.com/network-adblocking-using-squid-squidguard-and-iptables/ # listening port http_port 3128 # suppress squid version string info httpd_suppress_version_string on # coredump coredump_dir /var/spool/squid3 # cache config cache_dir aufs /var/spool/squid3 8192 16 256 cache_mem 512 MB minimum_object_size 0 bytes maximum_object_size 32 MB maximum_object_size_in_memory 8192 KB # configure the replacement policy # from http://muliantophang.blogspot.com.br/2013/09/optimize-squid-caching-hit-rate.html # https://aacable.wordpress.com/tag/squid-maximum-cache-hit/ memory_replacement_policy heap GDSF cache_replacement_policy heap GDSF # squid logs buffered_logs on cache_access_log /var/log/squid3/access.log cache_log /var/log/squid3/cache.log cache_store_log /var/log/squid3/store.log # refresh_patterns 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 # specific refresh patterns # from https://www.linux.com/news/speed-your-internet-access-using-squids-refresh-patterns # https://aacable.wordpress.com/tag/squid-maximum-cache-hit/ refresh_pattern -i \.(iso|avi|wav|mp3|mp4|mpeg|swf|flv|x-flv)$ 43200 90% 432000 refresh-ims reload-into-ims ignore-reload ignore-no-store ignore-private refresh_pattern -i \.(deb|rpm|exe|dll|msi|zip|tar|gz|bz2|7z|tgz|tbz2|rar|arj)$ 10080 90% 43200 refresh-ims reload-into-ims ignore-reload ignore-no-store ignore-private refresh_pattern -i \.(gif|png|jpg|jpeg|ico|tiff|svg)$ 10080 90% 43200 refresh-ims reload-into-ims ignore-reload ignore-no-store ignore-private refresh_pattern -i \.(ppt|pptx|doc|docx|xls|xlsx|pdf|ps|txt)$ 1440 75% 43200 refresh-ims reload-into-ims ignore-private refresh_pattern -i \.(css|js)$ 10089 40% 432000 refresh-ims reload-into-ims ignore-reload ignore-no-store ignore-private refresh_pattern -i \.(xml|csv|json)$ 1440 40% 40320 refresh-ims reload-into-ims refresh_pattern -i \.(html|htm)$ 1440 40% 40320 refresh-ims reload-into-ims # acl lists acl manager proto cache_object # to comment out for upgrade to 3.4 acl localhost src 127.0.0.1/32 acl localnet src 10.0.0.0/8 # RFC 1918 possible internal network acl localnet src 172.16.0.0/12 # RFC 1918 possible internal network acl localnet src 192.168.0.0/16 # RFC 1918 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 # port connections 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 # allow/deny manager http_access allow manager localhost http_access deny manager # deny requests to certain unsafe ports http_access deny !Safe_ports # deny CONNECT to other than secure SSL ports http_access deny CONNECT !SSL_ports # allowing access from your local networks http_access allow localhost http_access allow localnet # finally deny all other access to this proxy http_access deny all EOF service squid3 start
Monitor squid use
- usage menu
squidclient -h 127.0.0.1 mgr:menu
- generic info
squidclient -h 127.0.0.1 mgr:info
- disk usage
squidclient -h 127.0.0.1 mgr:storedir
- monitor real time hit and miss objects
Open two terminals and run one of follow lines each
tail -F /var/log/squid3/access.log | grep --line-buffere MISS | cat -n tail -F /var/log/squid3/access.log | grep --line-buffered HIT | cat -n
Squidguard install and config [optional]
apt-get install squidguard
cp -a /etc/squidguard/squidGuard.conf /etc/squidguard/squidGuard.conf_bkp
wget -c http://squidguard.mesd.k12.or.us/blacklists.tgz -O /tmp/blacklists.tgz
tar -xzf /tmp/blacklists.tgz -C /var/lib/squidguard/db
chown proxy:proxy -R /var/lib/squidguard/db/*
sudo -u proxy squidGuard -C all
cat >> /etc/squid3/squid.conf << EOF
# rewrite program squidGuard
url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
url_rewrite_children 2 #threads
url_rewrite_concurrency 0 #jobs per threads
EOF
cat > /etc/squidguard/squidGuard.conf << EOF
# from https://wiki.debian.org/DebianEdu/HowTo/SquidGuard/SquidGuardConf
#
# CONFIG FILE FOR SQUIDGUARD
#
# Caution: do NOT use comments inside { }
#
dbhome /var/lib/squidguard/db/blacklists
logdir /var/log/squidguard
dest good {
}
dest local {
}
dest ads {
domainlist ads/domains
urllist ads/urls
}
dest aggressive {
domainlist aggressive/domains
urllist aggressive/urls
}
dest audio-video {
domainlist audio-video/domains
urllist audio-video/urls
}
dest drugs {
domainlist drugs/domains
urllist drugs/urls
}
dest gambling {
domainlist gambling/domains
urllist gambling/urls
}
dest hacking {
domainlist hacking/domains
urllist hacking/urls
}
dest mail {
domainlist mail/domains
}
dest porn {
domainlist porn/domains
urllist porn/urls
}
dest proxy {
domainlist proxy/domains
urllist proxy/urls
}
dest redirector {
domainlist redirector/domains
urllist redirector/urls
}
dest spyware {
domainlist spyware/domains
urllist spyware/urls
}
dest suspect {
domainlist suspect/domains
urllist suspect/urls
}
dest violence {
domainlist violence/domains
urllist violence/urls
}
dest warez{
domainlist warez/domains
urllist warez/urls
}
acl {
default {
pass !ads !aggressive !audio-video !drugs !gambling !hacking !mail !porn !proxy !redirector !spyware !suspect !violence !warez all
redirect http://www.squidguard.org/Logos/squidGuard.gif
}
}
EOF
service squid3 restart
Squid caching TLS/SSL (https://) connections [TODO]
- WARNING: TO COMPLETE
The follow infos are just notes
#apt-get install squid3=3.4.8-6+deb8u2~bpo70+1 squid3-common=3.4.8-6+deb8u2~bpo70+1
apt-get install squid3-common=3.4.8-6+deb8u2~bpo70+1
apt-get source squid3=3.4.8-6+deb8u2~bpo70+1
# squid3 3.4.8-6+deb8u2~bpo70+1 configure options '--build=i486-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--srcdir=.' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' '--datadir=/usr/share/squid3' '--sysconfdir=/etc/squid3' '--mandir=/usr/share/man' '--enable-inline' '--disable-arch-native' '--enable-async-io=8' '--enable-storeio=ufs,aufs,diskd,rock' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-icap-client' '--enable-follow-x-forwarded-for' '--enable-auth-basic=DB,fake,getpwnam,LDAP,MSNT,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB' '--enable-auth-digest=file,LDAP' '--enable-auth-negotiate=kerberos,wrapper' '--enable-auth-ntlm=fake,smb_lm' '--enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group' '--enable-url-rewrite-helpers=fake' '--enable-eui' '--enable-esi' '--enable-icmp' '--enable-zph-qos' '--enable-ecap' '--disable-translation' '--with-swapdir=/var/spool/squid3' '--with-logdir=/var/log/squid3' '--with-pidfile=/var/run/squid3.pid' '--with-filedescriptors=65536' '--with-large-files' '--with-default-user=proxy' '--enable-build-info= linux' '--enable-linux-netfilter' 'build_alias=i486-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'LDFLAGS=-fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security'
# remember to add --enable-ssl
* from http://thejimmahknows.com/squid-3-1-caching-proxy-with-ssl/
* http://wiki.squid-cache.org/ConfigExamples/Intercept/SslBumpExplicit
*
mkdir /etc/squid3/certs
#chown squid:squid /etc/squid3/certs
chmod 755 /etc/squid3/certs
cd /etc/squid3/certs
openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -extensions v3_ca -keyout squid.pem -out squid.pem
chown proxy:proxy squid.pem
http_port 3128 ssl-bump ssl-bump cert=/etc/squid3/certs/squid.pem key=/etc/squid3/certs/squid.pem
# always_direct allow all
tail -F /var/log/squid3/access.log | grep --line-buffere MISS | cat -n
tail -F /var/log/squid3/access.log | grep --line-buffered HIT | cat -n