===== Overview ===== [[http://tmade.de|Home tmade.de]] [[http://wiki.tmade.de|Home Wiki]] ===== Squid ===== ==== Commands ==== /usr/local/squid/sbin/squid -k parse #Check Configuration /usr/local/squid/sbin/squid -k reconfigure #Reload config /usr/local/squid/sbin/squid -f /etc/squid/squid.conf -k parse #Check Configuration /usr/local/squid2/sbin/squid -f /etc/squid2/squid.conf -k parse #Check specified config file /usr/local/squid/sbin/squid -f /etc/squid/squid.conf -k parse #Check specified config file /share/MD0_DATA/.qpkg/Squid/opt/sbin/squid -f /share/MD0_DATA/.qpkg/Squid/opt/etc/squid/squid.conf -k parse Autoconfig: https://www.clearos.com/resources/documentation/clearos/content:en_us:kb_o_web_proxy_auto-detection_configuration ==== Config ==== === Example1 === /etc/squid/squid.conf # # Recommended minimum configuration: # #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 error_directory /etc/squid/error # 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/12 # RFC1918 possible internal network acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl clients src 10.5.1.0/24 # Client-Netzwerk acl mgmt-server src 192.168.05.12/32 # Management-Server acl extern src all # Externe Zugriffe #acl localnet src fc00::/7 # RFC 4193 local private network range #acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines #acl all src all 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 SSH_ports port 22 # ssh acl IMAP_ports port 143 # imap acl CONNECT method CONNECT acl HTTPS proto HTTPS acl ftp proto FTP acl high_ports port 1025-65535 acl ftp_port port 21 http_access allow ftp_port CONNECT http_access allow ftp always_direct allow ftp http_access allow high_ports # # Recommended minimum Access Permission configuration: # # Only allow cachemgr access from localhost http_access allow manager localhost http_access deny manager http_access allow SSH_ports clients http_access allow SSH_ports lydon http_access allow IMAP_ports # 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 # We strongly recommend the following be uncommented to protect innocent # web applications running on the proxy server who think the only # one who can access services on "localhost" is a local user #http_access deny to_localhost # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # #ignore_expect_100 on # Example rule allowing access from your local networks. # Adapt localnet in the ACL section to list your (internal) IP networks # from where browsing should be allowed http_access allow localnet http_access allow localhost #http_access allow extern # And finally deny all other access to this proxy #http_access deny all # Squid normally listens to port 3128 # http_port 8080 http_port 10.6.3.25:8080 http_port 10.6.3.25:80 accel vhost http_port 10.6.3.26:80 accel vhost https_port 10.6.3.26:443 accel vhost cert=/root/certs/another-domain/another-domain.crt key=/root/certs/another-domain/another-domain.key cafile=/root/certs/another-domain/intermediate.crt options=ALL:NO_SSLv2:NO_SSLv3 cipher=ALL:!aNULL:!eNULL:!LOW:!EXP:!ADH:!RC4+RSA:+HIGH:!MEDIUM:!3DES https_port 10.6.3.32:443 accel vhost cert=/root/certs/wildcard.local/wildcard.local.crt key=/root/certs/wildcard.local/wildcard.local.key cafile=/root/certs/wildcard.local/cabundle.crt options=ALL:NO_SSLv2:NO_SSLv3 cipher=ALL:!aNULL:!eNULL:!LOW:!EXP:!ADH:!RC4+RSA:+HIGH:!MEDIUM:!3DES https_port 10.6.3.33:443 accel vhost cert=/root/certs/wildcard.local/wildcard.local.crt key=/root/certs/wildcard.local/wildcard.local.key cafile=/root/certs/wildcard.local/cabundle.crt options=ALL:NO_SSLv2:NO_SSLv3 cipher=ALL:!aNULL:!eNULL:!LOW:!EXP:!ADH:!RC4+RSA:+HIGH:!MEDIUM:!3DES https_port 10.6.3.34:443 accel vhost cert=/root/certs/wildcard.local/wildcard.local.crt key=/root/certs/wildcard.local/wildcard.local.key cafile=/root/certs/wildcard.local/cabundle.crt options=ALL:NO_SSLv2:NO_SSLv3 cipher=ALL:!aNULL:!eNULL:!LOW:!EXP:!ADH:!RC4+RSA:+HIGH:!MEDIUM:!3DES # not in use: 10.6.3.34-36 # We recommend you to use at least the following line. #hierarchy_stoplist cgi-bin ? # Uncomment and adjust the following to add a disk cache directory. #cache_dir ufs /var/log/squid/cache 100 16 256 # Leave coredumps in the first cache dir #coredump_dir /var/log/squid/cache # Add any of your own refresh_pattern entries above these. 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 # Configuration by tmade #cache_peer 192.168.63.94 parent 443 0 no-query originserver ssl sslflags=DONT_VERIFY_PEER login=PASS name=sdtcc #manitu2: cache_peer 10.124.32.7 parent 443 0 no-query originserver ssl sslflags=DONT_VERIFY_PEER login=PASS name=sdtcc acl sites_sdtcc dstdomain another-domain cache_peer_access sdtcc allow sites_sdtcc http_access deny !HTTPS sites_sdtcc deny_info 307:https://%H%R sites_sdtcc http_access allow extern sites_sdtcc cache_peer 192.168.64.94 parent 443 0 no-query originserver ssl sslflags=DONT_VERIFY_PEER login=PASS name=testhost acl sites_testhost dstdomain test-domain.local cache_peer_access testhost allow sites_testhost http_access allow extern sites_testhost cache_peer 192.168.64.94 parent 8444 0 no-query originserver ssl sslflags=DONT_VERIFY_PEER login=PASS name=testhost-chesar acl sites_testhost-chesar dstdomain chesar-domain.local cache_peer_access testhost-chesar allow sites_testhost-chesar http_access allow extern sites_testhost-chesar # squid parameter cache_dir diskd /var/log/squid/cache 3000 16 256 cache_mem 512 MB coredump_dir /var/log/squid/cache access_log /var/log/squid/logs/access.log common cache_log /var/log/squid/logs/cache.log cache_store_log /var/log/squid/logs/store.log logfile_rotate 7 pid_filename /var/log/squid/logs/squid.pid httpd_suppress_version_string on #extension_methods RPC_IN_DATA RPC_OUT_DATA cache_effective_user squid http_access deny all === Example2 === Another config example (similar, but without reverse config): # # Recommended minimum configuration: # cache_effective_user squid cache_effective_group squid #forwarded_for off forwarded_for on #forwarded_for delete #proxy_protocol_access allow localnet #follow_x_forwarded_for allow localhost #follow_x_forwarded_for allow localnet #cache_effective_group nogroup # Example rule allowing access from your local networks. # Adapt to list your (internal) IP networks from where browsing # should be allowed #acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN) acl localnet src 10.0.0.0/24 # RFC 1918 local private network (LAN) acl localnet src 172.17.0.0/16 acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN) #acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN) #acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines #acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN) #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 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 # # Recommended minimum Access Permission configuration: # # 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 # Only allow cachemgr access from localhost http_access allow localhost manager http_access deny manager # We strongly recommend the following be uncommented to protect innocent # web applications running on the proxy server who think the only # one who can access services on "localhost" is a local user #http_access deny to_localhost # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # # Example rule allowing access from your local networks. # Adapt localnet in the ACL section to list your (internal) IP networks # from where browsing should be allowed http_access allow localnet http_access allow localhost # And finally deny all other access to this proxy http_access deny all # Squid normally listens to port 3128 http_port 8080 #http_port 8080 require-proxy-header #http_port 3128 #http_port 192.168.30.33:3128 #http_port 443 # Uncomment and adjust the following to add a disk cache directory. #cache_dir ufs /var/log/squid/cache/squid 100 16 256 #cache_dir diskd /var/log/squid/cache 3000 16 256 cache_dir ufs /var/log/squid/cache/squid 100 16 256 # Leave coredumps in the first cache dir coredump_dir /var/log/squid/cache/squid # # Add any of your own refresh_pattern entries above these. # 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 # Configuration by tmade # squid parameter cache_mem 512 MB access_log /var/log/squid/logs/access.log common cache_log /var/log/squid/logs/cache.log cache_store_log /var/log/squid/logs/store.log # Add logfile rotated mechanism logfile_rotate 7 debug_options rotate=1 pid_filename /var/log/squid/run/squid.pid httpd_suppress_version_string on #extension_methods RPC_IN_DATA RPC_OUT_DATA #If you want to present a special hostname in error messages, etc, define this name. visible_hostname squid-tmade #url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf #redirect_children 4 http_access deny all === Reverse example === Accessing vhost: http_port 10.6.3.26:80 accel vhost HTTPS: https_port 10.6.3.24:443 accel vhost cert=/root/certs/test.crt key=/root/certs/test.key cafile=/root/certs/test.pem Forwarding: cache_peer 192.168.65.119 parent 80 0 no-query originserver login=PASS name=servernameXY acl sites_servernameXY dstdomain test.com cache_peer_access servernameXY allow sites_servernameXY http_access allow extern sites_servernameXY ==== Compile ==== 1. To compile Squid run ./configure Advanced options: ./configure --with-large-files --sysconfdir=/etc/squid --localstatedir=/var/log/squid --enable-ssl --with-openssl --with-filedescriptors=16384 --enable-storeio=diskd,ufs --prefix=/usr/local/squid --with-included-ltdl Note: "libssl-dev" is required! sudo apt-get install libssl-dev Options: SLES: --prefix=/usr --sysconfdir=/etc/squid --bindir=/usr/sbin --sbindir=/usr/sbin --localstatedir=/var --libexecdir=/usr/sbin --datadir=/usr/share/squid Ubuntu: --prefix=/usr --localstatedir=/var --libexecdir=${prefix}/lib/squid --srcdir=. --datadir=${prefix}/share/squid --sysconfdir=/etc/squid 2. make 3. make install Check also: http://wiki.squid-cache.org/SquidFaq/CompilingSquid#How_do_I_compile_Squid.3F **Note:** "libssl-dev" is required if you set "--enable-ssl --with-openssl". ==== Cache ==== To create cache: /usr/local/squid/sbin/squid -z ==== Init-Script ==== #!/bin/sh ### BEGIN INIT INFO # Provides: squid # Required-Start: $network $remote_fs $syslog # Required-Stop: $network $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Proxy Server ### END INIT INFO set -e test -x /usr/local/squid/sbin/squid || exit 0 umask 022 SQUID=/usr/local/squid/sbin/squid case "$1" in start) #echo -n "Starting SQUID: " $SQUID ;; stop) #echo -n "Shutdown SQUID: " $SQUID -k shutdown n=120 while $SQUID -k check && [ $n -gt 120 ]; do sleep 1 echo -n . n=`expr $n - 1` done ;; reload) echo -n "Reload SQUID: " $SQUID -k reconfigure ;; restart) #echo -n "Shutdown SQUID :" $SQUID -k shutdown n=120 while $SQUID -k check && [ $n -gt 120 ]; do sleep 1 echo -n . n=`expr $n - 1` done echo -n "Starting SQUID: " $SQUID ;; status) #echo -n "Status SQUID: " $SQUID -k check ;; probe) exit 0 ;; *) echo "Usage: $0 {start|stop|status|reload|restart|probe}" exit 1 esac ====Unit File==== [Unit] # Description Description=Squid Proxy After=network.target network-online.target nss-lookup.target [Service] #Type=simple (without forking) #Type=oneshot (executing just once) #Type=forking (forking services like e. g. webserver) Type=forking User=nobody Group=root #Environment="JAVA_HOME=/usr/lib/jvm/default-java" #EnvironmentFile="path/to/file" ExecStart=/usr/local/squid/sbin/squid -f /usr/local/squid/etc/squid.conf -d1 #ExecStart=/usr/local/squid/sbin/squid ExecStop=/usr/local/squid/sbin/squid -k shutdown [Install] # Target WantedBy=multi-user.target ==== Windows ==== squid.exe -k reconfigure #Reload config squid.exe -k parse #Check config ====squidGuard ==== Config and db: /etc/squidguard/squidGuard.conf /var/lib/squidguard/db Add to "/etc/squid/squid.conf": url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf redirect_children 4 Commands: squidGuard -dC all #rebuild database: tail -f /var/log/squidguard/squidGuard.log Update blacklists: #!/bin/sh #cd /var/lib/squidguard/db/temp DBHOME='/var/lib/squidguard/db' LOGFILE='/var/log/squidguard/squidGuard-update.log' #Check if DBHOME path exists if [ -d ${DBHOME} ] then echo "DBHOME=\"$DBHOME\"" else echo "Path \"${DBHOME}\" doesn´t exist!" | tee -a $LOGFILE exit 1 fi cd $DBHOME rm -r blacklists-dsi.ut-capitole.fr blacklists.squidguard shallalist echo $DBHOME #Download and extract lists wget -O shallalist.tgz http://www.shallalist.de/Downloads/shallalist.tar.gz wget http://squidguard.mesd.k12.or.us/blacklists.tgz wget -O blacklists-dsi.ut-capitole.fr.tgz http://dsi.ut-capitole.fr/blacklists/download/blacklists.tar.gz tar -xzf shallalist.tgz --one-top-level=shallalist tar -xzf blacklists-dsi.ut-capitole.fr.tgz --one-top-level=blacklists-dsi.ut-capitole.fr tar -xzf blacklists.tgz --one-top-level=blacklists.squidguard rm *.tgz* #Update db and restart squid squidGuard -dC all chown -R proxy:proxy $DBHOME systemctl restart squid.service