# Security Onion, RedHunt OS, Proxmox, and Open vSwitch If you have attended some of my classes and read some of my books, you know that I really like [Proxmox](https://www.proxmox.com/en/). I have several Proxmox clusters that I use for my training courses and to develop labs to learn new cybersecurity skills (offensive and defensive techniques). You can instantiate Linux systems such as [Kali Linux](https://www.kali.org/), [WebSploit](https://websploit.org), [Parrot](https://parrotlinux.org/), [BlackArch](https://blackarch.org/), [Security Onion](https://securityonion.net), [RedHuntOS](https://github.com/redhuntlabs/RedHunt-OS), and others in different VMs to practice and learn new skills in a safe environment. Systems like [Security Onion](https://securityonion.net) and [RedHuntOS](https://github.com/redhuntlabs/RedHunt-OS) come with with [Snort](https://www.snort.org/), [Suricata](https://suricata-ids.org/), [ELK](https://www.elastic.co/what-is/elk-stack), and many other security tools that allow you to monitor your network. You have to setup [port mirroring](https://en.wikipedia.org/wiki/Port_mirroring) for IDS/IPS systems like Snort to be able to monitor traffic. In Proxmox, you can setup [Linux bridges](https://pve.proxmox.com/wiki/Network_Configuration) and [Open vSwitch (OVS) bridges](https://pve.proxmox.com/wiki/Open_vSwitch). ## OVS Setup I strongly recommend to use OVS bridges to send traffic to your Security Onion VM (or whatever other VM you would like to capture packets or monitor for IDS/IPS functions. - **Note:** A bridge is another term for a Switch. It directs traffic to the appropriate interface based on mac address. Open vSwitch bridges should contain raw ethernet devices, along with virtual interfaces such as OVSBonds or OVSIntPorts. These bridges can carry multiple vlans, and be broken out into 'internal ports' to be used as vlan interfaces on the host. 1. First, you need to update the package index and then install the Open vSwitch packages by executing: ``` apt update apt install openvswitch-switch ``` 2. Then you can create an OVS bridge and assign the interfaces of each VM that you want to capture packets to that OVS bridge. 3. You then configure the `tap` interfaces. These are only visible in the system shell (not in the Proxmox GUI) and are added automatically for VMs attached to an OVS-bridge interface. The naming convention of the tap interfaces is based on the ID of the VM they are assigned to, with the name `tap[VM-ID]i[interface#]`. For example, these are some of the interfaces in one of the Proxmox nodes/servers in one of my clusters: ``` ┌─[root@hermes]─[~] └──╼ #ip -brie a lo UNKNOWN 127.0.0.1/8 ::1/128 enp0s31f6 DOWN enp1s0f0 UP enp1s0f1 DOWN enp3s0f0 UP enp3s0f1 DOWN vmbr0 UP 192.168.78.10/24 fe80::92e2:baff:fe84:dbd0/64 vmbr1 UP 10.1.1.10/24 fe80::a236:9fff:fe1c:2430/64 vmbr2 UNKNOWN fe80::f84b:12ff:fe3c:6e61/64 ovs-system DOWN vmbr3 UNKNOWN fe80::208a:52ff:fe6d:504f/64 tap109i0 UNKNOWN fwbr109i0 UP fwpr109p0@fwln109i0 UP fwln109i0@fwpr109p0 UP tap109i1 UNKNOWN tap109i2 UNKNOWN fwbr109i2 UP fwpr109p2@fwln109i2 UP fwln109i2@fwpr109p2 UP tap112i0 UNKNOWN fwbr112i0 UP fwpr112p0@fwln112i0 UP fwln112i0@fwpr112p0 UP tap112i1 UNKNOWN fwbr112i1 UP fwpr112p1@fwln112i1 UP fwln112i1@fwpr112p1 UP tap114i0 UNKNOWN tap119i0 UNKNOWN fwbr119i0 UP fwpr119p0@fwln119i0 UP fwln119i0@fwpr119p0 UP tap119i1 UNKNOWN fwbr119i1 UP fwpr119p1@fwln119i1 UP fwln119i1@fwpr119p1 UP tap121i0 UNKNOWN veth122i0@if59 UP fwbr122i0 UP fwpr122p0@fwln122i0 UP fwln122i0@fwpr122p0 UP veth122i1@if64 UP fwbr122i1 UP fwpr122p1@fwln122i1 UP fwln122i1@fwpr122p1 UP tap126i0 UNKNOWN fwbr126i0 UP fwpr126p0@fwln126i0 UP fwln126i0@fwpr126p0 UP veth130i0@if73 UP fwbr130i0 UP fwpr130p0@fwln130i0 UP fwln130i0@fwpr130p0 UP veth136i0@if78 UP fwbr136i0 UP fwpr136p0@fwln136i0 UP fwln136i0@fwpr136p0 UP fwbr109i1 UP fwln109o1 UNKNOWN veth115i0@if89 UP fwbr115i0 UP fwln115o0 UNKNOWN tap106i0 UNKNOWN fwbr106i0 UP fwpr106p0@fwln106i0 UP fwln106i0@fwpr106p0 UP tap106i1 UNKNOWN ``` `tap106i0` is the first (0) virtual interface created for VM with ID 106, and `tap106i1` is the second such interface. In order to send all traffic on the OVS bridge to the Security Onion VM (VM 106). I use the following command in the Proxmox node: ``` ovs-vsctl -- --id=@p get port tap106i1 \ -- --id=@m create mirror name=span1 select-all=true output-port=@p \ -- set bridge vmbr3 mirrors=@m ``` `vmbr3` is the OVS bridge for that internal network. This creates a new “mirror” object named “span1”. Span1 will send any IP traffic on the `vmbr3` OVS bridge to the second virtual interface on VM 106 (tap106i1).