squid als contentfilter

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
moodsx
Beiträge: 188
Registriert: 15.03.2007 09:17:25

squid als contentfilter

Beitrag von moodsx » 30.11.2017 13:42:32

Hallo Forum,

ich setze den squid als contentfilter für lan clients ein. So weit funktioniert das auch alles bis auf die Tatsache das ich den squid proxy im Browser z.B. firefox direkt eintragen muss da ansonsten HTTPS nicht funktioniert.

Ich habe das ganze mit einem port forwad versucht was auch für http funktioniert hatte, bei https gabs dann leider ein SSL Error im Browser.

Ziel der Übung für mich ist es das alle clients den proxy nutzen ohne das ich den auf jedem system oder hat in jedem Borwser einzeln eintragen muss.

Hat da jemand ein Tip für mich wie ich das realisieren kann so das dann auch https funktioniert?

Benutzeravatar
MSfree
Beiträge: 10751
Registriert: 25.09.2007 19:59:30

Re: squid als contentfilter

Beitrag von MSfree » 30.11.2017 14:12:33

moodsx hat geschrieben: ↑ zum Beitrag ↑
30.11.2017 13:42:32
ich setze den squid als contentfilter für lan clients ein.
Contentfiltering funktioniert aber nur für HTTP. Verschlüsselte Webseiten (HTTPS) können nicht bzw. nur global per Domainname gefiltert werden. Der Nutzen von filternden Proxies läßt mit der immer weiter umsich greifenden Verbreitung von HTTPS stetig nach.
Ich habe das ganze mit einem port forwad versucht was auch für http funktioniert hatte, bei https gabs dann leider ein SSL Error im Browser.
Logisch, transparent proxying geht nur mit HTTP.

OK, man kann Squid auch so konfigurieren, daß es den HTTPS-Verkehr entschlüsselt und filtert, und so quasi als Man in the middle den verschlüsselten Verkehr mitliest. Besondern prickelnd finde ich diese Idee aber nicht.
Ziel der Übung für mich ist es das alle clients den proxy nutzen ohne das ich den auf jedem system oder hat in jedem Borwser einzeln eintragen muss.
Automatisch Proxy konfiguration ist eigentlich bei jedem Browser voreingestellt. Hier ist das mal halbwegs erklärt:
https://de.wikipedia.org/wiki/Web_Proxy ... y_Protocol

Man braucht einen Webserver, der die Konfiguration (wpad.dat) ausliefern kann. Ich nehme dazu z.B. micro_httpd und der liefert exakt nur eine Seite, nämlich wpad.dat aus.

Ferner braucht man einen Hostname-Eintrag im Nameserver namens WPAD, der als CNAME eingetragen wird, also als Alias für den Rechner dient, auf dem der Webserver läuft, der wpad.dat ausliefern kann.

Wie man einen CNAME-Eintrag im DNS macht, hängt vom (Plastik)router oder aber von der eingesetzten DNS-Software ab (üblicherweise dnsmasq oder bind9).

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: squid als contentfilter

Beitrag von uname » 30.11.2017 14:26:04

moodsx hat geschrieben:... so das dann auch https funktioniert?
Lese: https://www.heise.de/security/meldung/S ... 20159.html

moodsx
Beiträge: 188
Registriert: 15.03.2007 09:17:25

Re: squid als contentfilter

Beitrag von moodsx » 30.11.2017 15:38:56

Ich danke Euch für die hilfreichen Hinweise.

Gibt es denn aktuell was "vernünftiges" womit sich ein zentraler contentfilter realisieren lässt oder ist man weiterhin auf einzel lokale Lösungen wie irgendwelche Browseraddons angewiesen?

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: squid als contentfilter

Beitrag von Lord_Carlos » 30.11.2017 16:10:35

Was meinst du mit "contentfilter" genau?

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Benutzeravatar
MSfree
Beiträge: 10751
Registriert: 25.09.2007 19:59:30

Re: squid als contentfilter

Beitrag von MSfree » 30.11.2017 16:14:57

moodsx hat geschrieben: ↑ zum Beitrag ↑
30.11.2017 15:38:56
Gibt es denn aktuell was "vernünftiges" womit sich ein zentraler contentfilter realisieren lässt
Prinzipbedingt geht Contentfiltering mit HTTPS nur, wenn man die Verschlüsselung aufbricht. Das ist zwar technisch machbar und für squid gibt es dazu sogar entsprechende Zusätze. Ich kann hier aber uname und seinem Link nur zustimmen: Finger weg. Denn man würde damit auch z.B. Onlinebanking aufbrechen.

Ansonsten kann man HTTPS nur - ähnlich einem DNS-Filter - domainweit filtern. Du kannst also z.B. den Zugriff auf https://www.doubleclick.net blockieren, was bei doubleclick noch relativ unproblematisch ist. Wenn du aber z.B. akamaihd.net blockierst, gehen viele Mediatheken (ARD, ZDF...) nicht mehr.
oder ist man weiterhin auf einzel lokale Lösungen wie irgendwelche Browseraddons angewiesen?
Eigentlich ist man nicht "weiterhin" auf Addons angewiesen sondern man ist zukünftig immer mehr darauf angewiesen.

moodsx
Beiträge: 188
Registriert: 15.03.2007 09:17:25

Re: squid als contentfilter

Beitrag von moodsx » 01.12.2017 12:32:35

Habe mich dazu entschlossen mich von squid zu trennen und das ganze mit bind9 zu realisieren.

Funktioniert soweit auch wunderbar. Danke Euch für Eure Infos/Hilfe.

BenutzerGa4gooPh

Re: squid als contentfilter

Beitrag von BenutzerGa4gooPh » 01.12.2017 12:38:19

und das ganze mit bind9 zu realisieren.
Wie hast du es gemacht? Kannst ja wenigstens mal einen Link posten ...

moodsx
Beiträge: 188
Registriert: 15.03.2007 09:17:25

Re: squid als contentfilter

Beitrag von moodsx » 01.12.2017 13:08:43

sehr gern:

bind9 installieren

Code: Alles auswählen

apt-get install bind9
dann die /etc/bind/named.conf editieren

Code: Alles auswählen

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/dnsblacklist";
Hier habe ich die letzte Zeile eingefügt. Der Rest ist standard.

named.conf.options

Code: Alles auswählen

options {
	directory "/var/cache/bind";

	// If there is a firewall between you and nameservers you want
	// to talk to, you may need to fix the firewall to allow multiple
	// ports to talk.  See http://www.kb.cert.org/vuls/id/800113

	// If your ISP provided one or more IP addresses for stable 
	// nameservers, you probably want to use them as forwarders.  
	// Uncomment the following block, and insert the addresses replacing 
	// the all-0's placeholder.

	forwarders {
	 	192.168.1.254;
	};

	//========================================================================
	// If BIND logs error messages about the root key being expired,
	// you will need to update your keys.  See https://www.isc.org/bind-keys
	//========================================================================
	dnssec-validation auto;

	auth-nxdomain no;    # conform to RFC1035
//	listen-on-v6 { any; };
	allow-query { any; };
};
Hier habe ich forwarders auskommentiert und die ip vom router eingetragen an die bind9 die Anfragen weiterleitet die er selbst nicht auflösen kann. Letzte Zeile: allow-query hinzugefügt damit meine LAN-Clients den bind9 befragen dürfen.

Die oben erwähnte Liste "dnsblacklist" sieht dann so aus, (ist nur ein Auszug):

Code: Alles auswählen

zone "superfreevpn.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "supervpn.net" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "switchvpn.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "t2675.greatnet.de" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "tor2web.org" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "tor2web.ru" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "torguard.net" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "torvpn.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "toyvpn.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "trustvpn.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "tsunamivpn.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "tunnelbear.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "tuvpn.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "ufreevpn.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "ukipvpn.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "ultrasurf.es" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "ultrasurf.us" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "vpn4all.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "vpn-account.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "vpnbook.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "vpn-free.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "vpngate.net" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "vpnprivacy.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "vworldc.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "yourprivatevpn.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
Das erstellen übernimmt das noch nicht endgültig fertige script:

Code: Alles auswählen

[code]
#!/bin/bash
/bin/rm -rf /etc/bind/shallalist.tar.gz*;
cd /etc/bind && wget http://www.shallalist.de/Downloads/shallalist.tar.gz;
cd /etc/bind/ && chmod 755 shallalist.tar.gz;
cd /etc/bind/ && tar -xzf shallalist.tar.gz;
cd /etc/bind && rm -rf /etc/bind/spywaredomains.zones && wget http://malwaredomains.lehigh.edu/files/spywaredomains.zones;
/bin/rm /etc/bind/dnsblacklist;
/bin/touch /etc/bind/dnsblacklist;
/bin/chmod 755 /etc/bind/dnsblacklist;
echo "add Spywareliste:";
while read line
do
echo "$line" >> /etc/bind/dnsblacklist
done < /etc/bind/spywaredomains.zones

for v1 in "/etc/bind/BL/adv/domains" "/etc/bind/BL/tracker/domains" "/etc/bind/BL/aggressive/domains" "/etc/bind/BL/alcohol/domains" "/etc/bind/BL/anonvpn/domains" ; do
echo "verarbeite: $v1";
while read line
do
z=`/bin/cat /etc/bind/dnsblacklist | grep $line`;
if [ -n "$z" ]; then
	echo "Domain schon vorhanden: $line";
else
	echo "zone \"$line\" {type master; file \"/etc/namedb/blockeddomain.hosts\";};" >> /etc/bind/dnsblacklist
fi
done < $v1
done

exit 0;
[/code]

Das script ist noch nicht fertig und ich bin kein bash profi, von daher kann man das bestimmt noch deutlich performanter coden. Ausserdem fehlen noch etliche domains aus der shalla Liste. Im Moment habe ich ca. 38000 domains in der Liste.

Jetzt fehlt eigl. nur noch die Auflösung für die Liste.
Dazu habe ich /etc/namedb angelegt und eine Datei namens blockeddomain.hosts angelect und folgendem Inhalt verpasst:

Code: Alles auswählen

$TTL	86400
@	IN	SOA	localhost. root.localhost. (
			      2		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			  86400 )	; Negative Cache TTL
;
@	IN	NS	localhost.
@	IN	A	127.0.0.1

Damit werden alle zonen aus der Datei dnsblacklist in 127.0.0.1 aufgelöst.

Danach noch ein reload und schauen ob alles sauber durchläuft.

Code: Alles auswählen

systemctl reload bind9 && tail -f /var/log/syslog
Das wars eigl. schon, hoffe es hilft jemandem weiter.

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: squid als contentfilter

Beitrag von Lord_Carlos » 01.12.2017 13:20:40

Wenn man auf DNS ebene Werbung blocken will, aber keine lust auf gefrickel hat, da gibt es pi-hole: https://pi-hole.net/

curl -sSL https://install.pi-hole.net | bash
und dann den Rechner als DNS im router eintragen.

Das hat dann auch noch ein nettes Webinterface mit Statistiken.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

BenutzerGa4gooPh

Re: squid als contentfilter

Beitrag von BenutzerGa4gooPh » 01.12.2017 13:24:59

Lord_Carlos hat geschrieben: ↑ zum Beitrag ↑
01.12.2017 13:20:40
Wenn man auf DNS ebene Werbung blocken will, aber keine lust auf gefrickel hat, da gibt es pi-hole: https://pi-hole.net/
Nu ja, ich überlege mir bind9 oder unbound, weil die noch DNSSEC und rekursive Namensauflösung (Anfrage autoritativer Server von Roots abwärts) können.
Aber vielleicht muss Eines das Andere nicht ausschließen.
moodsx hat geschrieben: ↑ zum Beitrag ↑
01.12.2017 13:08:43
Das wars eigl. schon, hoffe es hilft jemandem weiter.
Danke!

moodsx
Beiträge: 188
Registriert: 15.03.2007 09:17:25

Re: squid als contentfilter

Beitrag von moodsx » 01.12.2017 13:46:12

Wenn es was einfaches und schnelles sein soll kann man sich auch das anschauen:

http://www.opendns.com

BenutzerGa4gooPh

Re: squid als contentfilter

Beitrag von BenutzerGa4gooPh » 01.12.2017 15:31:51

Lieber nicht kostenfrei. Sonst nutzt und teilt Cisco Daten:
https://www.cisco.com/c/en/us/about/leg ... -full.html
Link per https://signup.opendns.com/homefree/

Antworten