Hello, folks!

After a long hiatus because of reasons, I'm happy to announce Qubes
network server -- an add-on to Qubes OS that allows you to expose
selected AppVMs to other VMs and to other machines in your LAN as well. 
The latest tagged release is compatible with Qubes 4.0.

The URL to check is: https://github.com/Rudd-O/qubes-network-server

An excerpt from the README.md file follows here.  I hope this helps you
understand what possibilities Qubes network server opens up for you.

I'm happy to report that, with a minor readjustment (attaching my
networked AppVMs to NetVMs instead of ProxyVMs), this functions as an
adequate replacement for Qubes network server from release 3.2.

--------------------------------------------------------------


  QUBES NETWORK SERVER

This software lets you turn your [Qubes OS
4.0](https://www.qubes-os.org/) machine into
a network server, enjoying all the benefits of Qubes OS (isolation, secure
inter-VM process communication, ease of use) with none of the drawbacks
of setting up your own Xen server.


    WHY?

Qubes OS is a magnificent operating system, but there are so many use
cases that its networking model cannot crack:

  * As an automated integration testing system.  Qubes OS would be
    phenomenal for this, and its automation tools would make it
    extremely easy to bring up and tear down entire environments.
  * If only those environments could network with each other securely!*
    Remote management of Qubes OS instances.  Vanilla Qubes OS cannot
    easily be managed remotely.  A better networking model would allow
    for orchestration tools such as [Ansible
    Qubes](https://github.com/Rudd-O/ansible-qubes)  to manage entire
    Qubes OS deployments, all of their VMs, and even minutiae within
    each VM.
  * Anything that involves a secure server, serving data to people or
    machines, simply cannot be done under vanilla Qubes OS.


    ENHANCED NETWORKING MODEL

The traditional Qubes OS networking model contemplates a client-only use
case.  User VMs (AppVMs or StandaloneVMs) are attached to ProxyVMs,
which give the user control over outbound connections taking place from
user VMs.  ProxyVMs in turn attach to NetVMs, which provide outbound
connectivity for ProxyVMs and other user VMs alike.

No provision is made for running a server in a virtualized environment,
such that the server's ports are accessible by (a) other VMs (b)
machines beyond the perimeter of the NetVM.  To the extent that such a
thing is possible, it is only possible by painstakingly maintaining
firewall rules for multiple VMs, which need to carefully override the
existing firewall rules, and require careful thought not to open the
system to unexpected attack vectors.  The Qubes OS user interface
provides no help either.

Qubes network server changes all that.

With the Qubes network server software, it becomes possible to make
network servers in user VMs available to other machines, be them peer
VMs in the same Qubes OS system or machines connected to a physical link
shared by a NetVM.  Those network server VMs also obey the Qubes OS
outbound firewall rules controls, letting you run services with outbound
connections restricted.

This is all, of course, opt-in, so the standard Qubes OS network
security model remains in effect until you decide to enable the feature
on any particular VM.

The only drawback of this method is that it requires you to attach VMs
meant to be exposed to the network directly to a NetVM, rather than
through a ProxyVM.  VMs exposed through a ProxyVM will not be visible to
machines on the same network as the NetVM.


    HOW TO USE THIS SOFTWARE

Once installed (see the full README.md at the URL posted above), usage
of the software is straightforward.

These sample instructions assume you already have an AppVM VM set up,
named /testvm/, and that your /sys-net/ VM is attached to a LAN with
subnet 192.168.16.0/24.

First, attach the VM you want to expose to the network to a NetVM that
has an active network connection:

qvm-prefs -s testvm netvm sys-net

Then, set an IP address on the VM:

qvm-prefs -s testvm ip 192.168.16.25

(The step above requires you restart the /testvm/ VM if it was running.)

Then, to enable the network server feature for your /testvm/ VM, all you
have to do in your AdminVM (/dom0/) is run the following command:

qvm-features testvm routing-method forward

Now testvm is exposed to the network with address 192.168.16.25, as well
as to other VMs attached to its /sys-net/ NetVM.

Do note that /testvm/ will have the standard Qubes OS firewall rules
stopping inbound traffic.  To solve that issue, you can [use the
standard rc.local Qubes OS mechanism to alter the firewall
rules](https://www.qubes-os.org/doc/firewall/#where-to-put-firewall-rules)
in your /testvm/ AppVM.

-- 
    Rudd-O
    http://rudd-o.com/

-- 
You received this message because you are subscribed to the Google Groups 
"qubes-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to qubes-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/qubes-users/52aa19f0-6a8e-2809-49c1-760156217367%40rudd-o.com.

Reply via email to