
Ich habe pf mit IceFloor auf meinem OSX 10.9-System mit Server 3.0.2 eingerichtet. Alles scheint in Ordnung zu sein, außer dass ich keine Verbindung zum System über den DNS-Namen oder die öffentliche IP von localhost herstellen kann. Ich kann z. B. vom Internet aus eine Verbindung zu http/Port 80 herstellen, aber nicht von der Maschine selbst über die öffentliche IP. Die Verbindung von der Maschine zu localhost/127.0.0.1 funktioniert. Hier ist das Protokoll, das ich erhalte (xxxx ist die öffentliche IP des Hosts):
rule 7/0(match): block in on en0: x.x.x.x.80 > x.x.x.x.64460: Flags [R.], seq 1, ack 1, win 65535, length 0
Und hier ist die Liste der Regeln
$ sudo pfctl -s rules
[sudo] password for paul:
No ALTQ support in kernel
ALTQ related functions disabled
scrub-anchor "icefloor.nat" all fragment reassemble
anchor "icefloor.nat" all
block drop in quick from <emergingthreats> to any
block drop out quick from any to <emergingthreats>
block drop in log quick from <_blacklist> to any
block drop out log quick from any to <_blacklist>
block drop in quick from no-route to any
block drop in quick from urpf-failed to any label "uRPF"
block drop log inet all label "Generic_blocks_(IPv4)"
block drop log inet6 all label "Generic_blocks_(IPv6)"
anchor "icefloor.groupblocks" all label "Blocks"
anchor "inspector.blocks" all label "Temp_blocks"
anchor "icefloor.exceptions" all label "Logs_exceptions"
anchor "icefloor.portknocking" all label "Hidden_services"
anchor "icefloor.genericipv6" all
anchor "icefloor.inbound" all label "Local_services"
anchor "icefloor.outbound" all label "All_traffic"
anchor "icefloor.outbound_nat" all label "NAT_clients_traffic"
anchor "icefloor.custom_rules" all
Können Sie mir sagen, welches das rule 7/0(match)
ist? Und warum ist es nicht erlaubt, vom lokalen Host aus eine Verbindung zum öffentlichen Schlüssel herzustellen (über alle offenen Ports)? Hat das etwas mit der no-route
f-Regel zu tun? Oder mit den beiden Generic_blocks_
-Regeln?
Dank im Voraus,
Paul
Antwort1
Ich stand auch vor diesem Problem und musste eine ganze Menge Tests durchführen, tcpdump
um alles herauszufinden.
Um Ihre erste Frage zu beantworten, welches das rule 7/0(match)
ist: Es ist die Regel „Generic_blocks_(IPv4)“, die automatisch von IceFloor hinzugefügt wird, um allen nicht explizit autorisierten Datenverkehr zu blockieren und zu protokollieren. Sie können die Nummer dieser Regel bestätigen, indem Sie als Root ausführen pfctl -gsr
.
Nun zum Grund, warum es blockiert ist. Die eingehende Verbindung ist blockiert. Es hat nichts mit der No-Route oder irgendetwas in dersichtbarRegelsatz. Es hängt davon ab, wie Ihr DNS-Name lokal behandelt wird. Die Routing-Tabelle () Ihres Computers enthält einen Eintrag für Ihren DNS-Namen, der auf die Schnittstelle netstat -r
verweist .localhost
lo0
Der Protokolleintrag enthält einige rätselhafte Informationen, insbesondere den block in on en0
, was Sie glauben lässt, dass etwas an der Schnittstelle passiert en0
. Die Durchführung von tcpdump -nvvvi en0 tcp and port 80
zeigte jedoch, dass tatsächlich keine Pakete auf unterwegs waren en0
. Es wurden jedoch Pakete mit gefunden tcpdump -nvvvi lo0 tcp and port 80
, was bestätigt, dass der Datenverkehr (wie erwartet) auf stattfand lo0
.
Die Standardkonfiguration von IceFloor ( /Library/IceFloor/icefloor.conf
) wird mit einer Zeile generiert, die enthält set skip on lo0
. Auf den ersten Blick scheint dies eine sehr standardmäßige, willkommene Zeile zu sein (siehehttp://www.openbsd.org/faq/pf/options.html). Alle anderen Teile lo0
schienen von den PF-Regeln unbeeinflusst zu sein. Auf gut Glück habe ich beschlossen, diese Zeile auszukommentieren und eine neue Regel hinzuzufügen (direkt nach dem Tabellen-Include): pass quick on lo0
. Nach dem erneuten Laden mit dieser geänderten Konfiguration konnte ich erfolgreich über meinen DNS-Namen auf meinen Webserver zugreifen (Problem gelöst). Es sieht also so aus, als ob die set skip on lo0
Zeile einige Probleme hat.
Der Nachteil beim manuellen Ändern der icefloor.conf
Datei besteht darin, dass Sie dann die Registerkarte „Firewall“ in der IceFloor-Oberfläche nicht mehr verwenden können. Denn das Speichern einer neuen Konfiguration würde alle manuellen Änderungen überschreiben.