Squid ACL Basic: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (8 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| + | *[[5103 - Squid Übung]] | ||
=Prinzip der ACL= | =Prinzip der ACL= | ||
{{#drawio:Prinzip der ACL}} | {{#drawio:Prinzip der ACL}} | ||
| Zeile 18: | Zeile 19: | ||
==Acl anwenden== | ==Acl anwenden== | ||
http_access deny facebook | http_access deny facebook | ||
| + | |||
| + | ==HTTP Port des Proxys angeben== | ||
| + | |||
| + | http_port 3128 | ||
=Logs checken= | =Logs checken= | ||
| Zeile 43: | Zeile 48: | ||
=Squid acl Types= | =Squid acl Types= | ||
*[[Squid acl types]] | *[[Squid acl types]] | ||
| + | |||
| + | =Squid.conf all in one with Black List= | ||
| + | <pre> | ||
| + | # 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 | ||
| + | </pre> | ||
| + | |||
| + | =Squid.conf all in one with White List= | ||
| + | <pre> | ||
| + | # 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 | ||
| + | </pre> | ||
| + | |||
| + | =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 | ||
| + | *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: | ||
| + | |||
| + | <pre> | ||
| + | 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 | ||
| + | |||
| + | </pre> | ||
| + | |||
| + | 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 | ||
| + | |||
| + | <pre> | ||
| + | # 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 | ||
| + | </pre> | ||
| + | |||
=Links= | =Links= | ||
*https://wiki.squid-cache.org/SquidFaq/SquidAcl | *https://wiki.squid-cache.org/SquidFaq/SquidAcl | ||
Aktuelle Version vom 2. Juli 2025, 08:11 Uhr
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
- 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
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
# 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
