Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:squid [23.09.2010 15:04. ] – neu angelegt, vkopie der bisherigen Seite erstellt djangocentos:squid [20.04.2018 09:08. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== SQUID - Installation und Konfiguration ======
 +{{:centos:squid-logo.png|Squid Proxy Logo}}\\
 +Im ersten Schritt installieren wir den Proxy-Server **Squid**.
 +===== Installation =====
 +Wie soll es anders sein, funktioniert die Installation der benötigten Programme im gewohnten Rahmen via **yum**, welches wir als User **root** ausführen.
 +   # su -
 +
 +   # yum install squid
 +Was uns das Paket **squid** alles mitbringt offenbart eine Blick, nach erfolgter Installation des Paketes, in das **RPM**.
 +<code># rpm -iql squid
 +Name        : squid                        Relocations: (not relocatable)
 +Version     : 2.6.STABLE21                      Vendor: CentOS
 +Release     : 3.el5                         Build Date: Mi 21 Jan 2009 05:15:13 CET
 +Install Date: Do 10 Dez 2009 14:00:30 CET      Build Host: builder16.centos.org
 +Group       : System Environment/Daemons    Source RPM: squid-2.6.STABLE21-3.el5.src.rpm
 +Size        : 3690075                          License: GPL
 +Signature   : DSA/SHA1, Mo 09 Mär 2009 02:49:14 CET, Key ID a8a447dce8562897
 +Summary     : Der Proxy-Cache-Server Squid.
 +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/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/errors
 +/etc/squid/icons
 +/etc/squid/mib.txt
 +/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/lib/squid
 +/usr/lib/squid/cachemgr.cgi
 +/usr/lib/squid/digest_pw_auth
 +/usr/lib/squid/diskd-daemon
 +/usr/lib/squid/fakeauth_auth
 +/usr/lib/squid/getpwname_auth
 +/usr/lib/squid/ip_user_check
 +/usr/lib/squid/msnt_auth
 +/usr/lib/squid/ncsa_auth
 +/usr/lib/squid/ntlm_auth
 +/usr/lib/squid/pam_auth
 +/usr/lib/squid/sasl_auth
 +/usr/lib/squid/smb_auth
 +/usr/lib/squid/smb_auth.pl
 +/usr/lib/squid/smb_auth.sh
 +/usr/lib/squid/squid_ldap_auth
 +/usr/lib/squid/squid_ldap_group
 +/usr/lib/squid/squid_unix_group
 +/usr/lib/squid/unlinkd
 +/usr/lib/squid/wbinfo_group.pl
 +/usr/lib/squid/yp_auth
 +/usr/sbin/cossdump
 +/usr/sbin/squid
 +/usr/sbin/squidclient
 +/usr/share/doc/squid-2.6.STABLE21
 +...
 +
 +...
 +/var/log/squid
 +/var/spool/squid</code>
 +===== Konfiguration des Proxy's =====
 +Die Konfiguration des Proxyservers erfolgt über die zentrale Konfigurationsdatei //**/etc/squid/squid.conf**//. Mit dem Editor unserer Wahl z.B. **vim** bearbeiten wir nun die Konfigurationsdatei des squid's:
 +   # vim /etc/squid/squid.conf
 +==== Authentifizierung mit NCSA-AUTH ====
 +Damit sich jeder Nutzer an jedem Rechner setzen und Verbindungen zum Internet aufbauen kann, aktivieren wir die **//NCSA-style Username und Passwort Authentifizierung//**. Somit haben wir später die Möglichkeit zur Überprüfung der besuchten Seiten.
 +
 +Zu erst überprüfen wir, ob der entsprechende Authentification-Helper vorhanden und installiert ist.
 +   # rpm -ql squid | grep ncsa_auth
 +<code>/usr/lib/squid/ncsa_auth
 +/usr/share/man/man8/ncsa_auth.8.gz</code>
 +
 +Dann legen wir uns ein entsprechendes Passwortfile (mit dem User bofh) an:
 +<code>htpasswd -c /etc/squid/passwd bofh</code>
 +Die Option **-c** verwenden wir, da das File noch nicht existiert und wir ein entsprechendes anlegen wollen. Alle weiteren User werden dann mit
 +<code>htpasswd /etc/squid/passwd django</code>
 +angelegt. 
 +
 +Zu guter Letzt konfigurieren wir nun **nsca_auth** für die Squid Autentifizierung in der Konfigurationsdatei **/etc/squid/squid.conf** des Proxyservers.
 +Aktivierung der NSCA_Authentifizierung:
 +<code>auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
 +auth_param basic children 4
 +auth_param basic realm Squid proxy-caching web server
 +auth_param basic credentialsttl 2 hours
 +auth_param basic casesensitive off</code>
 +Aktivierung einer ACL für den Zugriff:
 +<code>acl ncsa_users proxy_auth REQUIRED
 +http_access allow ncsa_users</code>
 +Somit beschränkt sich das gesamte Konfigurationsfile auf folgende Einträge:
 +<code># egrep -v '(^#|^$)' /etc/squid/squid.conf
 +http_port 3128
 +hierarchy_stoplist cgi-bin ?
 +acl QUERY urlpath_regex cgi-bin \?
 +cache deny QUERY
 +acl apache rep_header Server ^Apache
 +broken_vary_encoding allow apache
 +logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st %Ss:%Sh
 +access_log /var/log/squid/access.log squid
 +auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
 +auth_param basic children 4
 +auth_param basic realm Squid proxy-caching web server
 +auth_param basic credentialsttl 2 hours
 +auth_param basic casesensitive off
 +refresh_pattern ^ftp:           1440    20%     10080
 +refresh_pattern ^gopher:        1440    0%      1440
 +refresh_pattern .                     20%     4320
 +acl all src 0.0.0.0/0.0.0.0
 +acl manager proto cache_object
 +acl localhost src 127.0.0.1/255.255.255.255
 +acl to_localhost dst 127.0.0.0/8
 +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
 +acl ncsa_users proxy_auth REQUIRED
 +http_access allow ncsa_users
 +http_access allow manager localhost
 +http_access deny manager
 +http_access deny !Safe_ports
 +http_access deny CONNECT !SSL_ports
 +http_access allow localhost
 +http_access deny all
 +http_reply_access allow all
 +icp_access allow all
 +coredump_dir /var/spool/squid</code> 
 +
 +==== Authentifizierung mit LDAP-AUTH ====
 +Weitaus komfortabler, da der zentrale LDAP-Verzeichnisdienst genutzt wird, läuft die Authentifizierung gegen unseren LDAP-Server ([[centos:open_ldap_server]]), den wir hoffentlich schon eingerichtet haben. Auch hier haben wir später die Möglichkeit zur Überprüfung der besuchten Seiten.
 +
 +Zu erst überprüfen wir, ob der entsprechende Authentification-Helper vorhanden und funktionsfähig ist.
 +   # /usr/lib/squid/squid_ldap_auth -b "dc=domain,dc=de" -f "uid=%s" -h ldap.domain.de -D "cn=System_User,dc=domain,dc=de" -W "/etc/squid/ldap_system_user_passwd"
 +
 +Anschließende geben wir folgende Werte ein:
 +**User-ID [Leerzeichen] Passwort**
 +also z.B.
 +<code>500 klausi-is-a-geek</code>
 +In der Logdatei unseres LDAP-server wird dann der Erfolg entsprechend quittiert:
 +<code>Feb  4 19:43:05 nss slapd[21642]: conn=58 fd=12 ACCEPT from IP=192.168.100.1:45681 (IP=0.0.0.0:389) 
 +Feb  4 19:43:05 nss slapd[21642]: conn=58 op=0 BIND dn="cn=System_User,dc=domain,dc=de" method=128 
 +Feb  4 19:43:05 nss slapd[21642]: conn=58 op=0 BIND dn="cn=System_user,dc=domain,dc=de" mech=SIMPLE ssf=0 
 +Feb  4 19:43:05 nss slapd[21642]: conn=58 op=0 RESULT tag=97 err=0 text= 
 +Feb  4 19:43:05 nss slapd[21642]: conn=58 op=1 SRCH base="dc=domain,dc=de" scope=2 deref=0 filter="(uid=500)" 
 +Feb  4 19:43:05 nss slapd[21642]: conn=58 op=1 SRCH attr=1.1 
 +Feb  4 19:43:05 nss slapd[21642]: conn=58 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text= 
 +Feb  4 19:43:05 nss slapd[21642]: conn=58 op=2 UNBIND 
 +Feb  4 19:43:05 nss slapd[21642]: conn=58 fd=12 closed</code>
 +Mit **err=0** wird uns der erfolgreiche Test quittiert.
 +
 +Im Gegensatz zur vorhergenannten Variante [[centos:squid#authentifizierung_mit_ncsa-auth]] brauchen wir keine eigene Nutzer-/Passwortdatei anlegen, da ja die zentrale LDAP-Datenbank genutzt wird. 
 +
 +Anschließend konfigurieren wir nun **ldap_auth** für die Squid Autentifizierung in der Konfigurationsdatei **/etc/squid/squid.conf** des Proxyservers.
 +Aktivierung der LDAP_Authentifizierung:
 +<code>auth_param basic program /usr/lib/squid/squid_ldap_auth -b "dc=domain,dc=de" -f "uid=%s" -h ldap.domain.de -D "cn=System_User,dc=domain,dc=de" -W /etc/squid/ldap_system_user_passwd
 +auth_param basic children 5
 +auth_param basic realm Squid-Proxyserver im SOHO-LAN bei nausch.org
 +auth_param basic credentialsttl 15 minutes
 +auth_param basic casesensitive off
 +</code>
 +Aktivierung einer ACL für den Zugriff:
 +<code>acl ldapauth proxy_auth REQUIRED
 +http_access allow ldapauth</code>
 +Somit beschränkt sich das gesamte Konfigurationsfile auf folgende Einträge:
 +<code># egrep -v '(^#|^$)' /etc/squid/squid.conf
 +http_port 3128
 +hierarchy_stoplist cgi-bin ?
 +acl QUERY urlpath_regex cgi-bin \?
 +cache deny QUERY
 +acl apache rep_header Server ^Apache
 +broken_vary_encoding allow apache
 +logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st %Ss:%Sh
 +access_log /var/log/squid/access.log squid
 +auth_param basic program /usr/lib/squid/squid_ldap_auth -b "dc=domain,dc=de" -f "uid=%s" -h ldap.domain.de -D "cn=System_User,dc=domain,dc=de" -W /etc/squid/ldap_system_user_passwd
 +refresh_pattern ^ftp:           1440    20%     10080
 +refresh_pattern ^gopher:        1440    0%      1440
 +refresh_pattern .                     20%     4320
 +acl all src 0.0.0.0/0.0.0.0
 +acl manager proto cache_object
 +acl localhost src 127.0.0.1/255.255.255.255
 +acl to_localhost dst 127.0.0.0/8
 +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
 +acl ldapauth proxy_auth REQUIRED
 +http_access allow ldapauth
 +http_access allow manager localhost
 +http_access deny manager
 +http_access deny !Safe_ports
 +http_access deny CONNECT !SSL_ports
 +http_access allow localhost
 +http_access deny all
 +http_reply_access allow all
 +icp_access allow all
 +coredump_dir /var/spool/squid
 +</code> 
 +Nach erfolgtem Start des squid (**service squid start**) sehen wir bei den Benutzeranmeldungen im squid.log (**/var/log/squid.log**) die erfolgreichen Authentifizierungen:
 +<code>Aug  6 22:44:45 nss slapd[5821]: conn=38 fd=21 ACCEPT from IP=192.168.1.1:52671 (IP=0.0.0.0:389) 
 +Aug  6 22:44:45 nss slapd[5821]: conn=38 op=0 SRCH base="dc=domain,dc=de" scope=2 deref=0 filter="(uid=django)" 
 +Aug  6 22:44:45 nss slapd[5821]: conn=38 op=0 SRCH attr=1.1 
 +Aug  6 22:44:45 nss slapd[5821]: conn=38 op=0 SEARCH RESULT tag=101 err=0 nentries=1 text= 
 +Aug  6 22:44:45 nss slapd[5821]: conn=38 op=1 BIND dn="uid=django,ou=People,dc=domain,dc=de" method=128 
 +Aug  6 22:44:45 nss slapd[5821]: conn=38 op=1 BIND dn="uid=django,ou=People,dc=domain,dc=de" mech=SIMPLE ssf=0 
 +Aug  6 22:44:45 nss slapd[5821]: conn=38 op=1 RESULT tag=97 err=0 text= 
 +Aug  6 22:44:45 nss slapd[5821]: conn=38 op=2 UNBIND 
 +Aug  6 22:44:45 nss slapd[5821]: conn=38 fd=21 closed 
 +Aug  6 22:44:45 nss slapd[5821]: connection_read(21): no connection! 
 +</code>
 +===== Starten des Squid-Proxys =====
 +Nun starten wir das erste mal unsere neuen Dienste und zwar zuerst den **squid**:
 +   # service squid start
 +   init_cache_dir /var/spool/squid... squid starten: .        [  OK  ]
 +===== automatisches Starten der Dienste beim Systemstart  =====
 +Damit der squid-Daemon automatisch bei jedem Systemstart startet, kann die Einrichtung der Start-Scripte über folgende Befehle erreicht werden:
 +   # chkconfig squid on
 +
 +Die Überprüfungung ob der Dienst (Daemon) squid auch wirklich bei jedem Systemstart automatisch mit gestartet werden, kann durch folgenden Befehle erreicht werden:
 +   # chkconfig --list | grep squid
 +   squid           0:Aus   1:Aus   2:Ein   3:Ein   4:Ein   5:Ein   6:Aus
 +
 +Wichtig sind jeweils die Schalter **on** bzw. **Ein** bei den Runleveln - **2 3 4 5**. 
 +====== Content- und Virenfilter mit Dansguardian und ClamAV ======
 +Die Konfiguration des Content- und Virenfilters mit Hilfe von [[http://www.dansguardian.org|Dansguardian]] und [[http://www.clamav.net|ClamAV]] ist auf den folgenden [[centos:proxy-_kontentfilter_mit_squid_und_dansguardian|Seiten]] beschrieben.
 +