bhyve mit pf filtern

PaulAtreides

Well-Known Member
Wie kann ich den Zugriff auf eine VM aus dem lokalen Netzwerk einschränken?
Mein FreeBSD Server hat die IP 10.0.20.18. Die VM hat die IP 10.0.20.17.
Ich möchte, dass nur Benutzer aus dem Bereich 10.0.30.0/24 auf den Server zugreifen können.
Sowie SSH über den Router 192.168.176.2 und der Drucker über FTP von 10.0.20.0/24.
Die VM soll aber noch vollen Zugriff auf das Internet haben.

Mit der folgenden Konfiguration wird die VM komplett gesperrt.

int_if = "lagg0"

localnet = "{10.0.30.0/24}"
servernet = "{10.0.20.0/24}"
firewall = "192.168.176.2"
vm_win10 = "10.0.20.17"
server = "10.0.20.18"

set block-policy drop
set loginterface $int_if
set skip on lo0
set fingerprints "/etc/pf.os"

block log all
pass from (self)

antispoof for lo0
antispoof for $int_if

icmp_types = "{ echoreq, unreach, timex }"
pass log inet proto icmp icmp-type $icmp_types

local_tcp_server = "{ ssh, http, https, microsoft-ds, 5900 }"

pass in on $int_if proto tcp from $localnet to $server port $local_tcp_server
pass in on $int_if proto tcp from $firewall to $server port {ssh}

pass in on $int_if proto tcp from $servernet to $server port {ftp}
pass in on $int_if proto tcp from $servernet to $server port 50000:50999

pass in on $int_if proto tcp from $localnet to $vm_win10
 
Liegt wahrscheinlich am falschen Interface für die VM. Das Interface für VM ist "vm-public"
Werde ich am Montag prüfen.
 
Ich habe wohl die Dokumentation nicht aufmerksam genug gelesen. vm-public dient als software switch für die VM's. tap0 ist das Interface für meine VM. Nun habe ich vm-public komplett geöffnet (skip) und zum testen tap01 auch. Leider schließe ich mit dieser Config komplett aus und ich komme gar nichts mehr ins System. Warum?

int_if = "lagg0"
hive_if = "vm_public"
win10_if = "tap0"

localnet = "{10.0.30.0/24}"
servernet = "{10.0.20.0/24}"

firewall = "192.168.176.2"

#################
# DEFAULT OPTIONS
#################

set block-policy drop
set loginterface $int_if
set skip on {lo0, hive_if}
set fingerprints "/etc/pf.os"
scrub in all

#################
# DEFAULT BLOCK
#################

block log all
pass from (self)

################
# ANTISPOOF
################

antispoof for lo0
antispoof for $int_if

################
# ICMP
################

icmp_types = "{ echoreq, unreach, timex }"
pass log inet proto icmp icmp-type $icmp_types

###############
# LOCALHOST SERVER
###############

local_tcp_server = "{ ssh, http, https, microsoft-ds, 5900 }"

pass in on $int_if proto tcp from $localnet port $local_tcp_server

# Router Zugang
pass in on $int_if proto tcp from $firewall port {ssh}

# FTP
pass in on $int_if proto tcp from $servernet port {ftp}
pass in on $int_if proto tcp from $servernet port 50000:50999

###############
# VM
###############

pass quick on $win10_if all

###############

# By default, do not permit remote connection to X11
block return in on ! lo proto tcp to port 6000:6010
 
Hast du mal in die Logs geschaut? Ansonsten fallen mir die pass-Regeln auf, die scheinbar nicht passen. Du erlaubst beispielsweise Traffic von deiner Firewall von Port 22. Ist das genau so gewollt oder möchtest du Traffic von der Firewall zu Port 22 erlauben?
 
Ja das ist gewollt. Über das Internet kann ich mich per SSH auf den Router einloggen und von da aus kann ich dann zum Server

Folgendes war falsch:
set skip on {lo0, $hive_if}
pass in on $int_if proto tcp from $localnet to port $local_tcp_server
pass in on $int_if proto tcp from $firewall to port {ssh}
pass in on $int_if proto tcp from $servernet to port {ftp}
pass in on $int_if proto tcp from $servernet to port 50000:50999

Trotzdem wird aber immer noch das Zugang zur VM blockiert.
rule 0/0(match): block out on vm-public: 10.0. ....

Mit "set skip on {lo0, $hive_if}" sollte doch alles offen sein
 
Ja das ist gewollt. Über das Internet kann ich mich per SSH auf den Router einloggen und von da aus kann ich dann zum Server

Folgendes war falsch:


Trotzdem wird aber immer noch das Zugang zur VM blockiert.


Mit "set skip on {lo0, $hive_if}" sollte doch alles offen sein
Genau diese Dinge, die falsch waren, hatte ich doch gemeint… wie können die gewollt gewesen sein? Egal, viel Erfolg dir!
 
Zurück
Oben