kvm | macvtap - passthrough | Sicherheit Wirt?

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
slu
Beiträge: 2148
Registriert: 23.02.2005 23:58:47

kvm | macvtap - passthrough | Sicherheit Wirt?

Beitrag von slu » 01.10.2020 11:02:24

Hallo,

ich hab mit macvtap eine Netzwerkkarte (eno2) direkt in den Gast durch gereicht (passthrough).
Das funktioniert alles ausgezeichnet und der Wirt hat auf dem eno2 Interface keine IPv4 Adresse.
Der Gast soll komplett vom Netzwerk abgeschottet sein (DMZ) und nur über den Router/Firewall je nach Regel kommunizieren können, funktioniert auch.

Muss ich den Wirt noch in irgend einer Art und weise absichern?
Mir ist aufgefallen das eno2 zwar keine IPv4 Adresse hat, aber eine inet6 Adresse angezeigt wird.

Code: Alles auswählen

    <interface type='direct'>
      <mac address='52:54:00:c3:a1:a7'/>
      <source dev='eno2' mode='passthrough'/>
      <model type='e1000'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

Code: Alles auswählen

root@kvm0:/# dpkg -l | grep libvirt-daemon
ii  libvirt-daemon                       5.0.0-4+deb10u1                 amd64        Virtualization daemon
ii  libvirt-daemon-system                5.0.0-4+deb10u1                 amd64        Libvirt daemon configuration files
root@kvm0:/# cat /etc/debian_version 
10.6
root@kvm0:/#
Gruß
slu

Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.

Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER

TomL

Re: kvm | macvtap - passthrough | Sicherheit Wirt?

Beitrag von TomL » 01.10.2020 11:16:38

slu hat geschrieben: ↑ zum Beitrag ↑
01.10.2020 11:02:24
...und der Wirt hat auf dem eno2 Interface keine IPv4 Adresse.
Sorry, aber ich verstehe den Sinn dieses Setups nicht. Der Wirt (eno2) hat keine IPv4, also auch keine Verbindung ins LAN. Die VM hat eine IP, soll aber ebenfalls nicht ins LAN. Wofür braucht man denn dafür überhaupt eine VM? Wenn der Wirt selber vorher nicht ins LAN konnte, weil er keine IP hat, dann kann man ihn doch gleich so konfigurieren, wie die VM sein soll.... dann kann man sich doch das unnötige Heckmeck mit der VM sparen.
Der Gast soll komplett vom Netzwerk abgeschottet sein (DMZ) und nur über den Router/Firewall je nach Regel kommunizieren können, funktioniert auch.
Wie hast Du das kontrolliert, dass die Abschottung wirklich funktioniert?
Muss ich den Wirt noch in irgend einer Art und weise absichern?
Wogegen?
Mir ist aufgefallen das eno2 zwar keine IPv4 Adresse hat, aber eine inet6 Adresse angezeigt wird.
Was für eine? Warum ist das schlimm?

slu
Beiträge: 2148
Registriert: 23.02.2005 23:58:47

Re: kvm | macvtap - passthrough | Sicherheit Wirt?

Beitrag von slu » 01.10.2020 11:41:31

TomL hat geschrieben: ↑ zum Beitrag ↑
01.10.2020 11:16:38
Sorry, aber ich verstehe den Sinn dieses Setups nicht. Der Wirt (eno2) hat keine IPv4, also auch keine Verbindung ins LAN.
Hab ich nicht gut beschrieben, sorry.
Der Wirt selber hat eine bridge auf eno1 und hängt damit im LAN. Andere VM Gäste hängen auf der bridge an eno1 und sollen auch direkt im LAN sein.

Es geht mir nur um den einen Gast der vom Internet aus erreichbar sein muss, daher die Isolierung der VM.
TomL hat geschrieben: ↑ zum Beitrag ↑
01.10.2020 11:16:38
Wie hast Du das kontrolliert, dass die Abschottung wirklich funktioniert?
Die VM hängt jetzt über die extra Netzwerkkarte an einem eigenen Port der pfSense, ist damit über die pfSense komplett vom LAN isoliert weil eigenes Netz.
TomL hat geschrieben: ↑ zum Beitrag ↑
01.10.2020 11:16:38
Wogegen?
Ich möchte vermeiden das man vom Gast aus irgendwie auf den Wirt kommt, deshalb hinterfrage ich hier mein Setup.
Sollte kvm/libvirt mit <source dev='eno2' mode='passthrough'/> jedoch die Verbindung schon komplett isolieren hätte ich mein Ziel erreicht.
TomL hat geschrieben: ↑ zum Beitrag ↑
01.10.2020 11:16:38
Was für eine? Warum ist das schlimm?
Schlimm wäre es wenn hier eine Kommunikation statt finden würde welche mir nicht bewusst ist.
Das würde ich gerne beleuchten und verstehen.

Code: Alles auswählen

3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 52:54:00:c3:a1:a7 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::5054:ff:fec3:a1a7/64 scope link 
       valid_lft forever preferred_lft forever
Gruß
slu

Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.

Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER

TomL

Re: kvm | macvtap - passthrough | Sicherheit Wirt?

Beitrag von TomL » 01.10.2020 20:15:22

slu hat geschrieben: ↑ zum Beitrag ↑
01.10.2020 11:41:31
Es geht mir nur um den einen Gast der vom Internet aus erreichbar sein muss, daher die Isolierung der VM.
::
Ich möchte vermeiden das man vom Gast aus irgendwie auf den Wirt kommt, deshalb hinterfrage ich hier mein Setup.
Eine via macvtap-Device verbundene VM kann nicht mit dem eigenen Host kommunizieren, nur mit dem LAN. Mit einem macvlan-Device oder einer normalen Bridge wäre die Kommunikation hingegen auch zwischen Host und VM möglich.
Sollte kvm/libvirt mit <source dev='eno2' mode='passthrough'/> jedoch die Verbindung schon komplett isolieren hätte ich mein Ziel erreicht.
Libvirt tut das nicht, sondern macvtap bzw. dessen allgemeine Beschränkungen. Ich denke, für den Zweck ist macvtap die beste Wahl.

Code: Alles auswählen

3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet6 fe80::5054:ff:fec3:a1a7/64 scope link 
Das ist nur eine Link-Local-Adresse, die nicht im öffentlichen Adressraum verwendet werden kann.

slu
Beiträge: 2148
Registriert: 23.02.2005 23:58:47

Re: kvm | macvtap - passthrough | Sicherheit Wirt?

Beitrag von slu » 01.10.2020 22:53:30

Danke Thomas, dann lasse ich das Setup mit macvtap-Device so stehen.

Vielleicht etwas OT:

Wenn ich jetzt auf einem Ethernet Port mit mehreren VLANs (tagged) daher komme (um Netzwerkports zu sparen) hatte ich das seither so gemacht:

Code: Alles auswählen

# VLAN Adapter
auto enp10s0f0
iface enp10s0f0 inet manual

# VLAN VM1
auto br0.150
iface br0.150 inet manual
bridge_ports enp10s0f0.150
bridge_stp off
bridge_maxwait 0
bridge_fd 0

# VLAN VM2
auto br0.160
iface br0.160 inet manual
bridge_ports enp10s0f0.160
bridge_stp off
bridge_maxwait 0
bridge_fd 0
Die VM wurde dann direkt mit br0.150 bzw. br0.160 usw. verbunden.
Wenn ich deine Antwort richtig verstanden habe wäre hier nun das Risiko einer Kommunikation mit dem Wirt (oder habe ich das mit "inet manual" schon ausreichend geschützt?)

Gibt es da einen besseren Weg?
Die meisten VM's brauchen kein 1Gbit, da wäre es schon schöner wenn man über eine Verbindung (pfSense - KVM Wirt) und tagged VLANs für eine Trennung sorgen könnte.
Gruß
slu

Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.

Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER

TomL

Re: kvm | macvtap - passthrough | Sicherheit Wirt?

Beitrag von TomL » 02.10.2020 14:45:08

Sorry, aber ich habe leider keinen Schimmer, worüber Du hier sprichst..... :roll:

Ich weiß nicht, was Netzwerk-Ports sind... das kenne ich allenfalls an Switches oder Routern, ansonsten kenne ich nur die üblichen Netzwerk-Interfaces, physisch vorhandene und auch virtuelle, also so typische Devices wie eth0, eno1, wlan0, virbr, etc. Ohne Quellen-Angabe, woher dieser Code-Auszug oberhalb kommt ...?... ist es eine Programm-Ausgabe...?... oder der Inhalt einer Datei..?... kann ich mit dem Kram gar nix anfangen, da ist ja außer Text ohne Bezug keine Info enthalten. Man könnte ja auch raten, vielleicht ist es die "interfaces", allerdings kann ich mir das eher nicht vorstellen, wofür braucht man denn 2 Bridge-Devices? Ich kann mir grad kaum vorstellen, dass man für 2 VMs auch 2 Bridges zum gleichen LAN einrichtet....

Noch mal sorry, aber da fällt mir nix zu ein....
Die meisten VM's brauchen kein 1Gbit, da wäre es schon schöner wenn man über eine Verbindung (pfSense - KVM Wirt) und tagged VLANs für eine Trennung sorgen könnte.
Auch hier kapiere ich nicht was Sache ist und was 1 GB mit einer VM zu tun hat. Es spielt doch keine Rolle, ob 1 GB auf dem Netz anliegen oder nicht. Wenn die VM das nicht braucht, bedeutet das doch nicht, dass sie Dummy-Traffic erzeugt, um auf jeden Fall die verfügbare Menge auszunutzen. Und außerdem, Du sagst "trennen"... wenn Du mit Trennen meinst, was Trennen bedeutet, ist es doch am Ende völlig egal, ob 300 Baud oder 1 GBit... getrennt ist getrennt. Ich selber wüsste überhaupt keinen Grund, warum ich den Speed für eine VM kastrieren sollte... mir ist doch eher daran gelegen, dass sie das, was sie tun soll, dann schnell erledigen kann, wenn sie mal was zu tun kriegt.

slu
Beiträge: 2148
Registriert: 23.02.2005 23:58:47

Re: kvm | macvtap - passthrough | Sicherheit Wirt?

Beitrag von slu » 02.10.2020 15:04:46

Sorry das Thema ist komplexer als es mir bewusst war.

Ja es ist die /etc/network/interfaces, zur einfacheren Darstellung habe ich das Setup in ethX dargestellt (ohne bridge):

Code: Alles auswählen

pfSense -- [LAN] ---------------------------------- [eth0] KVM Host
pfSense -- [tagged VLAN 150,160] ---------- [eth1] KVM -- [nur VLAN 150] -- VM1
                                                       \_ [nur VLAN 160] -- VM2
Ich möchte also mein KVM Host ganz normal über eth0 ins LAN hängen und einige VM über eine Verbindung (eth1) zur pfSense verbinden.
Die pfSense hat auf diesem Port mehrere getagged VLANs welche damit am KVM Host anliegen. Dieser soll nun die VLANs als untagged an die VM's durch reichen.

Seither war das über eine bridge gelöst, aber wenn ich das so schreibe war das vermutlich unnötig.
Hätte es nicht einfach gereicht das eth1.150 per macvtap/passthrough direkt in die VM durch zu reichen?

Oder gibt es da einen noch viel besseren Weg den ich nicht sehe?

Sollte meine Beschreibung nicht ordentlich genug sein bitte ich um einen Hinweis.


Edit: Ich hab gerade gesehen das Du nochmal editiert hast.
Es geht mir nicht darum die Geschwindigkeit zu reduzieren, sondern nur VMs die ohnehin das 1GBit nicht nutzen können über einen physikalische NIC laufen zu lassen.
Deshalb die Idee eine NIC der pfSense mit einer NIC am Server zu verbinden und auf pfSense Seite einfach die tagged VLANs anlegen.
Jetzt müsste der KVM Wirt das VLAN nehmen und als "untagged VLAN" in die VM durch reichen.
Gruß
slu

Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.

Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER

Antworten