Home > Proxy, Server > Squid 3 mit AD Authentifizierung

Squid 3 mit AD Authentifizierung

Installtion Squid3 auf Ubuntu 10.04LTS:

sources.list anpassen:

Universe freischalten und folgende Quellen hinzufügen:

deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

GPG Keys für WEBMIN installieren:

cd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc

danach:

apt-get update + apt-get upgrade

Packete installieren:
webmin (Admin Oberfläche https://localhost:10000)
squid3
sarg (Reports für Auswertung Proxy)
ntp
ntpdate (als Zeitserver den Domänencontroller eintragen)
krb5-user (Kerberos)
winbind (Samba für Domänenbeitritt)

Sollte im Browser nach der Anmeldung an Webmin der referers geblockt werden (z.B. Mozilla Ref-Control)

/etc/webmin/config
referers_none=1 auf
referers_none=0 ändern

Für SQUID3 müssen die Pfade im Webmin Modul geändert werden.

Squid Konfiguration (alle Rechner in einem Subnetz)

Den Netzwerkport auf den Squid hört wird in der Datei in /etc/squid3/squid.conf eingestellt.

#  TAG: http_port
http_port 3128

Datenschutz:

Soll die Privatsphäre der Clients bewahrt werden wird eine Netzwerkmaske definiert, die dazu führt das die einzelnen Logeinträge nicht mehr dem Client zugeordnet werden. Eine Netzwerkmaske von 255.255.255.0 führt an der letzten Stelle zur Ausgabe „0“ an der IP Adresse.

#  TAG: client_netmask
client_netmask 255.255.255.0
# TAG: acl
# Komplettes Netz 240
acl Inet_240 src 192.168.240.0/255.255.255.0

#  TAG: http_access <-- hier Reihenfolge beachten !!

# And finally deny all other access to this proxy
http_access allow Inet_240
http_access deny all

Nach dem eintragen der ACLs und einem /etc/init.d/squid3 restart sollte der Proxy seine Arbeit aufnehmen.

Überwachen des Proxys mit SARG (Squid Analysis Report Generator)

(Apache sollte installiert sein)

Zuerst unter /var/www ein Verzeichnis für die Reports anlegen (z.B. squid-reports)

/etc/sarg/sarg.conf anpassen.

# TAG:  access_log file
access_log /var/log/squid3/access.log

# TAG:  language
language German

# TAG: graphs yes|no
graphs yes
graph_days_bytes_bar_color orange

# TAG:  output_dir
output_dir /var/www/squid-reports

über sarg –g e wird ein Report im angegebenen Verzeichnis erstellt.

Vorbereitungen für Authentfizierung über Active Directory

  • Proxy Server muss im Microsoft DNS Dienst bekannt sein
  • Proxy Server muss als “Trusted Host” im AD angelegt sein
  • NTP Zeit muss stimmen für Kerberos
  • In der resolve.conf muss der DNS der Domäne eingetragen sein, ebenfalls in /etc/network/interfaces

Kerberos Setup

Kerberos Konfigurationsdatei /etc/krb5.conf

!! Domänen Name muss UPPER CASE sein !!

[libdefaults]
default_realm = DOMAIN ß z.B. HK.LOCAL

[realms]
DOMAIN = {
kdc = 192.168.1.1 IP oder Name des erster Domänencontroller
admin_server = 192.168.1.1 IP oder Name des erster Domänencontroller
}
[domain_realm]
.domain = DOMAIN z.B. HK.LOCAL

[appdefaults]

pam = {
ticket_lifetime = 1d
renew_lifetime = 1d
forwardable = true
proxiable = false
retain_after_close = false
minimum_uid = 1
}

Test Kerberos Setup:

 

z.B.

kinit adminisrator@HK.LOCAL


 

 

Man wird nun nach dem Passwort für den AD-User user gefragt.
Wenn alles geklappt hat bekommt man von klist folgende Ausgabe:

 

 

 

 


 

Samba / Winbindd Setup

Nachdem jetzt Kerberos funktioniert wird der Linuxserver jetzt Domänenmitglied, die smb.conf muss angepasst werden.

/etc/samba/smb.conf:
[global]
workgroup = DOMAIN
realm = DOMAIN
password server = HOSTNAME.DOMAIN
security = ADS
winbind refresh tickets = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind cache time = 10
winbind use default domain = yes

Jetzt kann man der Domäne mit:

net ads join -U user@DOMAIN

Funktioniert das ganze kann man mit wbinfo -t prüfen:

root@hkproxy:~# wbinfo -t

checking the trust secret via RPC calls succeeded

 

mit wbinfo –g werden die Gruppen aus AD angezeigt.

root@hkproxy:~# wbinfo –g
domänencomputer
domänencontroller
schema-admins
organisations-admins
zertifikatherausgeber
domänen-admins

Damit ntlm_auth auch Winbind anfragen bearbeiten kann, muss das Verzeichnis /var/run/samba/winbindd_privileged der Gruppe winbindd_priv gehören und von ihr lesbar sein.

groupadd winbindd_priv
chgrp winbindd_priv /var/run/samba/winbindd_privileged

!! Der User Proxy muss der Gruppe winbindd_priv zugeordnet werden !!

adduser proxy winbindd_priv

Als letztes folgt die Anpassung der /etc/squid3/squid.conf, hier folgende Zeilen einfügen:

#  TAG: auth_param
auth_param ntlm program /usr/bin/ntlm_auth –helper-protocol=squid-2.5-ntlmssp –require-membership-of=DOMAIN+GRUPPE
auth_param ntlm children 10
auth_param basic program /usr/bin/ntlm_auth –helper-protocol=squid-2.5-ntlmssp –require-membership-of=DOMAIN+GRUPPE
auth_param basic children 5
auth_param basic realm Domain Proxy Server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

#  TAG: authenticate_cache_garbage_interval
authenticate_cache_garbage_interval 10 seconds

#  TAG: authenticate_ttl
authenticate_ttl 0 seconds

# TAG: acl
acl AuthorizedUsers proxy_auth REQUIRED

#  TAG: http_access (!!hier Reihenfolge beachten !!)
http_access allow all AuthorizedUsers
http_access deny all

- DOMAIN+GRUPPE                                         (Domänenname und Gruppe in Großbuchstaben als Trennzeichen +)
- DOMAIN\\GRUPPE                                        (Domänenname und Gruppe in Großbuchstaben als Trennzeichen  \\)

Das Trennzeichen muss ausprobiert werden, mit einem von beiden funktioniert es. Auf zwei unterschiedlichen Servern gleicher Stand funktionierte es einmal mit + auf dem anderen \\ als Trennzeichen

Die Dienste winbind squid3 müssen jetzt noch neu gestartet werden, dann sollte der Proxy die User aus dem AD authentifizieren können.

Squidguard Webinhaltsfilter

Packet installieren (Squid muss bereits installiert und konfiguriert sein). Apache muss so konfiguriert sein das CGI Script ausgeführt werden können, ansonsten ist keine aussagekäfitige Fehlerseite möglich.

-          squidguard                             (V 1.2 bei Ubuntu)

oder die entsprechende aktuelle .deb ( 10/2011 V 1.4) herunterladen oder aus den Quellen neu kompilieren (siehe unten #1)

Squid umleiten (redirect)

Für den Einsatz von Squidguard muss Squid son konfiguriert werden das Anragen über Squidguard geleitet werden. Dazu muss in der Konfigurationsdatei /etc/squid/squid.conf der Redirect gesetzt werden.

#  TAG: redirect_program
redirect_program /usr/bin/squidGuard -c /etc/squid3/squidGuard.conf

Blacklist installieren

Blacklists können z.B. von http://squidguard.shalla.de/Downloads/shallalist.tar.gz heruntergeladen werden. Danach in das Verzeichnis /var/lib/squidgard/db entpacken und die richtigen Verzeichnisrechte setzten ( squiduser proxy )

tar -xzf ~/xxxxxxxx/shallalist.tar.gz -C /var/lib/squidguard/db

chown proxy.proxy /var/lib/squidguard/db -R

Fehlerseite

cp /usr/share/doc/squidguard/examples/squidGuard.cgi.gz /usr/lib/cgi-bin
gunzip /usr/lib/cgi-bin/squidGuard.cgi.gz
chmod +x /usr/lib/cgi-bin/squidGuard.cgi

Squidguard konfigurieren

/etc/squid/squidguard.conf

dbhome                               — Verzeichnis der Blacklists
logdir                                    — Verzeichnis des Logdatei
dest                                        — Definition der der Blacklist Kategorie
acl                                           — Hier wird definiert wie gesperrt wird
redirect                                 — Hier kann eine Fehlerseite eingefügt werden, ansonsten kommt die normale 404

 

Beispiel 1: Einfachste Konfig

#
# CONFIG FILE FOR SQUIDGUARD
#
dbhome /usr/local/squidGuard/db
logdir /usr/local/squidGuard/logs

dest porn {
domainlist porn/domains
urllist porn/urls
}

acl {
default {
pass !porn all
redirect http://localhost/block.html
}
}

Beispiel 2: Mehrere Destinations

#
# CONFIG FILE FOR SQUIDGUARD
#
dbhome /usr/local/squidGuard/db
logdir /usr/local/squidGuard/logs

dest adv {
domainlist      adv/domains
urllist         adv/urls
}

dest porn {
domainlist      porn/domains
urllist         porn/urls
}

dest warez {
domainlist      warez/domains
urllist         warez/urls
}

acl {
default {

pass    !adv !porn !warez all
redirect http://localhost/block.html
}
}

Beispiel 3: Mit Whitelist

#
# CONFIG FILE FOR SQUIDGUARD
#

dbhome /usr/local/squidGuard/db
logdir /usr/local/squidGuard/logs

dest adv {
domainlist      adv/domains
urllist         adv/urls
}
dest porn {
domainlist      porn/domains
urllist         porn/urls
}

dest warez {
domainlist      warez/domains
urllist         warez/urls
}

dest white {
domainlist      white/domains
urllist         white/urls

}

acl {
default {

pass    white !adv !porn !warez all

redirect http://localhost/block.html

}

}

IP Adressen eingabe blocken
acl {
default {
pass !in-addr all
redirect http://localhost/block.html
}
}

#1

Benötigte Pakete:
* Bison
* Flex
* Berkeley DB V.2.7.7, V3.2.x or 4.x (www.oracle.com/database/berkeley-db/index.html).
* Ab  Berkeley DB version 4.7 bekommt man beim kompilieren Fehler. Bis version 4.6 ist alles in Ordnung.
* Einen Compiler GCC
# apt-get install bison flex
# wget http://dl.dropbox.com/u/4396596/squid/db-4.6.21.tar.gz
# tar -zxvf db-4.6.21.tar.gz
cd db-46..
cd build_unix
../dist/configure –prefix /usr/local/BerkeleyDB
# make
Zum Installieren der Berkeley DB:
# make install
Update der library (debian)
# echo “/usr/local/BerkeleyDB/lib” >> /etc/ld.so.conf
# ldconfig
Confirm its there
# ldconfig -v | grep libdb-4
(After updating, I erased he entry from ld.so.conf)
# wget http://www.squidguard.org/Downloads/squidGuard-1.4.tar.gz
# tar -zxvf squidGuard-1.4.tar.gz
# cd squidGuard-1.4
# ./configure –with-squiduser=proxy (bu default it is: squid)
# make
# make install

KategorienProxy, Server Tags: , ,
  1. Bisher keine Kommentare
  1. Bisher keine Trackbacks

Switch to our mobile site