Redes en el sistema operativo Qubes [cerrado]

3

Comencé a usar Qubes OS recientemente y quiero configurar un IDS e IPS virtual en máquinas virtuales separadas, pero no puedo entender cómo funcionan las comunicaciones entre diferentes máquinas virtuales aquí.

Cada máquina virtual debe estar aislada y todas las conexiones deben ser manejadas por un FirewallWM (sys-firewall) separado, que está conectado a NetWM (sys-net), que, en la configuración básica, es el único que tiene un Dispositivo de Red. adjunto (tarjetas Ethernet y WiFi).

He leído iptables en todas las máquinas virtuales y encontré que VM Manager configuró automáticamente una redirección DNAT para permitir que los paquetes DNS (puerto 53) salgan a través de sys-net, pero no puedo entender cómo pueden pasar todos los paquetes a través de cada capa y regresar a las diferentes fuentes originales AppVM conectadas a través de sys-firewall .

En lo que respecta a IDS e IPS, puedo manejar y filtrar paquetes de manera sencilla según el contenido, pero no puedo pensar en cómo filtrar. Por ejemplo, IP de origen basada en una lista negra, ya que no puedo ver el origen real y cada máquina virtual es un sistema separado que se puede basar en diferentes plantillas (Fedora, Debian, Whonix, ...). Creo que las opciones de paquetes pueden modificarse.

Entonces, ¿ iptables y las auditorías como Psad solo se pueden colocar en la VM que está directamente conectada al Router?

Alguna información básica

  • Qubes OS es un sistema basado en el aislamiento a través de la tecnología de virtualización de hardware que le permite ejecutar diferentes dominios (personal, de trabajo, no confiable, ...) basados en diferentes sistemas (plantillas) en máquinas virtuales y cada instancia está completamente separada de otras. de modo que si uno se ve comprometido, el sistema permanece limpio y totalmente utilizable
  • Puede elegir qué dispositivos se conectan a una máquina virtual y separarse de ella, por lo que en la configuración estándar y con experiencia, tiene una máquina de sys-net que es la única que puede conectarse a Internet (Ethernet / WiFi conectada) y un sistema -firewall de la máquina que maneja todas las conexiones y pasa a través de sys-net, por lo que tiene 2 niveles (puede agregar más) de aislamiento para los otros dominios (por ejemplo, PublicWiFi - > sys-firewall - > sys-net, Trusted - > sys-firewall - > sys-net)

Publicaré las salidas sys-firewall y sys-net ifconfig y iptables-save , para brindarle todos los detalles.

Detalles de máquinas virtuales:

             me | updbl |  type |         netvm |          ip |    ip back | gateway/DNS |
----------------+-------+-------+---------------+-------------+------------+-------------+
         {dom0} |   Yes | Admin |           n/a |  10.137.0.2 | 10.137.0.1 |         n/a |
      {sys-net} |       |   Net |           n/a |        None | 10.137.1.1 |         n/a |
 {sys-firewall} |       | Proxy |       sys-net |  10.137.1.8 | 10.137.2.1 |  10.137.1.1 |
   {sys-whonix} |       | Proxy |  sys-firewall | 10.137.2.10 | 10.137.3.1 |  10.137.2.1 |
      {sys-usb} |       |   Net |           n/a |        None | 10.137.4.1 |         n/a |
    [fedora-23] |   Yes |   Tpl | *sys-firewall |  10.137.2.3 |        n/a |  10.137.2.1 |
      untrusted |       |       | *sys-firewall |  10.137.2.9 |        n/a |  10.137.2.1 |
     [debian-8] |   Yes |   Tpl |  sys-firewall |  10.137.2.4 |        n/a |  10.137.2.1 |
       personal |       |       |             - |        None |        n/a |         n/a |
    [whonix-gw] |   Yes |   Tpl |    sys-whonix |  10.137.3.5 |        n/a |  10.137.3.1 |
    [whonix-ws] |   Yes |   Tpl |    sys-whonix |  10.137.3.6 |        n/a |  10.137.3.1 |
    anon-whonix |       |       |    sys-whonix | 10.137.3.11 |        n/a |  10.137.3.1 |

sys-firewall iptables:

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

:PR-QBS - [0:0]
:PR-QBS-SERVICES - [0:0]

-A PREROUTING -j PR-QBS
-A PREROUTING -j PR-QBS-SERVICES

-A POSTROUTING -o vif+ -j ACCEPT
-A POSTROUTING -o lo -j ACCEPT
-A POSTROUTING -j MASQUERADE

-A PR-QBS -d 10.137.2.1/32 -p udp -m udp --dport 53 -j DNAT --to-destination 10.137.1.1
-A PR-QBS -d 10.137.2.1/32 -p tcp -m tcp --dport 53 -j DNAT --to-destination 10.137.1.1

-A PR-QBS -d 10.137.2.254/32 -p udp -m udp --dport 53 -j DNAT --to-destination 10.137.1.254
-A PR-QBS -d 10.137.2.254/32 -p tcp -m tcp --dport 53 -j DNAT --to-destination 10.137.1.254

sys-firewall ifconfig:

eth0      Link encap:Ethernet  HWaddr 00:16:3e:5e:6c:06  
          inet addr:10.137.1.8  Bcast:10.255.255.255  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:N errors:0 dropped:0 overruns:0 frame:0
          TX packets:N errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:N errors:0 dropped:0 overruns:0 frame:0
          TX packets:N errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 

sys-net iptables:

COMMIT

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

:PR-QBS - [0:0]
:PR-QBS-SERVICES - [0:0]

-A PREROUTING -j PR-QBS
-A PREROUTING -j PR-QBS-SERVICES

-A POSTROUTING -o vif+ -j ACCEPT
-A POSTROUTING -o lo -j ACCEPT
-A POSTROUTING -j MASQUERADE

-A PR-QBS -d 10.137.1.1/32 -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.1.1
-A PR-QBS -d 10.137.1.1/32 -p tcp -m tcp --dport 53 -j DNAT --to-destination 192.168.1.1

-A PR-QBS-SERVICES -d 10.137.255.254/32 -i vif+ -p tcp -m tcp --dport 8082 -j REDIRECT

sys-net ifconfig:

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1  (Local Loopback)
        RX packets N bytes N
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets N bytes N
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vif62.0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.137.1.1  netmask 255.255.255.255  broadcast 0.0.0.0
        ether fe:ff:ff:ff:ff:ff  txqueuelen 32  (Ethernet)
        RX packets N bytes N
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets N bytes N
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp0s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.4  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 30:3a:64:3a:a2:2d  txqueuelen 1000  (Ethernet)
        RX packets N bytes N
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets N bytes N
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
pregunta JumpAlways 31.01.2017 - 11:28
fuente

1 respuesta

1

Es mejor pensar en un proxy VM de Qubes (como sys-firewall) como un enrutador de Linux normal que tiene una configuración de DNS ligeramente extraña. Como enrutador, esto significa que la mayor parte de la acción ocurre en la cadena FORWARD y ahí es donde quieres que vayan las reglas de filtrado.

Hay dos formas de agregar reglas de filtrado:

  1. En la pestaña Configuración / Firewall para cada máquina virtual conectada a la proxyVM. Esto le permite personalizar fácilmente para cada appVM.

  2. Como iptables comandos en / rw / del proxyVM config / qubes-firewall-user-script diseñado para este propósito.

La opción 1 es una opción sencilla, aunque limitada. Solo debe recordar que la configuración se aplica dentro del proxyVM ascendente, no a la VM adjunta a la configuración. (Esto tiene sentido porque la VM descendente es la afectada por la configuración. También puede experimentar agregando reglas aquí y observando las reglas de iptables resultantes en el proxyVM).

La opción 2 requiere editar y habilitar el script, y tener en cuenta:

A) el tipo de reglas de FORWARD qubes-firewall agrega (como ya ha visto), y estas pueden cambiar cuando se cambian las opciones de la pestaña Configuración / Firewall

B) el hecho de que FORWARD se purga y se reconstruye cuando se producen ciertos eventos

C) que el script qubes-firewall-user es el último paso en ese proceso de reconstrucción; es el vehículo para mantener sus reglas a pesar del proceso de reconstrucción

    
respondido por el tasket 14.07.2017 - 20:23
fuente

Lea otras preguntas en las etiquetas