Firewall(PF) Regeln erstellen für Desktop-Pc

Bsdnoob

Member
Hallo,

Ich bin erst seit kurzem BSD User und möchte jetzt gern eine Firewall(PF) für mein Desktop-Pc einrichten, Hoffe es kann mir jemand weiterhelfen.

Die Firewall soll folgende anforderungen erfüllen:
-Man-in-the-Middle Attacks verhindern
-Nur Upates und im Internet surfen erlauben, alles andere blockieren
-Die Packte sollten einfach fallen gelassen werden ohne reaktion oder so.

Ich gehe davon aus das ich bei outgoing traffic nur Port: 53, 80 und 443 erlauben sollte?
Was mach ich mit dem incoming traffic, der Browser nutzt ja mehrere verschiedene Ports?
Kann ich das so einstellen das nur von mir etablierte Verbindungen erlaubt werden?

Bis jetzt hab ich nur folgende Regeln aufgestellt:
set skip on lo0
set block-policy drop
block drop all
pass out proto { tcp } to port { 80 443 }
pass out proto { udp } to port { 53 }
 
Wird das ein Gerät zwischen deinem Desktop und "dem internet" oder soll das auf dem Desktop selbst laufen?

Wenn letzteres wäre es uu hilfreich zu wissen welches Betriebsystem dieses Gerät hat :)

Man-in-the-middle angriffe wirst du damit eher nicht lösen, denn da geht es ja afaik darum das gerade nicht jemand deinen lokalen PC übernommen hat, sondern irgendwo auf dem Transportweg an den Daten rummanipuliert. Dafür gibt es das https.

Ansonsten musst du evtl. noch schauen ob dhcp geht sofern erwünscht und evtl. auch noch ob die icmp für ipv6 aktivieren musst, da gibt es auch irgendwas wofür das wichtig war.

Generell hilft das ganz natürlich nur begrenzt, wenn du eine Software nutzt der du nicht vertraust oder bei der du sorgen hast, ist die wahrscheinlichkeit sehr hoch das sie per 80/443/53 "raustelefoniert". Generell ist ein lokaler Paketfilter selbst bei einfachen Privat-PC-Szenarios nur ein sehr kleiner baustein etwas. insbesondere wenn man nen *BSD nutzt und keine Daemons startet die sich an das interface binden.

/edit: Für incomming brauchst du nur Stateful wenn ich mich recht entsinne, der rest passiert automatisch.
 
Es soll auf dem Desktop selbst laufen, als nichts Weiterleiten oder so.
Das Betriebssystem ist OpenBsd73.

Es geht mir mehr darum das niemand innerhalb meines LANs mein Pc Sacnnen bzw. Angreifen kann.
Ich brauche nichts weiter als Updates und Surfen im web, Ich Teste mal ob dhcp funktioniert wenn nicht kann ich auch eine statische Ip vergeben, ist ja kein Problem. Brauch ich denn icmp unbedingt? Wenn nicht würde ich es einfach weglassen.

Bei meinem Linux hatte ich arptables installiert da konnte ich die Mac-Ádresse für mein Gateway festlegen.Damit war MITM ausgeschlossen. Wäre gut wenn es bei BSD eine ähnliche Lösung geben würde.

Hier ein Beispiel
arptables -P INPUT DROP
arptables -A INPUT --source-mac d8:d7:21:22:5a:f4 -j ACCEPT
 
Ich muss mal kurz "Offtopic" werden, bzw. dein Vorgehen hinterfragen. Was erhoffst du dir von pf? Ich würde vermuten, dass du einen Router hast, der die Internetverbindung aufbaut. Also bist du bereits "hinter" einem Gerät. Welche Aufgabe soll hier pf übernehmen (wenn dein OpenBSD-Rechner die Verbindung selbst aufbaut, ist das etwas anderes)?

Du möchtest Sicherheit. Soweit bin ich bei dir und finde es gut. Nur: Wieso möchtest du das auf deinem OpenBSD-Rechner regeln? Solltest du nicht dort ansetzen, wo der erste "Angriffspunkt" ist?
 
Ahh ich kenn man-in-the-middle eher als etwas auf IP-Ebene, zb ein "übernommener" Router bei nem ISP oder so.

Diese arp-sache kenn ich eher als arp-spoofing oder so. Das sind ja nicht so unbedingt die "Wald und Wiesenangriffe" im privaten Heimnetz mit ner Fritzbox oder so, sondern eher etwas bei SEHR gezielten angriffen - ensprechend.
(In beiden fällen funktioniert aber natürlich der Schutz durch HTTPS, SSH-Keys etc etc - dadurch das man hier lokale UND sobalds das lokale Netz verlässt schützt, liegt da auch glaube ich dtl. mehr der Fokus heutzutage. Aber wenn man wie du offenbar in einem potentiell extrem gefährlichen Netz ist, macht es natürlich sinn sich auch dadrüber gedanken zu machen.)

Da kann ich dir aber leider tatsächlich nicht helfen.

ICMP ist glaub ich bei ipv6 unabkömmlich für irgendwas mit der Addressvergabe, aber nagel mich da nicht drauf fest, ich habe leider gerade keine Zeit meine notizen dazu durchzusehen.
 
Bei meinem Linux hatte ich arptables installiert da konnte ich die Mac-Ádresse für mein Gateway festlegen.Damit war MITM ausgeschlossen. Wäre gut wenn es bei BSD eine ähnliche Lösung geben würde.
Für OpenBSD gibt es ipguard:
Comment:
protect LAN IP address space by ARP spoofing

Description:
ipguard prevents unregistered hosts from operating correctly on an
ethernet segment by sending a fake ARP reply when a device transmits
with a MAC/IP pair not listed in its configuration file.
Siehe: pkg_info ipguard
 
Okay ich sollte mal meine Situation näher erläutern. Ich lebe in einer WG mit Informatik Studenten die mich gerne mal Hacken. Wir haben ein Router mit den alle verbunden sind, also wir sind alle im selben LAN. Es kam schon öfter vor das sie arp-spoofing (Mitm war vlt falsch ausgedrückt) angewendet haben oder sogar sich zugriff auf mein Rechner verschafft haben.
Mir ist bewusst das openBsd an sich schon ziehmlich sicher ist , dachte mir das ich mit PF noch etwas sicherer bin. Also mein Hauptanliegen ist es mich vor angriffen innerhalb meines LANs besser zu schützen und nicht vor angriffen aus dem Internet.

Gibt es denn eine andere Firewalls oder andere Programme die besser als PF dafür geeignet sind? Wie gesagt bin neu bei bsd und hab noch keine übersicht was gut ist und was nicht.

@morromett Danke werd ich gleich mal testen.
 
Gibt es denn eine andere Firewalls oder andere Programme die besser als PF dafür geeignet sind?
Unter OpenBSD ist PF gut, aber arp kannst Du damit nicht filtern/blocken.
Konfiguriere ipguard und ich denke sie werden dein System (richtige IP-Adresse und MAC-Adresse) mit OpenBSD, mit einem arping oder arpscan nicht finden. Wenn dein Gerät (mit IP- und Mac-Adresse) nicht in deren arp-cache ist, haben sie auch mit anderen Protokollen (icmp. udp. tcp, ...) keinen Zugang zu deinem Gerät(OpenBSD).
 
Das klingt alles sehr sinnvoll, ich denke damit bist du dann schon ziemlich gut geschützt - die gängigen sachen (lange, sichere Kennwörter, darauf achten das https aktiviert ist) beachtest du ja sicher noch dazu, dann sollte nicht mehr allzuviel schief gehen.
 
Ja Passwörter sind alle über 20 Zeichen lang.
Werd mich weiter in dasThema ipguard einlesen.

Vielen Vielen Dank für eure schnelle Hilfe!!!
 
port 53 kannst Du noch mit zB 'to 1.1.1.1' eingrenzen, wenn du keinen eigenen resolver benutzt (siehe resolv.conf) - und auch auf tcp freigeben, da die grossen antworten (webseiten mit viel CDN aliases) sonst verlustig sind.

wenn der router das einzige lokale Geraet von Interesse ist, dann kannst du dessen MAC mit arp(8) statisch setzen:
arp -s hostname/ip router-mac permanent (kann man im hostname.if(5) persistieren)
 
Ich lebe in einer WG mit Informatik Studenten die mich gerne mal Hacken.

oder sogar sich zugriff auf mein Rechner verschafft haben.
Solche Späße haben wir vor 20 Jahren auf LAN-Parties gemacht als man sonst keine Probleme hatte, aber das war a) unter Kumpels und b) es waren keine destruktiven Aktionen. Sowas einmalig machen, um jemanden vllt. aufzuziehen oder für dieses Sicherheitsfeld zu sensibilisieren mag ok sein wenn man sich länger kennt. Aber nicht dauerhaft und nicht wenn man sich die Miete und ISP-Kosten mit Fremden seit ein paar Monaten teilt. Ich weiß, dass man heutzutage nicht einfach mal so umziehen kann, aber wenn da nicht ein Mindestmaß an Vertrauen herrscht, kann man das doch vergessen. Wo hört das denn auf? Sind dein Essen im Kühlschrank oder deine Wertsachen abends noch da?
Wäre ja schade, wenn man erst mit einem Hammer Vernunft reinprügeln müsste (BILDLICH gesprochen, in Minecraft).

Wenn du das Netz wo die Spaßvögel drin sind schon als Bedrohung einstufen musst, dann wäre es vielleicht eine Überlegung, dass du da deinen eigenen Router davorschaltest und dann erst dein eigentliches Endgerät. Möglicherweise ist das einfacher gleich dein eigenes Netz zu betreiben, als jedes deiner Geräte einzeln mit pf zu bestücken.
 
Ah ein Early Adaptor von Zero Trust ;)

Noch ein Hinweis: DNS auf Port 53 kann sowohl umgeleitet (siehe z.B. http://www.tedunangst.com/flak/post/turn-your-network-inside-out-with-one-pfconf-trick) als auch anders manipuliert werden (Adblocking auf DNS Basis liefert z.B. andere IP Adressen für Domains zurück die Werbung ausliefern). Hier würde ich dir empfehlen auf DNS over TLS (kann aber geblockt werden und die meisten Geräte machen dann einfach ein Downgrade auf DNS 53/udp) oder sogar DNS over HTTPS zu wechseln. Hat auch den Vorteil das deine Mitbewohner nicht mehr über die DNS Queries sehen welche URLs du ansteuerst. Alternativ außerhalb (bei der Familie z.B.) auf der Fritzbox (oder mit einem RaspberryPi) VPN aufsetzen.

PS: wie genau haben sie dich denn gehackt? Ich hoffe du protokollierst das alles (mit Screenshots/Aufzeichnung außerhalb der WG) falls es irgendwann doch mal zur Polizei/Anwalt gehen muss...
PPS: deine Festplatte ist hoffentlich auch verschlüsselt?
PPPS: vielleicht als Projekt vor den Semesterferien ein kleines Programm schreiben das ca. 64000 Verbindungen zu beliebigen Seiten aufbaut und dann z.B. mit 1 Bit/s den HTML Code dort ausließt? Dann kommen deine WG Freunde auch nicht mehr ins Internet... Was ziemlich schade wäre, oder?
 
In OpenBSD kannst Du für DNS auch unwind benutzen und in der unwind.conf, DoT
DoT DNS over TLS name servers configured in unwind.conf.
(dst-TCP-Port 853) benutzen.

Wenn sie nicht auf deinen PC/Laptop kommen, werden sie den Traffic deines Gerätes, über ihre Geräte umleiten (MITM) und versuchen die Datenpakete zu verändern.
 
Danke erstmal für eure Ideen und Vorschläge! An sich habt ihr Recht und ich müsste noch andere Schritte unternehmen aber bin nur noch ein halbes Jahr hier und dann bin ich weg aus der WG. Lassen wir mal das Wer und und Warum bei Seite.

Ich habe jetzt folgendes gemacht:
permanenten eintrag mit:
arp -s 10.0.0.2 00:90:27:bb:cc:dd permanent

Wollte noch das mit dem Tagging Ethernet Frames einstellen aber das hab ich nicht hinbekommen.

Ansonsten hab ich noch meine PF Regeln so angelegt:
set skip on lo0
set block-policy drop
block drop all
pass out keep state
block proto { icmp }
#Regel erstellt mit antispoof keyword:
antispoof quick for fxp0 inet

Und beutze jetzt DNS over TLS.

Ich denke mal jetzt bin safe.

Danke Leute!!!!
 
  • icmp komplett zu sperren ist hinsichtlich PMTUD kritisch, wenn du bei downloads Probleme bekommst, schau da
  • antispoof bringt dir bei einer NIC nichts
  • tagging fuer etherner geht nur auf einer bridge, und das ist wiederrum mit nur einer NIC etwas muehselig
  • wenn du schon block-policy setzt, brauchst du nicht extra 'drop'
 
Zurück
Oben