Squid ACL Basic Rocky

Aus Xinux Wiki
Version vom 22. April 2026, 10:22 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „ =Prinzip der ACL= {{#drawio:Prinzip der ACL}} =Lan und DMZ freischalten= ==acl bilden== acl lan src 172.16.150.0/24 acl dmz src 10.40.115.0/24 ==acl anwe…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Prinzip der ACL

Lan und DMZ freischalten

acl bilden

acl lan src 172.16.150.0/24
acl dmz src  10.40.115.0/24

acl anwenden(Reihenfolge ist entscheidend)

http_access allow lan
http_access allow dmz

Webseite einschränken

Acl bilden

acl facebook url_regex -i facebook

Acl anwenden

http_access deny facebook

HTTP Port des Proxys angeben

http_port 3128

Logs checken

  • tail -f /var/log/squid/access.log

1490008947.188 2 192.168.244.144 TCP_MISS/503 4447 GET http://detectportal.firefox.com/success.txt - HIER_NONE/- text/html

Blacklist erstellen

  • Wird erstellt, um diverse Seiten zu deaktivieren

http-liste erstellen

vi /etc/squid/bad-sites.list

http-seiten hinzufügen

facebook.com
pr0gramm.com

erstellen der acl

acl bad-sites  url_regex -i "/etc/squid/bad-sites.list"

erstellen der http_access

http_access deny bad-sites

Squid acl Types

Squid.conf all in one with Black List

# Squid lauscht auf allen Schnittstellen (inkl. WAN)
http_port 0.0.0.0:3128
# ACLs für die Netzwerke definieren
acl admin-netz src 172.16.1xx.0/24
acl lan src 172.17.1xx.0/24
acl dmz src 10.0.1xx.0/24
# Blacklist-Datei einbinden
acl bad-sites url_regex -i "/etc/squid/bad-sites.list"
# Admin-Netz uneingeschränkt erlauben
http_access allow admin-netz
# LAN & DMZ haben Zugriff, aber mit Blacklist-Einschränkung
http_access deny bad-sites lan
http_access deny bad-sites dmz
# LAN & DMZ dürfen surfen
http_access allow lan
http_access allow dmz
# Standardmäßig alles verbieten
http_access deny all

Squid.conf all in one with White List

# Squid lauscht auf allen Schnittstellen (inkl. WAN)
http_port 0.0.0.0:3128
# ACLs für die Netzwerke definieren
acl admin-netz src 172.16.1xx.0/24
acl lan src 172.17.1xx.0/24
acl dmz src 10.0.1xx.0/24
# Whitelist-Datei einbinden
acl allowed-sites dstdomain "/etc/squid/allowed-sites.list"
# Admin-Netz uneingeschränkt erlauben
http_access allow admin-netz
# LAN & DMZ dürfen nur freigegebene Seiten besuchen
http_access allow lan allowed-sites
http_access allow dmz allowed-sites
# Standardmäßig alles verbieten
http_access deny all

Authentifizierung erzwingen

Zur Vermeidung von ungewollten Zugriffen lässt sich in Squid auch eine Authetifizierung erzwingen

Erstellen einer Passwort Datei

  • sudo apt install apache2-utils (Debian/Ubuntu)
  • sudo dnf install httpd-tools (Rocky Linux)
  • htpasswd -c /etc/squid/passwd username

Syntax:

  • htpasswd: Programmname
  • -c: Create new passwordfile, also neue Passwortdatei erstellen
  • passwordfile: Passwortdatei mit beliebigem Namen. Auch der Ort kann beliebig gewählt werden
  • username: Name eines Benutzers (beliebig)

Nach Bestätigen des Befehls wird htpasswd nach einem Passwort für den Benutzer verlangen. Dies kann ebenfalls beliebig gewählt werden.

Weiter Benutzer:

  • htpasswd /etc/squid/passwd benutzer2

Änderungen an der squid.conf

Folgende Einträge werden am Anfang der squid.conf eingefügt:

auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 20 startup=0 idle=1
auth_param basic concurrency 0
auth_param basic credentialsttl 500 seconds
auth_param basic realm xinux proxy server
auth_param basic casesensitive off

acl ncsa_users proxy_auth REQUIRED

http_access allow ncsa_users

Hinweis Rocky Linux: Der Helper-Pfad unterscheidet sich je nach Distribution:

Distribution Pfad
Debian / Ubuntu /usr/lib/squid/basic_ncsa_auth
Rocky Linux / RHEL /usr/lib64/squid/basic_ncsa_auth

Syntax:

  • auth_param: Definiert die Parameter für die Authentifizierung
  • basic: Teilt squid mit, dass es sich um grundsätzliche Einstellungen handelt, die zur Anwendung kommen wenn keine anderen verfügbar sind. Weitere Optionen siehe squid Manual
  • program: Es wird ein externes Programm zur Authentifizierung eingesetzt
  • /usr/lib/squid/basic_ncsa_auth: Hier befindet sich das Programm
  • /etc/squid/passwd: Dies ist die Passwortdatei
  • children: Wieviele Authentifikationsprozesse Squid maximal starten soll
  • concurrency: Wieviele Anfragen gleichzeitig bearbeitet werden dürfen
  • credentialsttl: Wie lange die Anmeldedaten gültig sein sollen
  • realm: Name des Bereichs für den der Proxy zuständig ist. Kann beliebig gewählt werden.
  • casesensitive: Legt fest ob der BENUTZERname case-sensitiv sein soll

Authentifizierung mit ldap

Zusätzliche Packete:

sudo apt install libldap-2.5-0 ldap-utils (Debian/Ubuntu)
sudo dnf install openldap-clients (Rocky Linux)

Debian 13

sudo apt install libldap2 ldap-utils
# LDAP-Authentifizierung einrichten

auth_param basic program /usr/lib/squid/basic_ldap_auth -v 3 -b ou=users,dc=it113,dc=int -D cn=admin,dc=it113,dc=int -w 123Start$ -f uid=%s -h ldap.it113.int
auth_param basic children 20 startup=0 idle=1
auth_param basic concurrency 0
auth_param basic credentialsttl 500 seconds
auth_param basic realm xinux proxy server
auth_param basic casesensitive off

# ACL für authentifizierte Benutzer
acl ldap-auth proxy_auth REQUIRED

# Zugriff erlauben
http_access allow ldap-auth

Hinweis Rocky Linux: Auch hier gilt der abweichende Pfad:

Distribution Pfad
Debian / Ubuntu /usr/lib/squid/basic_ldap_auth
Rocky Linux / RHEL /usr/lib64/squid/basic_ldap_auth

Authentifizierung mit LDAP-Gruppen

  • /etc/squid/squid.conf
    • Zusätzlich zur oben genannten Authentifizierung mit LDAP, kann hier mit Filter von Gruppen gearbeitet werden. Fügen Sie dafür folgende Zeile hinzu:
external_acl_type ldap_group %LOGIN /usr/lib/squid/ext_ldap_group_acl -v 3 -b ou=groups,dc=it113,dc=int -D cn=admin,dc=it113,dc=int -w 123Start$ -f "(&(objectClass=posixGroup)(cn=%g)(memberUid=%u))"  -h ldap.it113.int

acl it external ldap_group it

http_access allow it

Hinweis Rocky Linux: Pfad des Helpers:

Distribution Pfad
Debian / Ubuntu /usr/lib/squid/ext_ldap_group_acl
Rocky Linux / RHEL /usr/lib64/squid/ext_ldap_group_acl

Rocky Linux – zusätzliche Konfiguration

Bei Rocky Linux sind gegenüber Debian/Ubuntu einige zusätzliche Schritte erforderlich.

Firewall (firewalld)

Rocky Linux verwendet standardmäßig firewalld. Der Squid-Port 3128 muss explizit freigegeben werden:

sudo firewall-cmd --permanent --add-port=3128/tcp
sudo firewall-cmd --reload

SELinux

Rocky Linux läuft mit aktivem SELinux. Dateien, die außerhalb der Squid-Standardpfade abgelegt werden (z.B. Passwortdatei, Blacklist), benötigen den korrekten SELinux-Kontext:

sudo chcon -t squid_conf_t /etc/squid/passwd
sudo chcon -t squid_conf_t /etc/squid/bad-sites.list
sudo chcon -t squid_conf_t /etc/squid/allowed-sites.list

Alternativ kann restorecon verwendet werden, sofern der Standardkontext für den Pfad korrekt gesetzt ist:

sudo restorecon -v /etc/squid/passwd

Paketübersicht

Funktion Debian / Ubuntu Rocky Linux
Squid apt install squid dnf install squid
htpasswd apt install apache2-utils dnf install httpd-tools
LDAP-Utils apt install ldap-utils dnf install openldap-clients
LDAP-Bibliothek apt install libldap-2.5-0 als Abhängigkeit enthalten

Links