Benutzer-Werkzeuge

Webseiten-Werkzeuge


  • Deutsch (German)
  • English
  • Français (French)
de.bkp:technische-dokumentationen:tutorials:einrichten_des_http_s_filters_pfsense

Tutorial - pfSense Web Filter – Filter HTTP(S) mit squidGuard

Version Status Datum Author URL
0.1 Erster Entwurf 10.06.2020 Yannis Nay
0.2 Ergänzungen TT.MM.JJJJ Vorname Nachname
1.0 Review und Freigabe TT.MM.JJJJ Vorname Nachname

1. Kurzfassung

Installation von SquidGuard als Webfilter für Pfsense. Zuerst wird Pfsense vorkonfiguriert und dann SquidGuard installiert und dieser so eingerichtet wie man will. Danach erstellt man einige Zertifikate für die Firewall. Durch eine Regel im LAN werden jegliche DNS Anfragen zuerst durch die Firewall geschickt und dort von SquidGuard untersucht. Falls die Anfrage eine der blockierten URLs ist wird diese verweigert.

2. Tutorial

Es sollten keine Probleme auftauchen solange man die Anleitungen exakt befolgt.

Erstelle Firewall Regeln für den DNS

Aktiviere den DNS Resolver. Picture1
Um zu ermöglichen, dass die Computer im Netzwerk den DNS Server der Firewall benutzen, braucht man eine Regel, die alle DNS Anfragen zur Firewall weiterleitet. Um das zu erreichen, kreiert man eine neue Regel unter Firewall → NAT. Im Port Forward Tab, gibt man das Folgende ein:

1. Interface: LAN
2. Protocol: TCP/UDP
3. Destination: Any
4. Destination Port Range: DNS (53)
5. Redirect Traget IP: 127.0.0.1
6. Redirect Target Port: DNS (53)
7. Description: Can be freely selected

Picture2

Nun muss man die Firewall Regel noch am richtigen Ort einfügen. Es muss über der „Default allow LAN to any rule“ sein. Um das zu machen öffnet man die Firewall Rules unter Firewall → Rules und bewegt die Regel nach oben. Picture3

Host Overrides für Bing und Youtube

Erstelle ein paar DNS Einträge um sicher zu stellen, dass Safe-Search bei Google und Bing funktioniert. Für das öffnet man den DNS Resolver unter Services → DNS Resolver und fügt die folgenden Einträge in die Sektion des Host Overrides ein.

Bing:

  • Host: www
  • Domain: bing. com
  • IP Address: 204.79.197.220
  • Description: Bing
  • Speicher mit Save

Youtube:

  • Host: www
  • Domain: youtube. com
  • IP Address: 216.239.38.120
  • Description: Youtube
  • Speichere mit Save

Picture4

Host Overrides für Google

Google hat viele verschieden Domänen. Deshalb sollte man einen anderen Weg gehen. Man logt sich via SSH bei der pfSense ein. SSH muss zuerst im Webinterface und System → Advanced in der Secure Shell section eingeschaltet werden. Picture5

Nun kann man über Putty sich anmelden.

Im folgenden Menu wähle „8“ aus. Picture6

Nun kreiert man eine Datei, in die man später die Google DNS Einträge einfügt. Und zwar: vi /var/unbound/google.conf Um den Editor zu schliessen gibt man „:wq“ ein

Man kann nun die neu erstellte Datei unter Diagnostics → Edit File bearbeiten. Man muss nur noch den Pfad eingeben: /var/unbound/google.conf Picture7
Danach kopiert man den folgenden Inhalt hinein:

local-data: "www.google.ad A 216.239.38.120"
local-data: "www.google.ae A 216.239.38.120"
local-data: "www.google.com A 216.239.38.120"
local-data: "www.google.com.af A 216.239.38.120"
local-data: "www.google.com.ag A 216.239.38.120"
local-data: "www.google.com.ai A 216.239.38.120"
local-data: "www.google.al A 216.239.38.120"
local-data: "www.google.am A 216.239.38.120"
local-data: "www.google.co.ao A 216.239.38.120"
local-data: "www.google.com.ar A 216.239.38.120"
local-data: "www.google.as A 216.239.38.120"
local-data: "www.google.at A 216.239.38.120"
local-data: "www.google.com.au A 216.239.38.120"
local-data: "www.google.az A 216.239.38.120"
local-data: "www.google.ba A 216.239.38.120"
local-data: "www.google.com.bd A 216.239.38.120"
local-data: "www.google.be A 216.239.38.120"
local-data: "www.google.bf A 216.239.38.120"
local-data: "www.google.bg A 216.239.38.120"
local-data: "www.google.com.bh A 216.239.38.120"
local-data: "www.google.bi A 216.239.38.120"
local-data: "www.google.bj A 216.239.38.120"
local-data: "www.google.com.bn A 216.239.38.120"
local-data: "www.google.com.bo A 216.239.38.120"
local-data: "www.google.com.br A 216.239.38.120"
local-data: "www.google.bs A 216.239.38.120"
local-data: "www.google.bt A 216.239.38.120"
local-data: "www.google.co.bw A 216.239.38.120"
local-data: "www.google.by A 216.239.38.120"
local-data: "www.google.com.bz A 216.239.38.120"
local-data: "www.google.ca A 216.239.38.120"
local-data: "www.google.cd A 216.239.38.120"
local-data: "www.google.cf A 216.239.38.120"
local-data: "www.google.cg A 216.239.38.120"
local-data: "www.google.ch A 216.239.38.120"
local-data: "www.google.ci A 216.239.38.120"
local-data: "www.google.co.ck A 216.239.38.120"
local-data: "www.google.cl A 216.239.38.120"
local-data: "www.google.cm A 216.239.38.120"
local-data: "www.google.cn A 216.239.38.120"
local-data: "www.google.com.co A 216.239.38.120"
local-data: "www.google.co.cr A 216.239.38.120"
local-data: "www.google.com.cu A 216.239.38.120"
local-data: "www.google.cv A 216.239.38.120"
local-data: "www.google.com.cy A 216.239.38.120"
local-data: "www.google.cz A 216.239.38.120"
local-data: "www.google.de A 216.239.38.120"
local-data: "www.google.dj A 216.239.38.120"
local-data: "www.google.dk A 216.239.38.120"
local-data: "www.google.dm A 216.239.38.120"
local-data: "www.google.com.do A 216.239.38.120"
local-data: "www.google.dz A 216.239.38.120"
local-data: "www.google.com.ec A 216.239.38.120"
local-data: "www.google.ee A 216.239.38.120"
local-data: "www.google.com.eg A 216.239.38.120"
local-data: "www.google.com.et A 216.239.38.120"
local-data: "www.google.fi A 216.239.38.120"
local-data: "www.google.com.fj A 216.239.38.120"
local-data: "www.google.fm A 216.239.38.120"
local-data: "www.google.fr A 216.239.38.120"
local-data: "www.google.ga A 216.239.38.120"
local-data: "www.google.ge A 216.239.38.120"
local-data: "www.google.gg A 216.239.38.120"
local-data: "www.google.com.gh A 216.239.38.120"
local-data: "www.google.com.gi A 216.239.38.120"
local-data: "www.google.gl A 216.239.38.120"
local-data: "www.google.gm A 216.239.38.120"
local-data: "www.google.gp A 216.239.38.120"
local-data: "www.google.gr A 216.239.38.120"
local-data: "www.google.com.gt A 216.239.38.120"
local-data: "www.google.gy A 216.239.38.120"
local-data: "www.google.com.hk A 216.239.38.120"
local-data: "www.google.hn A 216.239.38.120"
local-data: "www.google.hr A 216.239.38.120"
local-data: "www.google.ht A 216.239.38.120"
local-data: "www.google.hu A 216.239.38.120"
local-data: "www.google.co.id A 216.239.38.120"
local-data: "www.google.ie A 216.239.38.120"
local-data: "www.google.co.il A 216.239.38.120"
local-data: "www.google.im A 216.239.38.120"
local-data: "www.google.co.in A 216.239.38.120"
local-data: "www.google.iq A 216.239.38.120"
local-data: "www.google.is A 216.239.38.120"
local-data: "www.google.it A 216.239.38.120"
local-data: "www.google.je A 216.239.38.120"
local-data: "www.google.com.jm A 216.239.38.120"
local-data: "www.google.jo A 216.239.38.120"
local-data: "www.google.co.jp A 216.239.38.120"
local-data: "www.google.co.ke A 216.239.38.120"
local-data: "www.google.com.kh A 216.239.38.120"
local-data: "www.google.ki A 216.239.38.120"
local-data: "www.google.kg A 216.239.38.120"
local-data: "www.google.co.kr A 216.239.38.120"
local-data: "www.google.com.kw A 216.239.38.120"
local-data: "www.google.kz A 216.239.38.120"
local-data: "www.google.la A 216.239.38.120"
local-data: "www.google.com.lb A 216.239.38.120"
local-data: "www.google.li A 216.239.38.120"
local-data: "www.google.lk A 216.239.38.120"
local-data: "www.google.co.ls A 216.239.38.120"
local-data: "www.google.lt A 216.239.38.120"
local-data: "www.google.lu A 216.239.38.120"
local-data: "www.google.lv A 216.239.38.120"
local-data: "www.google.com.ly A 216.239.38.120"
local-data: "www.google.co.ma A 216.239.38.120"
local-data: "www.google.md A 216.239.38.120"
local-data: "www.google.me A 216.239.38.120"
local-data: "www.google.mg A 216.239.38.120"
local-data: "www.google.mk A 216.239.38.120"
local-data: "www.google.ml A 216.239.38.120"
local-data: "www.google.com.mm A 216.239.38.120"
local-data: "www.google.mn A 216.239.38.120"
local-data: "www.google.ms A 216.239.38.120"
local-data: "www.google.com.mt A 216.239.38.120"
local-data: "www.google.mu A 216.239.38.120"
local-data: "www.google.mv A 216.239.38.120"
local-data: "www.google.mw A 216.239.38.120"
local-data: "www.google.com.mx A 216.239.38.120"
local-data: "www.google.com.my A 216.239.38.120"
local-data: "www.google.co.mz A 216.239.38.120"
local-data: "www.google.com.na A 216.239.38.120"
local-data: "www.google.com.nf A 216.239.38.120"
local-data: "www.google.com.ng A 216.239.38.120"
local-data: "www.google.com.ni A 216.239.38.120"
local-data: "www.google.ne A 216.239.38.120"
local-data: "www.google.nl A 216.239.38.120"
local-data: "www.google.no A 216.239.38.120"
local-data: "www.google.com.np A 216.239.38.120"
local-data: "www.google.nr A 216.239.38.120"
local-data: "www.google.nu A 216.239.38.120"
local-data: "www.google.co.nz A 216.239.38.120"
local-data: "www.google.com.om A 216.239.38.120"
local-data: "www.google.com.pa A 216.239.38.120"
local-data: "www.google.com.pe A 216.239.38.120"
local-data: "www.google.com.pg A 216.239.38.120"
local-data: "www.google.com.ph A 216.239.38.120"
local-data: "www.google.com.pk A 216.239.38.120"
local-data: "www.google.pl A 216.239.38.120"
local-data: "www.google.pn A 216.239.38.120"
local-data: "www.google.com.pr A 216.239.38.120"
local-data: "www.google.ps A 216.239.38.120"
local-data: "www.google.pt A 216.239.38.120"
local-data: "www.google.com.py A 216.239.38.120"
local-data: "www.google.com.qa A 216.239.38.120"
local-data: "www.google.ro A 216.239.38.120"
local-data: "www.google.ru A 216.239.38.120"
local-data: "www.google.rw A 216.239.38.120"
local-data: "www.google.com.sa A 216.239.38.120"
local-data: "www.google.com.sb A 216.239.38.120"
local-data: "www.google.sc A 216.239.38.120"
local-data: "www.google.se A 216.239.38.120"
local-data: "www.google.com.sg A 216.239.38.120"
local-data: "www.google.sh A 216.239.38.120"
local-data: "www.google.si A 216.239.38.120"
local-data: "www.google.sk A 216.239.38.120"
local-data: "www.google.com.sl A 216.239.38.120"
local-data: "www.google.sn A 216.239.38.120"
local-data: "www.google.so A 216.239.38.120"
local-data: "www.google.sm A 216.239.38.120"
local-data: "www.google.sr A 216.239.38.120"
local-data: "www.google.st A 216.239.38.120"
local-data: "www.google.com.sv A 216.239.38.120"
local-data: "www.google.td A 216.239.38.120"
local-data: "www.google.tg A 216.239.38.120"
local-data: "www.google.co.th A 216.239.38.120"
local-data: "www.google.com.tj A 216.239.38.120"
local-data: "www.google.tk A 216.239.38.120"
local-data: "www.google.tl A 216.239.38.120"
local-data: "www.google.tm A 216.239.38.120"
local-data: "www.google.tn A 216.239.38.120"
local-data: "www.google.to A 216.239.38.120"
local-data: "www.google.com.tr A 216.239.38.120"
local-data: "www.google.tt A 216.239.38.120"
local-data: "www.google.com.tw A 216.239.38.120"
local-data: "www.google.co.tz A 216.239.38.120"
local-data: "www.google.com.ua A 216.239.38.120"
local-data: "www.google.co.ug A 216.239.38.120"
local-data: "www.google.co.uk A 216.239.38.120"
local-data: "www.google.com.uy A 216.239.38.120"
local-data: "www.google.co.uz A 216.239.38.120"
local-data: "www.google.com.vc A 216.239.38.120"
local-data: "www.google.co.ve A 216.239.38.120"
local-data: "www.google.vg A 216.239.38.120"
local-data: "www.google.co.vi A 216.239.38.120"
local-data: "www.google.com.vn A 216.239.38.120"
local-data: "www.google.vu A 216.239.38.120"
local-data: "www.google.ws A 216.239.38.120"
local-data: "www.google.rs A 216.239.38.120"
local-data: "www.google.co.za A 216.239.38.120"
local-data: "www.google.co.zm A 216.239.38.120"
local-data: "www.google.co.zw A 216.239.38.120"
local-data: "www.google.cat A 216.239.38.120"

Danach speichert man die Datei ab.

Der letzte Schritt ist, dem DNS zu zeigen, wo er dieses File finden kann. Öffne die DNS Server Settings unter Services → DNS Resolver und drücke auf Display Custom Options. Dort fügt man die folgenden Zeilen ein und speichert sie ab. Picture8

Squid Proxy und SquidGuard

Um Pfsense zu erlauben die URLs zu filtern, braucht man einen Proxy-Server der alle Anfragen vom Netzwerk durch sich durch leitet. Für das benutzt man Squid. SquidGuard ist der Filter. Unter System → Package Manager im Available Packages tab installiert man Squid und SquidGuard. Picture9

Aufsetzen der transparenten Proxy für HTTP.

Unter Services → Squid Proxy Server setzt man nun einen transparenten Proxy auf. Ein transparenter Proxy hat den Vorteil, dass man die Einstellungen nicht auf den Computern im Netzwerk konfigurieren muss. Im General Tab aktiviert man folgende Items:

  1. Enable Squid Proxy ✔
  2. Proxy Interface (s): LAN
  3. Allow users on interface ✔
  4. Transparent HTTP Proxy ✔
  5. Transparent Proxy Interface (s): LAN

Picture10

Nachdem man abspeichert gibt man unter dem tab Local Chace an wie viel Speicherplatz für den Cache benutzt werden soll. ( ca. 500MB genügen) Picture11

Der Aufbau der transparenten Proxy ist nun fertig.

Konfiguration von SquidGuard

SquidGuard ist der Teil der verantwortlich ist für das Filtern des Inhaltes. Jede Anfrage wird überprüft bei SquidGuard und dann wird entschieden ob die Anfrage oder Webseite blockiert werden soll. Für das benutzt man eine Blacklist, die wir später konfigurieren werden. Zuvor definiert man generelle Einstellungen unter Services → SquidGuard Proxy Filter.

  1. Enable ✔
  2. (not shown in the screenshot)
  3. Enable Log ✔
  4. Enable log rotation ✔
  5. Enable Blacklist ✔

Picture12

Das Aufsetzen der Black- und der Whitelist

Die URL für die Blacklist ist bereits gegeben. Nun muss man diese unter dem Tab „Blacklist“ herunterladen. Picture13

Unter „Target Categories“ auf Add klicken. Eine Whitelist mit allen Dömanen Namen die erlaubt werden sollen erstellen. Das wären dann die Google Domänen, weil man alle anderen Suchmaschine blockieren will, damit man nicht das Safe-Search Feature überfliegen kann.

Man gibt folgendes ein: Name: Whitelist Domain List: google.ac google.ad google.ae google.al google.am google.as google.at google.az google.ba google.be google.bf google.bg google.bi google.bj google.bs google.bt google.by google.ca google.cat google.cd google.cf google.cg google.ch google.ci google.cl google.cm google.cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.hu google.co.id google.co.il google.co.in google.co.je google.co.jp google.co.ke google.co.kr google.co.ls google.com google.co.ma google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gr google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.nf google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw google.cv google.cz google.de google-directory.co.uk google.dj google.dk google.dm google.dz google.ee google.es google.fi google.fm google.fr google.ga google.ge google.gg google.gl google.gm google.gp google.gr google.gy google.hn google.hr google.ht google.hu google.ie google.im google.iq google.is google.it google.je google.jo google.kg google.ki google.kz google.la google.li google.lk google.lt google.lu google.lv google.md google.me google.mg google.mk google.ml google.mn google.ms google.mu google.mv google.mw google.ne google.nl google.no google.nr google.nu google.off.ai googlepirate.com google.pl google.pn google.ps google.pt google.ro google.rs google.ru google.rw google.sc google.se google.sh google.si google.sk google.sm google.sn google.so google.sr google.st google.td google.tg google.tk google.tl google.tm google.tn google.to google.tt google.uz google.vg google.vu google.ws bing.com

Description: Whitelist Save with Save.

Picture14

Der letzte Schritt ist auf „Common ACL“ die Target Rule List zu öffnen, man muss auf das + klicken. Man macht nun diese Einstellungen:

Whitelist: access whitelist Default access [all]: access allow Picture15

Nun kann man noch diverse Kategorien blockieren. Um zu verhindern das man den URL Filter überspringt in dem man eine IP-Adresse eingibt. Stellt man „Do not allow IP adresses in URL“ ein. Picture16

Transparente Proxy für HTTPS Verbindungen

Man öffnet die Proxy Einstellungen unter Services → Squid Proxy Server und wählt folgende Einstellungen unter der „SSL Man in the Middle Filtering section“ Sektion aus:

HTTPS / SSL Interception ✔ SSL/MITM Method: Splice All SSL Intercept Interfaces: LAN CA: Select a Certificate Authority Certificate. Maybe we’ll have to create one first. (under System → Cert. Manager). Save all with Save.

Picture17

3. Testing

3.1 Test 1

Testfall Nr. #1
Beschreibung Die Blacklist ist aktiviert und richtig konfiguriert
Vorgehen In dem Proxifilter unter Common ACL eine Kategorie auswählen und blockieren, danach einige Seiten ausprobieren und öffnen in http und https.
blk_porn deny
http s playboy.com
Voraussetzung / Umfeld Die Blacklist ist aktiviert und richtig konfiguriert
Erwartetes Resultat Die Webseite ist in http sowie https blockiert.
OK / nicht OK OK
Aufgetretene Fehler / Bemerkungen Keine

3.2 Test 2

Testfall Nr. #2
Beschreibung Whitelist eine geblockte Webseite
Vorgehen In dem Proxifilter unter Target Categories die Whitelist auswählen und in der Domain List die ausgewählte Domäne einfügen.
www.playboy.com
http s playboy.com
Voraussetzung / Umfeld Die Whitelist ist richtig konfiguriert und die Blacklist ist aktiviert.
Erwartetes Resultat Man kann die Seite ohne Probleme öffnen.
OK / nicht OK OK
Aufgetretene Fehler / Bemerkungen Keine

4. Auswertung

Was hat funktiniert[(ref note example)], was nicht, was waren die grössten Herausforderungen/Probleme, wie habe ich die Probleme gelöst, was mache ich beim nächsten Mal besser, Reflexion

5. Quellenverzeichnis

de.bkp/technische-dokumentationen/tutorials/einrichten_des_http_s_filters_pfsense.txt · Zuletzt geändert: 2020/09/22 15:58 von 127.0.0.1