Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:squid [03.08.2011 19:38. ]
django [Content- und Virenfilter mit Dansguardian und ClamAV]
centos:squid [20.04.2018 09:08. ] (aktuell)
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 .               ​0 ​      ​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 .               ​0 ​      ​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.
 +
  
  • centos/squid.txt
  • Zuletzt geändert: 20.04.2018 09:08.
  • (Externe Bearbeitung)