Moin,
ich bin gerade dabei mich ein wenig in pf einzuarbeiten. Folgendes Szenario: Ich habe einen FreeBSD 10.3-Rechner, der als Standardgateway dienen soll. Da der Aufbau ein wenig komplexer wird (zumindest für mich), würde ich Schritt für Schritt vorgehen wollen, weil das dann für mich leichter verständlich ist. Sobald das alles fertig ist, bin ich auch gerne bereit einen wiki-Artikel zu schreiben.
Als Ausgangsconfig nehme ich /usr/share/examples/pf/faq-example1, welche ich an meine Gegebenheiten anpasse. Zusatzkommentare für hier kennzeichne ich mit ##: Der Übersichtlichkeit wegen habe ich erstmal eine Minimalkonfig übernommen.
Soweit funktioniert natürlich alles. Kommen wir zum ersten Schritt. Auf dem Router läuft ein OpenVPN, der von extern erreichbar sein soll. Dies habe ich wie folgt ermöglicht (natürlich an den korrekten Stellen hinterlegt):
Danach kann der VPN-Client die Verbindung aufbauen. Nächster Schritt und damit die erste Frage bevor ich mit den weiteren Schritten fortfahre: Die Clients sollen nicht nur pingen können (was wohl per "pass in inet proto icmp all icmp-type $icmp_types" ermöglicht wird), es soll auch eine rdp-Verbindung aufgebaut werden können. Ich dachte an:
Das funktioniert aber nicht, die Verbindung wird abgelehnt. Nehme ich "block in" raus, funktioniert es natürlich. Ich tippe auf einen Denkfehler/Leichtsinnsfehler. Nur wo ist der?
pflog (was ich testweise aktiviert habe), sagt mir folgendes:
Gruß
ich bin gerade dabei mich ein wenig in pf einzuarbeiten. Folgendes Szenario: Ich habe einen FreeBSD 10.3-Rechner, der als Standardgateway dienen soll. Da der Aufbau ein wenig komplexer wird (zumindest für mich), würde ich Schritt für Schritt vorgehen wollen, weil das dann für mich leichter verständlich ist. Sobald das alles fertig ist, bin ich auch gerne bereit einen wiki-Artikel zu schreiben.
Als Ausgangsconfig nehme ich /usr/share/examples/pf/faq-example1, welche ich an meine Gegebenheiten anpasse. Zusatzkommentare für hier kennzeichne ich mit ##: Der Übersichtlichkeit wegen habe ich erstmal eine Minimalkonfig übernommen.
Code:
# macros
ext_if="em1"
int_if="em0"
# tcp_services="{ 22, 113 }"
## ssh brauche ich nicht von extern. Was macht Port 113 (auth)?
icmp_types="echoreq"
# options
set block-policy return
set loginterface $ext_if
set skip on lo
# scrub
scrub in
# nat/rdr
nat on $ext_if inet from !($ext_if) -> ($ext_if:0)
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
# filter rules
block in
pass out
anchor "ftp-proxy/*"
antispoof quick for { lo $int_if }
pass in inet proto icmp all icmp-type $icmp_types
pass quick on $int_if no state
Code:
udp_services="{ openvpn }"
pass in on $ext_if inet proto udp from any to ($ext_if) port $udp_services
Code:
vpn_if="tun0"
pass in on $vpn_if inet proto tcp from any to $int_if port rdp
pflog (was ich testweise aktiviert habe), sagt mir folgendes:
Code:
00:00:04.968495 rule 0..16777216/0(match): block in on tun0: 10.8.0.10.25458 > 192.168.1.200.3389: Flags [S], seq 221194745, win 65535, options [mss 1368,nop,wscale 6,sackOK,TS val 519017793 ecr 0], length 0
Gruß