Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:squid_centos_6

squid CentOS 6

Squid ist ein „caching proxy“ welcher die Protokolle HTTP, HTTPS, FTP, uvm. unterstützt. Es kann eine Reduzierung der Bandweite der Internetverbindung und eine Reduzierung der Ladezeiten von Internetseiten durch den Einsatz eines Proxy-Servers erreicht werden. Ein weiterer sehr wichtiger Punkt beim Einsatz eines Proxy-Servers ist die Möglichkeit der Zugriffsbeschränkung und der Authentifizierung beim Zugriff auf das Internet aus dem lokalen Netzwerk.

:!: Hinweis - Die nachfolgenden Ausführungen erheben keinen Anspruch auf Vollständigkeit, sondern stellen eine „Basiskonfiguration“ eines Squid als Proxy-Server für ein kleines privates Netzwerk dar!!!

Ab hier werden zur Ausführung nachfolgender Befehle root-Rechte benötigt. Um der Benutzer root zu werden, melden Sie sich bitte als root-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root:

$ su -
Password:

Überblick

Im nachfolgenden soll die Konfiguration Squid als Proxy-Server welcher als interner, nicht nach außen agierender Proxy-Server für ein privates Netzwerk mit zwei Netzen durchgeführt werden. Nachfolgende Netze werden dabei verwaltet:

  • DMZ - Domain: dmz.tachtler.net - IP-Adressbereich: 192.168.0.0/24
  • Intranet - Domain: intra.tachtler.net - IP-Adressbereich: 192.168.1.0/24

:!: HINWEIS - Der Einsatz von IPv6 soll NICHT genutzt werden!!!

Installation

Zur Installation eines Squid als Proxy-Server wird nachfolgendes Paket benötigt:

  • squid - ist im base-Repository von CentOS enthalten

installiert werden.

Mit nachfolgendem Befehl, wird das Pakete squid installiert:

# yum install squid
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.vieth-server.de
 * extras: centos.vieth-server.de
 * updates: centos.vieth-server.de
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package squid.x86_64 7:3.1.4-1.el6 set to be updated
--> Processing Dependency: perl(DBI) for package: 7:squid-3.1.4-1.el6.x86_64
--> Running transaction check
---> Package perl-DBI.x86_64 0:1.609-4.el6 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package           Arch            Version                  Repository     Size
================================================================================
Installing:
 squid             x86_64          7:3.1.4-1.el6            base          1.7 M
Installing for dependencies:
 perl-DBI          x86_64          1.609-4.el6              base          705 k

Transaction Summary
================================================================================
Install       2 Package(s)
Upgrade       0 Package(s)

Total download size: 2.4 M
Installed size: 7.1 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): perl-DBI-1.609-4.el6.x86_64.rpm                   | 705 kB     00:00     
(2/2): squid-3.1.4-1.el6.x86_64.rpm                      | 1.7 MB     00:04     
--------------------------------------------------------------------------------
Total                                           449 kB/s | 2.4 MB     00:05     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : perl-DBI-1.609-4.el6.x86_64                              1/2 
  Installing     : 7:squid-3.1.4-1.el6.x86_64                               2/2 

Installed:
  squid.x86_64 7:3.1.4-1.el6                                                    

Dependency Installed:
  perl-DBI.x86_64 0:1.609-4.el6                                                 

Complete!

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket squid installiert wurden.

# rpm -qil squid
Name        : squid                        Relocations: (not relocatable)
Version     : 3.1.4                             Vendor: CentOS
Release     : 1.el6                         Build Date: Thu 11 Nov 2010 06:29:14 PM CET
Install Date: Fri 07 Oct 2011 01:56:59 PM CEST      Build Host: c6b5.bsys.dev.centos.org
Group       : System Environment/Daemons    Source RPM: squid-3.1.4-1.el6.src.rpm
Size        : 5751696                          License: GPLv2 and (LGPLv2+ and Public Domain)
Signature   : RSA/8, Sun 03 Jul 2011 07:02:24 AM CEST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://www.squid-cache.org
Summary     : The Squid proxy caching server
Description :
Squid is a high-performance proxy caching server for Web clients,
supporting FTP, gopher, and HTTP data objects. Unlike traditional
caching software, Squid handles all requests in a single,
non-blocking, I/O-driven process. Squid keeps meta data and especially
hot objects cached in RAM, caches DNS lookups, supports non-blocking
DNS lookups, and implements negative caching of failed requests.

Squid consists of a main server program squid, a Domain Name System
lookup program (dnsserver), a program for retrieving FTP data
(ftpget), and some management and client tools.
/etc/NetworkManager/dispatcher.d/20-squid
/etc/httpd/conf.d/squid.conf
/etc/logrotate.d/squid
/etc/pam.d/squid
/etc/rc.d/init.d/squid
/etc/squid
/etc/squid/cachemgr.conf
/etc/squid/cachemgr.conf.default
/etc/squid/errorpage.css
/etc/squid/errorpage.css.default
/etc/squid/mime.conf
/etc/squid/mime.conf.default
/etc/squid/msntauth.conf
/etc/squid/msntauth.conf.default
/etc/squid/squid.conf
/etc/squid/squid.conf.default
/etc/sysconfig/squid
/usr/bin/squidclient
/usr/lib64/squid
/usr/lib64/squid/cachemgr.cgi
/usr/lib64/squid/digest_edir_auth
/usr/lib64/squid/digest_ldap_auth
/usr/lib64/squid/digest_pw_auth
/usr/lib64/squid/diskd
/usr/lib64/squid/fakeauth_auth
/usr/lib64/squid/getpwname_auth
/usr/lib64/squid/ip_user_check
/usr/lib64/squid/msnt_auth
/usr/lib64/squid/ncsa_auth
/usr/lib64/squid/negotiate_kerb_auth
/usr/lib64/squid/negotiate_kerb_auth_test
/usr/lib64/squid/no_check.pl
/usr/lib64/squid/ntlm_smb_lm_auth
/usr/lib64/squid/pam_auth
/usr/lib64/squid/pop3.pl
/usr/lib64/squid/sasl_auth
/usr/lib64/squid/smb_auth
/usr/lib64/squid/smb_auth.pl
/usr/lib64/squid/smb_auth.sh
/usr/lib64/squid/squid_db_auth
/usr/lib64/squid/squid_kerb_auth
/usr/lib64/squid/squid_kerb_auth_test
/usr/lib64/squid/squid_ldap_auth
/usr/lib64/squid/squid_ldap_group
/usr/lib64/squid/squid_radius_auth
/usr/lib64/squid/squid_session
/usr/lib64/squid/squid_unix_group
/usr/lib64/squid/unlinkd
/usr/lib64/squid/wbinfo_group.pl
/usr/lib64/squid/yp_auth
/usr/sbin/squid
/usr/share/doc/squid-3.1.4
/usr/share/doc/squid-3.1.4/COPYING
/usr/share/doc/squid-3.1.4/COPYRIGHT
/usr/share/doc/squid-3.1.4/ChangeLog
/usr/share/doc/squid-3.1.4/QUICKSTART
/usr/share/doc/squid-3.1.4/README
/usr/share/doc/squid-3.1.4/rredir.c
/usr/share/doc/squid-3.1.4/rredir.pl
/usr/share/doc/squid-3.1.4/squid.conf.documented
/usr/share/doc/squid-3.1.4/url-normalizer.pl
/usr/share/doc/squid-3.1.4/user-agents.pl
/usr/share/man/man1/squidclient.1.gz
/usr/share/man/man8/cachemgr.cgi.8.gz
/usr/share/man/man8/ncsa_auth.8.gz
/usr/share/man/man8/pam_auth.8.gz
/usr/share/man/man8/squid.8.gz
/usr/share/man/man8/squid_db_auth.8.gz
/usr/share/man/man8/squid_ldap_auth.8.gz
/usr/share/man/man8/squid_ldap_group.8.gz
/usr/share/man/man8/squid_radius_auth.8.gz
/usr/share/man/man8/squid_session.8.gz
/usr/share/man/man8/squid_unix_group.8.gz
/usr/share/snmp/mibs/SQUID-MIB.txt
/usr/share/squid
/usr/share/squid/errors
/usr/share/squid/errors/COPYRIGHT
/usr/share/squid/errors/TRANSLATORS
...
... weitere länderspezifische Fehlerseiten...
...
/usr/share/squid/errors/de
/usr/share/squid/errors/de-at
/usr/share/squid/errors/de-ch
/usr/share/squid/errors/de-de
/usr/share/squid/errors/de-li
/usr/share/squid/errors/de-lu
/usr/share/squid/errors/de/ERR_ACCESS_DENIED
/usr/share/squid/errors/de/ERR_CACHE_ACCESS_DENIED
/usr/share/squid/errors/de/ERR_CACHE_MGR_ACCESS_DENIED
/usr/share/squid/errors/de/ERR_CANNOT_FORWARD
/usr/share/squid/errors/de/ERR_CONNECT_FAIL
/usr/share/squid/errors/de/ERR_DIR_LISTING
/usr/share/squid/errors/de/ERR_DNS_FAIL
/usr/share/squid/errors/de/ERR_ESI
/usr/share/squid/errors/de/ERR_FORWARDING_DENIED
/usr/share/squid/errors/de/ERR_FTP_DISABLED
/usr/share/squid/errors/de/ERR_FTP_FAILURE
/usr/share/squid/errors/de/ERR_FTP_FORBIDDEN
/usr/share/squid/errors/de/ERR_FTP_NOT_FOUND
/usr/share/squid/errors/de/ERR_FTP_PUT_CREATED
/usr/share/squid/errors/de/ERR_FTP_PUT_ERROR
/usr/share/squid/errors/de/ERR_FTP_PUT_MODIFIED
/usr/share/squid/errors/de/ERR_FTP_UNAVAILABLE
/usr/share/squid/errors/de/ERR_ICAP_FAILURE
/usr/share/squid/errors/de/ERR_INVALID_REQ
/usr/share/squid/errors/de/ERR_INVALID_RESP
/usr/share/squid/errors/de/ERR_INVALID_URL
/usr/share/squid/errors/de/ERR_LIFETIME_EXP
/usr/share/squid/errors/de/ERR_NO_RELAY
/usr/share/squid/errors/de/ERR_ONLY_IF_CACHED_MISS
/usr/share/squid/errors/de/ERR_READ_ERROR
/usr/share/squid/errors/de/ERR_READ_TIMEOUT
/usr/share/squid/errors/de/ERR_SECURE_CONNECT_FAIL
/usr/share/squid/errors/de/ERR_SHUTTING_DOWN
/usr/share/squid/errors/de/ERR_SOCKET_FAILURE
/usr/share/squid/errors/de/ERR_TOO_BIG
/usr/share/squid/errors/de/ERR_UNSUP_HTTPVERSION
/usr/share/squid/errors/de/ERR_UNSUP_REQ
/usr/share/squid/errors/de/ERR_URN_RESOLVE
/usr/share/squid/errors/de/ERR_WRITE_ERROR
/usr/share/squid/errors/de/ERR_ZERO_SIZE_OBJECT
...
... weitere länderspezifische Fehlerseiten...
...
/usr/share/squid/icons
/usr/share/squid/icons/anthony-binhex.gif
/usr/share/squid/icons/anthony-bomb.gif
/usr/share/squid/icons/anthony-box.gif
/usr/share/squid/icons/anthony-box2.gif
/usr/share/squid/icons/anthony-c.gif
/usr/share/squid/icons/anthony-compressed.gif
/usr/share/squid/icons/anthony-dir.gif
/usr/share/squid/icons/anthony-dirup.gif
/usr/share/squid/icons/anthony-dvi.gif
/usr/share/squid/icons/anthony-f.gif
/usr/share/squid/icons/anthony-image.gif
/usr/share/squid/icons/anthony-image2.gif
/usr/share/squid/icons/anthony-layout.gif
/usr/share/squid/icons/anthony-link.gif
/usr/share/squid/icons/anthony-movie.gif
/usr/share/squid/icons/anthony-pdf.gif
/usr/share/squid/icons/anthony-portal.gif
/usr/share/squid/icons/anthony-ps.gif
/usr/share/squid/icons/anthony-quill.gif
/usr/share/squid/icons/anthony-script.gif
/usr/share/squid/icons/anthony-sound.gif
/usr/share/squid/icons/anthony-tar.gif
/usr/share/squid/icons/anthony-tex.gif
/usr/share/squid/icons/anthony-text.gif
/usr/share/squid/icons/anthony-unknown.gif
/usr/share/squid/icons/anthony-xbm.gif
/usr/share/squid/icons/anthony-xpm.gif
/var/log/squid
/var/spool/squid

Dienst/Deamon-Start einrichten

Um einen Squid als Proxy-Server, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:

# chkconfig squid on

Eine Überprüfung, ob beim Neustart des Server der squid-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:

# chkconfig --list | grep squid
squid           0:off   1:off   2:on    3:on    4:on    5:on    6:off

iptables Regel

Damit der Squid als Proxy-Server auch erreichbar ist und nicht die Weitergabe der IP-Paket vom Paketfilter iptables blockiert wird, muss nachfolgende Regel zum iptables-Regelwerk hinzugefügt werden.

Um die aktuellen iptables-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# iptables -L -nv --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1     3269 2693K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        1    60 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5       16   512 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 2563 packets, 1114K bytes)
num   pkts bytes target     prot opt in     out     source               destination

Nachfolgender Befehl, fügt folgende iptables-Regel dem iptables-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:

  • -A INPUT -p tcp --dport 3128 -j ACCEPT

und hier der Befehl:

# iptables -I INPUT 5 -p tcp --dport 3128 -j ACCEPT

Ein erneute Abfrage des iptables-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:

# iptables -L -nv --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1     3359 2701K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        1    60 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3128 
6       16   512 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 4 packets, 624 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Die neuen Zeile ist an Position 4 (INPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):

...
5        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3128 
...

Um diese iptables-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:

# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

Basis-Konfiguration

Nachfolgende Konfiguration stellt eine Basiskonfiguration dar, mit verschiedenen Ausprägung in Bezug auf die Authentifizierung.

Konfigurationsdateien

Nach der Installation des Squid als Proxy-Server sind folgende Konfigurationsdateien von Bedeutung:

  • /etc/squid/squid.conf (Hauptkonfigurationsdatei)
  • /etc/logrotate.d/squid (Anweisungen zum logrotate)
  • /etc/pam.d/squid (PAM-Legitimationsanweisungen)
  • /etc/sysconfig/squid (Starteinstellungen squid-Daemon)

und ggf.

  • /etc/httpd/conf.d/squid.conf (httpd-Daemon CGI-Konfigurationen für Apache Webserver)

Konfigurationsdatei /etc/squid/squid.conf

Da die Konfigurationsdatei /etc/squid/squid.conf aufgrund von sehr vielen Kommentar- und Leerzeichen sehr schnell an Übersichtlichkeit verliert, kann mit folgendem Befehl eine Ausgabe ohne Kommentar- und Leerzeilen erzeugt werden, welche dann nach der Grundinstallation von Squid wie folgt aussehen sollte:

# egrep -v '(^#|^$)' /etc/squid/squid.conf
Die Konfigurationsdatei /etc/squid/squid.conf ohne Kommentar- und Leerzeichen:
# egrep -v '(^#|^$)' /etc/squid/squid.conf
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl localhost src ::1/128
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl to_localhost dst ::1/128
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 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
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 3128
hierarchy_stoplist cgi-bin ?
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

Änderungen an /etc/squid/squid.conf

Die Konfigurationsdatei /etc/squid/squid.conf ohne Kommentar- und Leerzeichen mit persönlichen Anpassungen:

# egrep -v '(^#|^$)' /etc/squid/squid.conf
auth_param basic program /usr/lib64/squid/squid_ldap_auth -b "ou=People,dc=tachtler,dc=net" -f "uid=%s" -h ldap.dmz.tachtler.net 
-D "cn=Anonymous,dc=tachtler,dc=net" -W /etc/squid/ldap_anonymous_passwd
auth_param basic utf8 on
auth_param basic children 3
auth_param basic concurrency 0
auth_param basic realm Bitte geben Sie Ihre Internet-Authentifizierung ein!
auth_param basic credentialsttl 30 minutes
auth_param basic casesensitive off
acl QUERY urlpath_regex cgi_bin \?
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 192.168.0.0/24 
acl localnet src 192.168.0.1/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 1025-65535  # unregistered ports
acl ldap_auth proxy_auth REQUIRED
acl CONNECT method CONNECT
acl noauthsites url_regex productactivation.one.microsoft.com:443
acl noauthsites url_regex download\.windowsupdate\.com/*
acl noauthsites url_regex update\.microsoft\.com/*
acl noauthsites url_regex www\.update\.microsoft\.com/t.com/*
acl noauthsites url_regex windowshelp\.microsoft\.com/*
acl noauthsites url_regex gadgets\.live\.com/config\.xml 
acl noauthsites url_regex weather\.service\.msn\.com/data\.aspx
acl noauthsites url_regex go\.microsoft\.com/fwlink/?*
acl noauthsites url_regex news\.de\.msn\.com/rss_newshome\.aspx
acl noauthsites url_regex r\.office\.microsoft\.com/*
follow_x_forwarded_for allow localhost
follow_x_forwarded_for allow localnet
http_access allow manager localhost
http_access allow manager localnet
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost noauthsites
http_access allow localhost ldap_auth
http_access allow localnet noauthsites
http_access allow localnet ldap_auth
http_access deny all
http_reply_access allow all
icp_access allow localhost
icp_access allow localnet
icp_access deny all
http_port 3128 
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid
cache deny QUERY
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_mgr squid
mail_from squid@tachtler.net
cache_effective_group squid
visible_hostname proxy.dmz.tachtler.net
unique_hostname proxy.dmz.tachtler.net
hostname_aliases rechner50.dmz.tachtler.net
error_directory /usr/share/squid/errors/de
error_default_language de
forwarded_for delete
cachemgr_passwd geheim all

Einsatz von Authentifizierung

Betreffender Absatz aus der Konfigurationsdatei /etc/squid/squid.conf (nur relevanter Ausschnitt):

auth_param basic program /usr/lib64/squid/squid_ldap_auth -b "ou=People,dc=tachtler,dc=net" -f "uid=%s" -h ldap.dmz.tachtler.net 
-D "cn=Anonymous,dc=tachtler,dc=net" -W /etc/squid/ldap_anonymous_passwd
auth_param basic utf8 on
auth_param basic children 3
auth_param basic concurrency 0
auth_param basic realm Bitte geben Sie Ihre Internet-Authentifizierung ein!
auth_param basic credentialsttl 30 
...

Für weitere Details, um durch Squid als Proxy-Server auch eine Authentifizierung durchführen zu lassen, siehe nachfolgende interne Links

NICHT cachen von dynamischen Inhalten (cgi-scripte)

Betreffende Absätze aus der Konfigurationsdatei /etc/squid/squid.conf (nur relevanter Ausschnitt):

...
acl QUERY urlpath_regex cgi_bin \?
...
cache deny QUERY
...

Erzwingen eine Authentifizierung

Betreffender Absatz aus der Konfigurationsdatei /etc/squid/squid.conf (nur relevanter Ausschnitt):

...
acl ldap_auth proxy_auth REQUIRED
...

* Es wird hier eine Authentifizierung gegen LDAP erzwungen !!!

Definitionen von Ausnahmen aus der Authentifizierung

Betreffender Absatz aus der Konfigurationsdatei /etc/squid/squid.conf (nur relevanter Ausschnitt):

...
acl noauthsites url_regex productactivation.one.microsoft.com:443
acl noauthsites url_regex download\.windowsupdate\.com/*
acl noauthsites url_regex update\.microsoft\.com/*
acl noauthsites url_regex www\.update\.microsoft\.com/t.com/*
acl noauthsites url_regex windowshelp\.microsoft\.com/*
acl noauthsites url_regex gadgets\.live\.com/config\.xml 
acl noauthsites url_regex weather\.service\.msn\.com/data\.aspx
acl noauthsites url_regex go\.microsoft\.com/fwlink/?*
acl noauthsites url_regex news\.de\.msn\.com/rss_newshome\.aspx
acl noauthsites url_regex r\.office\.microsoft\.com/*
...

Weitergabe der tatsächlichen IP-Adressen

Betreffender Absatz aus der Konfigurationsdatei /etc/squid/squid.conf (nur relevanter Ausschnitt):

...
follow_x_forwarded_for allow localhost
follow_x_forwarded_for allow localnet
...

Zugriffsregeln zum Proxy

Betreffender Absatz aus der Konfigurationsdatei /etc/squid/squid.conf (nur relevanter Ausschnitt):

...
http_access allow localhost noauthsites
http_access allow localhost ldap_auth
http_access allow localnet noauthsites
http_access allow localnet ldap_auth
...

Definitionen zum Server und zum e-Mail-Versand

Betreffender Absatz aus der Konfigurationsdatei /etc/squid/squid.conf (nur relevanter Ausschnitt):

...
cache_mgr squid
mail_from squid@tachtler.net
cache_effective_group squid
visible_hostname proxy.dmz.tachtler.net
unique_hostname proxy.dmz.tachtler.net
hostname_aliases rechner50.dmz.tachtler.net
...

Definitionen der Sprache für die HTML-Meldungen

Betreffender Absatz aus der Konfigurationsdatei /etc/squid/squid.conf (nur relevanter Ausschnitt):

...
error_directory /usr/share/squid/errors/de
error_default_language de
...

Definiton zu Anzeige von Forwarded-For Header Zeilen - „komplett entfernen“

...
forwarded_for delete
...

Passwort für den Vollzugriff auf den Cache-Manager

Betreffender Absatz aus der Konfigurationsdatei /etc/squid/squid.conf (nur relevanter Ausschnitt):

...
cachemgr_passwd geheim all
...

NCSA-Authentifizierung

Falls folgende Einträge müssen in die Konfigurationsdatei /etc/squid/squid.conf hinzugefügt werden:

auth_param basic program ncsa_passwd/ncsa_auth /etc/squid/ncsa_passwd
auth_param basic utf8 on
auth_param basic children 3
auth_param basic concurrency 0
auth_param basic realm Bitte geben Sie Ihre Internet-Authentifizierung ein!
auth_param basic credentialsttl 30 minutes
auth_param basic casesensitive off

Weiterhin müssen nachfolgende Zeilen ebenfalls an geeigenter Stelle zur Konfigurationsdatei /etc/squid/squid.conf hinzugefügt werden (nur relevanter Ausschnitt):

...
acl ncsa_users proxy_auth REQUIRED
acl CONNECT method CONNECT
...

Zum Abschluss müssen nachfolgende Zeilen zusätzlich an geeigenter Stelle zur Konfigurationsdatei /etc/squid/squid.conf hinzugefügt werden (nur relevanter Ausschnitt):

...
# 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
# Tachtler
# default: http_access allow localnet
# default: http_access allow localhost
# Tachtler
http_access allow localhost ncsa_users
http_access allow localnet ncsa_users
...

Um die NCSA-Authentifizierung (NCSA-style Username und Passwort Authentifizierung) aktivieren zu können, fehlt noch eine Passwort-Datei in der Benutzernamen und Passwörter hinterlegt werden.

Die Anlage einer solchen NCSA-Authentifizierungs - Passwort-Datei kann im Verzeichnis /etc/squid mit folgendem Befehl erreicht werden:

# htpasswd -c -m /etc/squid/ncsa_passwd klaus
New password: 
Re-type new password: 
Adding password for user klaus
* Es wird die Datei ncsa_passwd im Verzeichnis /etc/squid angelegt. Die Option -c dient zur erstmaligen Erstellung der Passwort-Datei /etc/squid/ncsa_passwd.

* Das Programm htpasswd generiert für den angegeben Benutzer, in diesem Fall klaus einen Eintrag in der Passwort-Datei /etc/squid/ncsa_passwd mit dem Benutzernamen klaus und einem verschlüsselten Passwort.

* Die Option -m schaltet die Nutzung der MD5-Verschlüsselung ein.

Um weitere Benutzer zur Passwort-Datei /etc/squid/ncsa_passwd hinzuzufügen, wird eine Variante des oben beschriebenen Befehls, ohne die Option -c verwendet.

# htpasswd -m /etc/squid/ncsa_passwd petra
New password: 
Re-type new password: 
Adding password for user petra

Die Passwort-Datei /etc/squid/ncsa_passwd kann mit folgendem Befehl zur Anzeige gebracht werden und sollte wie folgt aussehen:

# cat /etc/squid/ncsa_passwd 
klaus:$upr6$hqBt2/..$MnAncgdt46skgfz4ndcyrt
petra:$asr3$vtwex...$s.mchdt264hdteiu5oNty0

LDAP-Authentifizierung

Für die Authentifizierung gegen einen LDAP-Server, hier OpenLDAP ist weder eine

  • /etc/squid/ncsa_passwd-Datei erforderlich, noch
  • durch die vorhergehnde NCSA-Auth gemachten Einträge in der Konfigurationsdatei /etc/squid/squid.conf

Falls folgende Einträge in der /etc/squid/squid.conf sein sollten, sind diese wieder zu entfernen:

auth_param basic program ncsa_passwd/ncsa_auth /etc/squid/ncsa_passwd
auth_param basic utf8 on
auth_param basic children 3
auth_param basic concurrency 0
auth_param basic realm Bitte geben Sie Ihre Internet-Authentifizierung ein!
auth_param basic credentialsttl 30 minutes
auth_param basic casesensitive off
und ersetzen dies gegen:
auth_param basic program /usr/lib64/squid/squid_ldap_auth -b "ou=People,dc=tachtler,dc=net" -f "uid=%s" -h ldap.dmz.tachtler.net
auth_param basic utf8 on
auth_param basic children 3
auth_param basic concurrency 0
auth_param basic realm Bitte geben Sie Ihre Internet-Authentifizierung ein!
auth_param basic credentialsttl 30 minutes
auth_param basic casesensitive off

Desweiteren wird folgender Eintrag:

acl ncsa_users proxy_auth REQUIRED
gegen diesen Eintrag ersetzt:
acl ldap_auth proxy_auth REQUIRED

Zum Abschluss werden noch folgende Einträge:

http_access allow localhost ncsa_users
http_access allow localnet ncsa_users
durch nachfolgende Einträge ersetzt:
http_access allow localhost ldap_auth
http_access allow localnet ldap_auth

LDAP-Authentifizierung ohne anonymous Authentifizierung

Falls der verwendete LDAP-Server keinen aynonymous bind erlaubt, was aus Sicherheitsgründen sicherlich wünschenswert ist, sind folgende Änderungen zusätzlich zur wie oben beschriebenen LDAP-Authentifizierung notwendig:

Die Konfigurationsdatei /etc/squid/squid.conf hat folgenden Stand:

auth_param basic program /usr/lib64/squid/squid_ldap_auth -b "ou=People,dc=tachtler,dc=net" -f "uid=%s" -h ldap.dmz.tachtler.net
auth_param basic utf8 on
auth_param basic children 3
auth_param basic concurrency 0
auth_param basic realm Bitte geben Sie Ihre Internet-Authentifizierung ein!
auth_param basic credentialsttl 30 minutes
auth_param basic casesensitive off
Hier muss nur die erste Zeile wie folgt erweitert werden:
auth_param basic program /usr/lib64/squid/squid_ldap_auth -b "ou=People,dc=tachtler,dc=net" -f "uid=%s" -h ldap.dmz.tachtler.net -D "cn=<Benutzername für anonymous bind>,dc=tachtler,dc=net" - W /etc/squid/ldap_passwd

In die noch neu anzulegende Datei /etc/squid/ldap_passwd ist das zum <Benutzername für anonymous bind> gehörende Passwort einzutragen.

Die Datei /etc/squid/ldap_passwd kann mit folgendem Befehl angelegt werden:

# touch /etc/squid/ldap_passwd
und sollte mit folgendem Befehle die Besitzerrechte auf lesend und schreibend durch root und lesend durch den Benutzer squid und sonst keine Rechte für alle anderen Benutzer erhalten:
# chown root.squid /etc/squid/ldap-passwd
und die Benutzerrechte mit folgendem Befehl
# chmod 640 /etc/squid/ldap-passwd

Ein Beispiel für den Inhalt der Datei /etc/squid/ldap-passwd kann wie folgt aussehen:

geheim
* Hier wäre das Passwort welches zum <Benutzername für anonymous bind> gehört einfach geheim und kann ohne weitere Angaben so in die Datei /etc/squid/ldap-passwd geschrieben werden.

Squid ohne Cache betreiben

Neben den vielen eindeutigen Vorteilen von Cache-Proxys gibt es jedoch auch gute Gründe, die gegen einen Cache-Proxy sprechen. In einigen Fällen kann es durchaus sinnvoll sein, auf eine Cache-Funktionalität zu verzichten.

Vorteile eines Cache-Proxy's:

  • Beschleunigung - Da die Antwortzeiten des Proxys aus dem eigenen Cache meist deutlich kürzer sind - abgesehen von Webservern im lokalen Netz, kann je nach Entfernung und Anbindung zum Webserver die Antwortzeit aus dem Cache um den Faktor 2 bis 100 schneller sein, als direkte Zugriffe.
  • Bandbreite - Durch die Datenhaltung im Cache werden viele Anfragen an den Zielserver überflüssig. Der Proxy liefert die Antwort aus dem Cache, anstatt sie über eine (externe) Verbindung zu holen.
  • Verfügbarkeit - Bei unsicheren Verbindungen oder schlechter Verfügbarkeit externer Webserver kann ein Proxyserver u.U. auch zu einer Erhöhung der Verfügbarkeit dieser Inhalte führen. Wurde ein Objekt einmal im Cache abgelegt, kann es bei Ausfall der Verbindung noch aus dem Cache geliefert werden.

Nachteile eines Cache-Proxy's:

  • Kosten eines Cache - Ein Cache braucht eine entsprechende Speicherkapazität, sowohl auf der Festplatte sowie auch im Hauptspeicher.
  • Verzögerungen durch einen Cache - Ein Cache spart Ladezeit. Nutzen Sie den Proxy nur für Webserver in einem lokalen Netz mit guter Bandbreite, kann dieser Effekt unter sehr ungünstigen Umständen sogar zu geringfügig längeren Antwortzeiten führen als bei einem direkten Zugriff.
  • Aktualität - Die Aktualität, kann ein starkes Argument gegen einen Cache sein. Teilweise kann es zur Auslieferung veralteter Objekte kommen. Ist eine laufende Aktualität aller Informationen ein zwingendes Argument, ist evtl. von einem Cache abzuraten.
  • Rechtliche Probleme - Je nach aktueller Rechtslage können Probleme in Bereichen wie Urheberrecht auftreten.

Um den Cache-Speicher zu deaktivieren ist folgender Eintrag in der Konfigurationsdatei /etc/squid/squid.conf auskommentiert zu lassen, wie nachfolgend beschrieben:

# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid 100 16 256

Squid und Bandbreitenbegrenzung

Es gibt verschiedene Ausprägungen der Möglichkeit im Squid die Bandbreite der z.B. Verbindung zum Internet, zu begrenzen.

Dies geschieht unter Zuhilfenahme und Erstellung von sogenannten delay_pools !

Nachfolgendes Beispiel, soll die Möglichkeit zeigen, wie

  • ein Benutzer, welcher sich am Squid authentifiziert hat (z.B. gegen LDAP)
  • eine Benutzer bezogene Bandbreitenbeschränkung

eingerichtet werden kann.

Dazu sind nachfolgende Ergänzungen in der Squid-Konfigurationsdatei

  • /etc/squid/squid.conf

mindestens notwendig (nur relevanter Ausschnitt):

...
acl delay_pool_user1 proxy_auth user1
delay_pools 1
delay_class 1 1
delay_access 1 allow delay_pool_user1
delay_access 1 deny all
delay_parameters 1 8000/8000
...

Nachfolgend sollen die einzelnen Zeilen und deren Bedeutung dargestellt werden

Erstellung einer ACL mit dem Inhalt des Benutzernamens, mit dem sich der Benutzer authentifiziert hat:

acl delay_pool_user1 proxy_auth user1

Angabe, wie viele delay_pools eingerichtet und von Squid verwaltet werden sollen:

delay_pools 1

Angabe welcher delay_pool von welchem Klasse-Typ (class) sein soll:

delay_class 1 1
* Hier ist delay_pool 1 vom Klassen-Typ delay_class 1 !!!

:!: HINWEIS - Es gibt nachfolgende Klassen-Typen:

Klassen-Typ Erklärung
class 1 Alles ist nur in einem gesamten Klassen-Container limitiert
class 2 Alles ist jeweils in einem Klassen-Container limitiert, welche zusätzlich anhand der IP-Adressen Bits 25 bis 32 (d) einer IPv4-Adresse unterschieden werden (a.b.c.d)
class 3 Alles ist jeweils in einem Klassen-Container limitiert, welche jedoch in „Netzwerke“ anhand der Bits 17 bis 24 © unterschieden werden und zusätzlich auch noch anhand der IP-Adressen Bits 25 bis 32 (d) einer IPv4-Adresse unterschieden werden (a.b.c.d)
class 4 Genau wie class 3, jedoch mit einem zusätzlichen Limit basierend auf einer Benutzerkennung, was nur im Zusammenhang mit einer Authentifizierung angewandt werden kann
class 5 Anfragen, welche gruppiert mit einem „tag“ versehen, in einer „externen ACL hinterlegt sind

Angabe unter welchen Umständen der delay_pool 1 zum tragen kommt bzw. welche ACL auf diesen delay_pool Anwendung findet und vor allem auch welche nicht!:

delay_access 1 allow delay_pool_user1
delay_access 1 deny all

Angabe der Bandbreitenbeschränkung für den delay_pool 1:

delay_parameters 1 8000/8000

:!: HINWEIS - Die Parameter sind wie folgt aufgebaut:

Parameter Erklärung
1 delay_pool (Nummer)
8000/8000 „restore“/„maximum“

:!: HINWEIS - Erklärung zur Angabe „restore“/„maximum“:

  • „restore“ in Byte, bezeichnet nach wie vielen Byte pro Zeiteinheit (1 Sekunde), der Angeforderte (Download, URL usw.) - auf die Byte Angabe, hier 8000, begrenzt wird = 8k pro Sekunde.
  • * „maximum“ in Byte, bezeichnet nach wie vielen Byte - ohne Zeitbeschränkung, der Angeforderte (Download, URL usw.) - auf die Byte Angabe, hier 8000, begrenzt wird = 8k pro Anfrage.

Squid hinter einem DansGuardian

Fall der Squid hinter einem Content-Filter (Inhaltsfilter für Web-Seiten) wie DansGuardian betrieben wird, sind einige Dinge zu beachten:

Log-Schreibung

Falls der Squid hinter einem DansGuardian der Proxy-Server ist, ist in der Log-Datei /var/log/squid/access.log als absendende IP-Adresse nur noch die IP-Adresse des DansGuardian zu sehen. Dies kann mit einer Konfiguration in der Konfiguratiosdatei /etc/squid/squid.conf und der Funktion follow_x_forwarded_for korrigiert werden. Der Eintrag lautet:

follow_x_forwarded_for allow localhost
follow_x_forwarded_for allow localnets

Starten des squid-Daemons

Bevor der Proxy-Server Squid in den Lastbetrieb genommen wird, sollten noch die „Swap Directories“ mit nachfolgendem Befehl angelegt werden.

# squid -z
2011/10/07 17:15:44| Creating Swap Directories

Die „Swap Directories“ dienen zum „caching“ / zwischenspeichern von statischen „content“ / Seiteninhalten, welche der Proxy-Server ohne erneutes Anfragen beim eigentlichen Ziel-Server für eine gewisse Zeit, eben aus diesem Speicher, an den Browser zur Anzeige übergibt. Dies vermindert den Netzwerkverkehr nach außen und die Geschwindigkeit der anzuzeigenden Seiten nach innen!

Um den Proxy-Server Squid zu starten kann folgender Befehl angewandt werden:

# service squid start
Starting squid: .                                          [  OK  ]

Eine Überprüfung ob der Start des Proxy-Servers Squid erfolgreich war kann mit folgendem Befehl durchgeführt werden, welcher nachfolgende Ausgabe erzeugen sollte:

# netstat -tulpen | grep squid
tcp        0      0 0.0.0.0:3128                0.0.0.0:*                   LISTEN      0          16076      6523/(squid)        
udp        0      0 0.0.0.0:50934               0.0.0.0:*                               23         15863      6523/(squid)

Die Ausgabe in der Log-Datei, hier /var/log/squid/cache.log sollte folgendermaßen aussehen:

2011/10/07 17:20:52| Starting Squid Cache version 3.1.4 for x86_64-unknown-linux-gnu...
2011/10/07 17:20:52| Process ID 6596
2011/10/07 17:20:52| With 1024 file descriptors available
2011/10/07 17:20:52| Initializing IP Cache...
2011/10/07 17:20:52| DNS Socket created at 0.0.0.0, FD 7
2011/10/07 17:20:52| Adding domain dmz.tachtler.net from /etc/resolv.conf
2011/10/07 17:20:52| Adding domain intra.tachtler.net from /etc/resolv.conf
2011/10/07 17:20:52| Adding domain tachtler.net from /etc/resolv.conf
2011/10/07 17:20:52| Adding nameserver 10.0.0.20 from /etc/resolv.conf
2011/10/07 17:20:52| helperOpenServers: Starting 3/3 'squid_ldap_auth' processes
2011/10/07 17:20:52| User-Agent logging is disabled.
2011/10/07 17:20:52| Referer logging is disabled.
2011/10/07 17:20:53| Unlinkd pipe opened on FD 18
2011/10/07 17:20:53| Local cache digest enabled; rebuild/rewrite every 3600/3600 sec
2011/10/07 17:20:53| Store logging disabled
2011/10/07 17:20:53| Swap maxSize 0 + 262144 KB, estimated 20164 objects
2011/10/07 17:20:53| Target number of buckets: 1008
2011/10/07 17:20:53| Using 8192 Store buckets
2011/10/07 17:20:53| Max Mem  size: 262144 KB
2011/10/07 17:20:53| Max Swap size: 0 KB
2011/10/07 17:20:53| Using Least Load store dir selection
2011/10/07 17:20:53| Set Current Directory to /var/spool/squid
2011/10/07 17:20:53| Loaded Icons.
2011/10/07 17:20:53| Accepting  HTTP connections at 0.0.0.0:3128, FD 19.
2011/10/07 17:20:53| HTCP Disabled.
2011/10/07 17:20:53| Squid modules loaded: 0
2011/10/07 17:20:53| Adaptation support is off.
2011/10/07 17:20:53| Ready to serve requests.
2011/10/07 17:20:54| storeLateRelease: released 0 objects

Um den Proxy-Server Squid zu stoppen kann folgender Befehl angewandt werden:

# service squid stop
Stopping squid: ................                           [  OK  ]

Cache Manager Interface

Squid liefert ein recht einfach zu bedienendes und sehr aussagekräftiges Webinterface mit, das Cache Manager Interface (CMI).

Das CMI ist ein CGI (Common Gateway Interface). Dieses CGI kann auf einen beliebigen Webserver installiert werden. Voraussetzung: Der Webserver unterstützt CGI-Funktionalität und es besteht eine Netzverbindung zum Proxyserver.

Konfiguration CMI

Um das CMI nutzen zu können, muss zum einen das CGI auf einem Webserver installiert werden und die nötigen Optionen in der Konfigurationsdatei /etc/squid/squid.conf angepasst werden.

Installation des CMI

Die Installation des CMI wurde bereits durch die Installation des squid an sich selbst durch das RPM von CentOS durchgeführt. Es befindet sich eine Konfigurationsdatei des, hier Apache Webserver's, im folgenden Verzeichnis

  • /etc/httpd/conf.d/squid.conf

Der Inhalt der Datei sieht nach der Installation wie folgt aus:

#
# This is /etc/httpd/conf.d/squid.conf
#
 
ScriptAlias /Squid/cgi-bin/cachemgr.cgi /usr/lib64/squid/cachemgr.cgi
 
# Only allow access from localhost by default
<Location /Squid/cgi-bin/cachemgr.cgi>
 order allow,deny
 allow from localhost.localdomain
 # Add additional allowed hosts as needed
 # allow from .example.com
</Location>

Der Aufruf des Scripts kann grundsätzlich durch folgende Eingabe im Browser erfolgen:

http://localhost/Squid/cgi-bin/cachemgr.cgi

Konfiguration squid.conf

In der Konfigurationsdatei squid.conf finden Sie in der Standardkonfiguration eine Access-Liste mit dem Namen manager:

acl manager proto cache_object 
Diese Access-Liste vom Typ proto beinhaltet das Protokoll cache_object. Über dieses Squid-eigene Protokoll werden die Zugriffe des CMI abgehandelt.

Die Zugriffe auf den Cachemanager erfolgen über den HTTP-Port. Daher wird der Zugriff auch über http_access geregelt. In der Standardkonfiguration ist nur dem lokalen Server selbst (localhost) der Zugriff erlaubt:

http_access allow manager localhost 
http_access deny manager 
Wenn das CMI auch von anderen Clients genutzt werden soll, muss diese entsprechend wie nachfolgend dargestellt freigeben werden:
http_access allow manager localhost 
http_access allow manager localnet
http_access deny manager

Sofern noch nicht geschehen, sollten Sie noch ein Passwort für den Zugriff vergeben.

cachemgr_passwd disable shutdown offline_toggle 
cachemgr_passwd bekannt info 
cachemgr_passwd geheim all 
:!: Die Passwörter werden im Klartext in der Konfigurationsdatei abgelegt. Sie sind damit kaum geschützt.

Eine Passwort-Abfrage ist im obigen Beispiel für die Funktion shutdown abgeschaltet. Für die Funktionen info und all werden jeweils separate Passwörter vergeben!

SquidAnalyzer

SquidAnalyzer untersucht die Log-Datei /var/log/squid/access.log im Standard-Log-Format von Squid und erstellt Statistiken und Reports über Zugriffe, Bytes, Benutzer, Netze, Liste von URL's und Listen von Domains. Die Auswertungen orientieren sich an den Benutzern und an der Bandbreite des installierten Squid.

:!: WICHTIG !!! - Die Log-Auswertung erfolgt nur dann, wenn das Log-Format squid ist. Andere Log-Formate wie z.B.

  • squidmime
  • common
  • combined

:!: werden NICHT unterstützt !!!

Voraussetzungen SquidAnalyzer

Als Voraussetzung für die Installation von SquidAnalyzer sind folgende Komponenten erforderlich:

Herunterladen SquidAnalyzer

Di Programmdateien von SquidAnalyzer können unter folgendem Link heruntergeladen werden:

Installation Systemvoraussetzungen SquidAnalyzer

Zur Installation eines SquidAnalyzer werden nachfolgende Pakete benötigt:

  • perl - ist im base-Repository von CentOS enthalten –> :!: HINWEIS - Meist bereits installiert !!!
  • perl-ExtUtils-MakeMaker - ist im base-Repository von CentOS enthalten
  • :!: ab Version 5.1 –> perl-Time-HiRes - ist im base-Repository von CentOS enthalten
  • make - ist im base-Repository von CentOS enthalten

installiert werden.

Mit nachfolgendem Befehl, werden die Pakete installiert:

# yum install perl-ExtUtils-MakeMaker make
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * base: ftp.plusline.de
 * extras: ftp.plusline.de
 * rpmforge: ftp-stud.fht-esslingen.de
 * updates: ftp.plusline.de
1 packages excluded due to repository priority protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package make.x86_64 1:3.81-19.el6 set to be updated
---> Package perl-ExtUtils-MakeMaker.x86_64 0:6.55-115.el6 set to be updated
--> Processing Dependency: perl(Test::Harness) for package: perl-ExtUtils-MakeMaker-6.55-115.el6.x86_64
--> Processing Dependency: perl-devel for package: perl-ExtUtils-MakeMaker-6.55-115.el6.x86_64
---> Package perl-Test-Harness.x86_64 0:3.17-115.el6 set to be updated
---> Package perl-devel.x86_64 4:5.10.1-115.el6 set to be updated
--> Processing Dependency: perl(ExtUtils::ParseXS) for package: 4:perl-devel-5.10.1-115.el6.x86_64
--> Running transaction check
---> Package perl-ExtUtils-ParseXS.x86_64 1:2.2003.0-115.el6 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                    Arch      Version                 Repository   Size
================================================================================
Installing:
 make                       x86_64    1:3.81-19.el6           base        389 k
 perl-ExtUtils-MakeMaker    x86_64    6.55-115.el6            base        289 k
Installing for dependencies:
 perl-ExtUtils-ParseXS      x86_64    1:2.2003.0-115.el6      base         41 k
 perl-Test-Harness          x86_64    3.17-115.el6            base        228 k
 perl-devel                 x86_64    4:5.10.1-115.el6        base        419 k

Transaction Summary
================================================================================
Install       5 Package(s)
Upgrade       0 Package(s)

Total download size: 1.1 M
Installed size: 3.4 M
Is this ok [y/N]: y
Downloading Packages:    
(1/5): make-3.81-19.el6.x86_64.rpm                     | 389 kB     00:00     
(2/5): perl-ExtUtils-MakeMaker-6.55-115.el6.x86_64.rpm | 289 kB     00:00     
(3/5): perl-ExtUtils-ParseXS-2.2003.0-115.el6.x86_64.r |  41 kB     00:00         
(4/5): perl-Test-Harness-3.17-115.el6.x86_64.rpm       | 228 kB     00:00     
(5/5): perl-devel-5.10.1-115.el6.x86_64.rpm            | 419 kB     00:00     
--------------------------------------------------------------------------------
Total                                           499 kB/s | 3.6 MB     00:07     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : 1:perl-ExtUtils-ParseXS-2.2003.0-115.el6.x86_64         1/5 
  Installing     : perl-ExtUtils-MakeMaker-6.55-115.el6.x86_64             2/5 
  Installing     : 4:perl-devel-5.10.1-115.el6.x86_64                      3/5 
  Installing     : perl-Test-Harness-3.17-115.el6.x86_64                   4/5 
  Installing     : 1:make-3.81-19.el6.x86_64                               5/5 

Installed:                                               
  make.x86_64 1:3.81-19.el6                                                     
  perl-ExtUtils-MakeMaker.x86_64 0:6.55-115.el6                                 

Dependency Installed:                                                   
  perl-ExtUtils-ParseXS.x86_64 1:2.2003.0-115.el6                               
  perl-Test-Harness.x86_64 0:3.17-115.el6                                       
  perl-devel.x86_64 4:5.10.1-115.el6                                            

Complete!

:!: Ab SquidAnalyzer Version 5.1

# yum install perl-Time-HiRes
Loaded plugins: priorities
1309 packages excluded due to repository priority protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package perl-Time-HiRes.x86_64 4:1.9721-136.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                Arch          Version                 Repository   Size
================================================================================
Installing:
 perl-Time-HiRes        x86_64        4:1.9721-136.el6        base         48 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 48 k
Installed size: 56 k
Is this ok [y/N]: y
Downloading Packages:
perl-Time-HiRes-1.9721-136.el6.x86_64.rpm                |  48 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : 4:perl-Time-HiRes-1.9721-136.el6.x86_64                      1/1
  Verifying  : 4:perl-Time-HiRes-1.9721-136.el6.x86_64                      1/1

Installed:
  perl-Time-HiRes.x86_64 4:1.9721-136.el6

Complete!

Eine Auflistung der jeweiligen Inhalt der Pakete kann mit dem Befehl:

# rpm -qil <Paketname, ohne Versionsnummern und ohne Architekturangaben>
durchgeführt werden.

Installation SquidAnalyzer

Die Datei squidanalyzer-6.1.tar.gz muss zuerst mit folgendem Befehl Entpackt werden:

# tar xfzv /tmp/squidanalyzer-6.1.tar.gz
squidanalyzer-6.1/
squidanalyzer-6.1/ChangeLog
squidanalyzer-6.1/INSTALL
squidanalyzer-6.1/etc/
squidanalyzer-6.1/etc/included
squidanalyzer-6.1/etc/user-aliases
squidanalyzer-6.1/etc/squidanalyzer.conf
squidanalyzer-6.1/etc/network-aliases
squidanalyzer-6.1/etc/excluded
squidanalyzer-6.1/resources/
squidanalyzer-6.1/resources/images/
squidanalyzer-6.1/resources/images/domain.png
squidanalyzer-6.1/resources/images/info.png
squidanalyzer-6.1/resources/images/network.png
squidanalyzer-6.1/resources/images/cursor.png
squidanalyzer-6.1/resources/images/back-arrow.png
squidanalyzer-6.1/resources/images/logo-squidanalyzer.png
squidanalyzer-6.1/resources/images/user.png
squidanalyzer-6.1/resources/images/up-arrow.png
squidanalyzer-6.1/resources/flotr2.js
squidanalyzer-6.1/resources/squidanalyzer.css
squidanalyzer-6.1/resources/sorttable.js
squidanalyzer-6.1/README
squidanalyzer-6.1/doc/
squidanalyzer-6.1/doc/SquidAnalyzer.pod
squidanalyzer-6.1/META.yml
squidanalyzer-6.1/SquidAnalyzer.pm
squidanalyzer-6.1/TODO
squidanalyzer-6.1/MANIFEST
squidanalyzer-6.1/Makefile.PL
squidanalyzer-6.1/squid-analyzer
squidanalyzer-6.1/lang/
squidanalyzer-6.1/lang/ru_RU.txt
squidanalyzer-6.1/lang/fr_FR.txt
squidanalyzer-6.1/lang/de_DE.txt
squidanalyzer-6.1/lang/pl_PL.txt
squidanalyzer-6.1/lang/es_ES.txt
squidanalyzer-6.1/lang/en_US.txt
squidanalyzer-6.1/lang/uk_UA.txt
squidanalyzer-6.1/lang/cs_CZ.txt
squidanalyzer-6.1/lang/pt_BR.txt
squidanalyzer-6.1/packaging/
squidanalyzer-6.1/packaging/RPM/
squidanalyzer-6.1/packaging/RPM/squidanalyzer.spec

Das so erhaltene Verzeichnis, hier z.B. /tmp/squidanalyzer-6.1 beinhaltet eine Datei mit dem Namen INSTALL. Die hier aufgeführte Beschreibung dient zur Installation des SquidAnalyzer.

Die Schritte zusammengefasst sollten wie folgt aussehen:

# cd /tmp/squidanalyzer-6.1

# perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for SquidAnalyzer
Done...

Now type 'make && make install'

# make
cp SquidAnalyzer.pm blib/lib/SquidAnalyzer.pm
cp squid-analyzer blib/script/squid-analyzer
/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/squid-analyzer
Manifying blib/man3/squidanalyzer.3

# make install
Installing /usr/share/perl5/vendor_perl/SquidAnalyzer.pm
Installing /usr/share/man/man3/squidanalyzer.3
Installing /usr/bin/squid-analyzer
sh install_all.sh

-----------------------------------------------------------------------------
1. Modify your httpd.conf to allow access to HTML output like follow:
        Alias /squidreport /var/www/squidanalyzer
        <Directory /var/www/squidanalyzer>
            Options -Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order deny,allow
            Deny from all
            Allow from 127.0.0.1
        </Directory>
2. If necessary, give additional host access to SquidAnalyzer in httpd.conf.
   Restart and ensure that httpd is running.
3. Browse to http://my.host.dom/squidreport/ to ensure that things are working
   properly.
4. Setup a cronjob to run squid-analyzer daily:

     # SquidAnalyzer log reporting daily
     0 2 * * * /usr/local/bin/squid-analyzer > /dev/null 2>&1

or run it manually. For more information, see /README file.
-----------------------------------------------------------------------------

Appending installation info to /usr/lib64/perl5/perllocal.pod

Konfiguration SquidAnalyzer

Der erste Schritt zur Konfiguration beginnt mit dem Anpassen der Konfigurationsdatei

  • /etc/squidanalyzer/squidanalyzer.conf

/etc/squidanalyzer/squidanalyzer.conf

Die Konfigurationsdatei /etc/squidanalyzer/squidanalyzer.conf könnte wie folgt aussehen:

####
# This file is the default configuration file for SquidAnalyzer
# Edit it to match your needs and copy it under /etc/squidanalyzer.conf
#####
 
# Path where SquidAnalyzer should dump all HTML and images files.
# Choose a path that can be read by a Web browser
Output  /var/www/squidanalyzer
 
# The URL of the SquidAnalyzer javascript, HTML and images files.
# Tachtler
# default: WebUrl       /squidreport
WebUrl /
 
# Set the path to the Squid log file
# Tachtler
# default: LogFile      /var/log/squid3/access.log
LogFile /var/log/squid/access.log
 
# If you want to use DNS name instead of client Ip address as username enable
# this directive. When you don't have authentication, the username is set to
# the client ip address, this allow you to use the DNS name instead.
# Note that you must have a working DNS resolution and that it can really slow
# down the generation of reports.
UseClientDNSName        0
 
# If you have enabled UseClientDNSName and have lot of ip addresses that do
# not resolve you may want to increase the DNS lookup timeout. By default
# SquidAnalyzer will stop to lookup a DNS name after 0.0001 second (100 ms).
DNSLookupTimeout        0.0001
 
# Set the file containing network alias name. Network are
# show as Ip addresses so if you want to display name instead
# create a file with this format :
# LOCATION_NAME IP_NETWORK_ADDRESS
# Separator must be a tabulation
NetworkAlias    /etc/squidanalyzer/network-aliases
 
# Set the file containing user alias name. If you don't have auth_proxy
# enable user are seen as Ip addresses, or if you want to replace login
# name by full user name, create a file with this format :
# FULL_USERNAME IP_ADDRESS || LOGIN_NAME
# Separator must be a tabulation
UserAlias       /etc/squidanalyzer/user-aliases
 
# How do we sort Network, User and Url report screen
# Value can be: bytes, hits or duration. Default is bytes.
OrderNetwork    bytes
OrderUser       bytes
OrderUrl        bytes
 
# How do we sort Mime types report screen
# Value can be: bytes or hits. Default is bytes.
OrderMime       bytes
 
# Should we display user details. This will show all URL read
# by user. Take care to have enougth space disk for large user.
UrlReport       1
 
# Run in quiet mode or print debug information
QuietMode       1
 
# Cost of the bandwith per Mb. If you want to generate invoice per Mb
# for bandwith traffic this can help you. Value 0 mean no cost.
# Tachtler
# default: CostPrice    0.5
CostPrice       0.01
 
# Currency of the bandwith cost
Currency        &euro;
 
# Top number of url to show
TopNumber       100
 
# Path to the file containing client ip addresses, network ip address,
# and/or auth login to exclude from report
Exclude /etc/squidanalyzer/excluded
 
# Path to the file containing client ip addresses, network ip address,
# and/or auth login to include into the report. Other entries will be
# excluded by default.
Include /etc/squidanalyzer/included
 
# Translation Language file to use (fr_FR.txt, pt_BR.txt, es_ES.txt,
# en_US.txt, ru_RU.txt, uk_UA.txt, cs_CZ.txt, pl_PL.txt and de_DE.txt).
# Default to:
#Lang           /etc/squidanalyzer/lang/en_US.txt
# Tachtler
Lang            /etc/squidanalyzer/lang/de_DE.txt
 
# Date format use to display date (year = %y, month = %m and day = %d)
# You can also use %M to replace month by its 3 letters abbreviation.
DateFormat      %y-%m-%d
 
# Custom Footer. Must be a path to a text file containing HTML code that
# will be placed at the bottom of each page just before the end if the
# body tag. Default is defined internally if this directive is not set
# to a valid file.
#FooterFile      /etc/squidanalyzer/lang/fr_FR_footer.txt
# Tachtler
FooterFile      /etc/squidanalyzer/lang/de_DE_footer.txt
 
#â¯Set this to 1 if you want to anonymize all user login. The username
# will be replaced by an unique id that change at each squid-analyzer
# run. Default disable.
AnonymizeLogin  0
 
# Adds peer cache hit (CD_SIBLING_HIT) to be taken has local cache hit.
# Enabled by default, you must disabled it if you don't want to report
# peer cache hit onto your stats.
SiblingHit      1
 
# Set the default unit for transfert size. Default is BYTES, other possible
# values are KB, MB and GB
TransfertUnit   BYTES
 
# Minimum percentage of data in pie's graphs to not be placed in the others item.
MinPie          2
 
# Set this to your locale to display generated date in your language. Default
# is to use the current locale of the system. If you want date in German for
# example, set it to de_DE. For french, fr_FR should do the work.
# Tachtler
# default: #Locale         en_US
Locale         de_DE
 
# By default SquidAnalyzer is saving current collected statistics each time
# a new hour is found in log file. Most of the time this is enough but if
# you have huge log file and don't have enough memory this will slow down the
# parser by forcing Perl to use temporaries files. Use lower value following
# your memory and the size of your log file, on very huge log file with lot of
# requests/seconde a value of 30 minutes (1800) or less should help.
WriteDelay      3600
 
# Use this directive to show the top N users that look at an URL or a domain.
# Set it to 0 to disable this feature.
TopUrlUser      10
 
# This directive allow you to replace the SquidAnalyze logo by your custom
# logo. The default value is defined as follow:
# <a href="$self->{WebUrl}">
# <img src="$self->{WebUrl}images/logo-squidanalyzer.png" title="SquidAnalyzer $VERSION" border="0">
# </a> SquidAnalyzer
# Feel free to define your own header but take care to not break current design.
#CustomHeader   <a href="http://my.isp.dom/"><img src="http://my.isp.dom/logo.png" title="My ISP link" border="0" width="100" height="110"></a> My ISP Company
 
# This directive allow exclusion of some unwanted methods in report statistics
# like HEAD, POST, CONNECT, etc. Can be a comma separated list of methods.
#ExcludedMethods        HEAD
 
# This directive allow exclusion of some unwanted mimetypes in report statistics
# like text/html, text/plain, or more generally text/*, etc. Can be a comma separated
# list of perl regular expression.
#ExcludedMimes  text/.*,image/.*

/etc/squidanalyzer/excluded

Die Konfigurationsdatei /etc/squidanalyzer/excluded könnte wie folgt aussehen:

#------------------------------------------------------------------------------
# File used to defined which client ip address, network with netmask, network
# regex address, auth login and URI to exclude from the report.
#
# You can define one by line exclusion by specifying first the type of the
# exclusion (USER, CLIENT or URI) and a space separated list of valid regex.
# You can also use the NETWORK type to define network address with netmask
# using the CIDR notation: xxx.xxx.xxx.xxx/n
#
# See example bellow:
#------------------------------------------------------------------------------
#NETWORK        192.168.1.0/24 10.10.0.0/16
#CLIENT         192\.168\.1\.2
#CLIENT         10\.169\.1\.\d+ 192\.168\.10\..*
#USER           myloginstr
#USER           guestlogin\d+ guestdemo
#URI            http:\/\/myinternetdomain.dom.*
#URI            .*\.webmail\.com\/.*\/login\.php.*
# Tachtler
USER    root

/etc/squidanalyzer/included

Die Konfigurationsdatei /etc/squidanalyzer/included könnte wie folgt aussehen:

#------------------------------------------------------------------------------
# File used to defined which client ip address, network with netmask, network
# regex address, auth login and URI to include in the report. All other entries
# will be exclude, this is the opposite of the excluded file.
#
# You can define one by line inclusion by specifying first the type of the
# inclusion (USER or CLIENT) and a space separated list of valid regex.
# You can also use the NETWORK type to define network address with netmask
# using the CIDR notation: xxx.xxx.xxx.xxx/n
#
# See example bellow:
#------------------------------------------------------------------------------
#NETWORK	192.168.1.0/24 10.10.0.0/16
#CLIENT		192\.168\.1\.2 
#CLIENT		10\.169\.1\.\d+ 192\.168\.10\..*
#USER		myloginstr
#USER		guestlogin\d+ guestdemo

/etc/squidanalyzer/network-aliases

Die Konfigurationsdatei /etc/squidanalyzer/network-aliases könnte wir folgt aussehen:

#-------------------------------------------------------------------------------
# Squid Analyzer Network Alias configuration file
# FORMAT: NETWORK_NAME  NETWORK_REGEX1,NETWORK_REGEX2,...
# Field separator must be one or more tabulation.
# You can also use the CIDR notation:
# FORMAT:  NETWORK_NAME xxx.xxx.xxx.xxx/n
#
# See examples below.
#
#-------------------------------------------------------------------------------
#Home Network           192\.168\.1\.
#Associated Networks    ^10\.169\.[2-4]\.,^10\.169\.[7-9]\.
#ClassB Network         10.172.0.0/16
#ClassC Network         192.168.1.0/24
# Tachtler
EDMZ    88\.217\.171\.167
XDMZ    192\.168\.1\.
DMZ     192\.168\.0\.
Intranet           192\.168\.10\.

/etc/squidanalyzer/user-aliases

Die Konfigurationsdatei /etc/squidanalyzer/user-aliases könnte wir folgt aussehen:

#-------------------------------------------------------------------------------
# Squid Analyzer User Alias configuration file
# FORMAT : FULL_USER_NAME       IP_ADDRESS|LOGIN_NAME,LOGIN_REGEX
# Field separator must be one or more tabulation. Space in user name are not
# allowed. See example bellow
#-------------------------------------------------------------------------------
#MyFirstName    mylogin,192.168.1.12
#MyOtherNames   logon\d+
# Tachtler
Klaus   klaus

cron-job SquidAnalyzer

Nachfolgender Befehl legt eine Datei mit dem Namen:

  • squidanalyzer-update.sh

im Verzeichnis

  • /etc/cron.daily

an

# touch /etc/cron.daily/squidanalyzer-update.sh

Der Inhalt dieser Datei könnte wie folgt aussehen:

#!/bin/sh
/usr/local/bin/squid-analyzer --configfile /etc/squidanalyzer/squidanalyzer.conf /var/log/squid/access.log 

Damit die Datei auch via cron-job ausgeführt werden kann müssen mit dem nachfolgendem Befehl die entsprechenden Dateirecht noch angepasst werden:

# chmod +x /etc/cron.daily/squidanalyzer-update.sh

:!: HIWNEIS - Einmal pro Tag/Nacht werden via cron-job die Datensätze der Statistiken aktualisiert !!!

Ausführen von SquidAnalyzer

Um das Perl-Script ausführen zu können, kann mit folgendem Befehl in das Verzeichnis /usr/local/bin gewechselt werden:

# cd /usr/local/bin

Das Perl-Script wird mit folgendem Befehl ausgeführt:

# ./squid-analyzer --rebuild --configfile /etc/squidanalyzer/squidanalyzer.conf /var/log/squid/access.log

Nach der Ausführung des oben genannten Befehls, kann mit nachfolgendem Befehl die korrekte Erstellung der benötigten Komponenten des SquidAnalyzer überprüft werden:

# ls -la /var/www/squidanalyzer/
total 180
drwxr-xr-x 13 root root   4096 Dec  1  2012 2012
drwxr-xr-x 16 root root   4096 Dec  1 08:01 2013
drwxr-xr-x 10 root root   4096 May 16 08:46 2014
-rw-r--r--  1 root root   1406 Nov  2  2011 favicon.ico
-rw-r--r--  1 root root 102194 May 16 08:30 flotr2.js
drwxr-xr-x  2 root root   4096 May 16 08:30 images
-rw-r--r--  1 root root   3340 May 16 08:48 index.html
-rw-r--r--  1 root root  23628 Sep 12  2012 logo-squidanalyzer.png
-rw-r--r--  1 root root      0 Nov  2  2011 robots.txt
-rw-r--r--  1 root root  17262 May 16 08:30 sorttable.js
-rw-r--r--  1 root root   7604 May 16 08:30 squidanalyzer.css
-rw-r--r--  1 root root     14 May 16 08:46 SquidAnalyzer.current

Apache VHOST für SquidAnalyzer

Nachstehend soll ein möglicher virtueller Host welcher unter dem Apache HTTP Server realisiert werden kann für den Web-Anwendungsbereich des SquidAnalyzer als Beispiel dargestellt werden.

Nachfolgende Konfigurationsdatei in nachfolgendem Verzeichnis und mit nachfolgendem Namen

  • /etc/httpd/conf.d/squidanalyzer.conf

könnte wie folgt realisiert werden:

NameVirtualHost *:80
 
#
# squidanalyzer.tachtler.net (SquidAnalyzer)
#
<VirtualHost _default_:80>
        ServerAdmin webmaster@tachtler.net
        ServerName squidanalyzer.tachtler.net
        ServerAlias www.squidanalyzer.tachtler.net
        ServerPath /
        DocumentRoot "/var/www/squidanalyzer"
        <Directory "/var/www/squidanalyzer">
                Options -Indexes FollowSymLinks MultiViews
                # Tachtler (enable for .htaccess file support)
                # AllowOverride AuthConfig
                AllowOverride None
                # Tachtler (enable for unlimited access)
                Order allow,deny
                Allow from all
        </Directory>
 
        DirectoryIndex index.html
 
        ErrorLog logs/squidanalyzer_error.log
        CustomLog logs/squidanalyzer_access.log combined 
</VirtualHost>

Ein Aufruf kann dann über die URL http://www.squidanalyzer.tachtler.net erfolgen!

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/squid_centos_6.txt · Zuletzt geändert: 2014/11/01 08:43 von klaus