Baremetal Universal Hydra Deployment
The baremetal hydra is intended for installations on Linux hosts running directly on hardware with no virtualization hypervisor. This will provide similar services to the universal hydra but it requires additional steps to deploy.
The reason for the baremetal Hydra is that a lot of customers use VMware and the hydra build was created originally for the VMware customers. However as a result of Broadcom acquiring VMware and changing the licensing model our customers approached us for more options for our Hydra Appliance. As a result we have created the Universal Hydra that runs in Azure, AWS, or on bare-metal equipment
The following guide will cover the aspects of a deployment from a SIEMonster perspective.
Assumptions:
That the platform this is being deployed on is Debian 12.5 or later
That ssh and users to access ssh with sudo permissions have been configured
That vim and wget is installed
The storage is setup with a default, not encrypted, LVM configuration via the Debian installer and it utilizes the entire disk.
Requirements:
You will need to add your user to the sudoers list, this will require the sudoers package to be installed by using the following command:
apt update && apt install sudo
Once the installation of sudoers completes run the following command substituting %user% for the user you have created.
echo "%user% ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
e.g. echo “hydra ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
Logout of ssh and log back in with the user you have added to sudoers. Now test that you can elevate privileges by typing sudo -s and Pressing [ENTER].
sudo -s
Next the timezone needs to be set to UTC. This is a HARD requirement to ensure that the data viewed in the webplatform reflects correctly. If you do not change the timezone to UTC your events will be displayed in the incorrect timezone and will impact your compliance/threat hunting.
You can change the timezone with the following command followed by rebooting the server.
timedatectl set-timezone UTC && reboot
The following packages are required to be installed before deployment can take place, the commands for the package installation have been included below. These commands MUST be run as root using the sudo -s command to elevate privileges with a normal user. The command can be copied and pasted.
apt update && apt install -y htop unzip python3-distutils python3-pip j2cli uuid-runtime
Download the following installation zip file by using the command displayed below
wget https://docs.siemonster.com/__attachments/70090753/hydra_bare_metal_debian_latest.zip?inst-v=800a9dd4-c2dd-4924-8620-534b520fff80
hydra_bare_metal_debian_latest.zip
The Sha256 for the file is
2a7874f5d202add5933c31cbcfc89e27f836801c99aeed4dac387f989bf0c0fd bare-metal-hydra.tar.gz
Unzip the file using the following command
unzip hydra_bare_metal_debian_latest.zip && cd bare-metal-hydra/
Now sudo -s to elevate privileges and run the following command
./metal_builder.sh
The first prompt will be to enter a hostname for the hydra, please choose carefully as this name will also be reflected in the bastion VPN console. The hostname should provide information of where it is deployed in many cases or its' purpose e.g. hydra-london or hydra-ny. In cases where there are tenants involved it may be prudent to add a tenant prefix to it as well. Such as tenant1-hydra-ny
![image-20240417-130430.png](../__attachments/70090753/image-20240417-130430.png?inst-v=f407cb41-07ba-4b4e-b8bb-137a0a2d3af9)
Press [ENTER] when you have entered the hostname you want
Press [ENTER] again for the disabled_services listing, do not make changes here unless instructed to do so by the SIEMonster team.
![image-20240417-130632.png](../__attachments/70090753/image-20240417-130632.png?inst-v=f407cb41-07ba-4b4e-b8bb-137a0a2d3af9)
Press [ENTER] on OVPN_SSL_Verify leaving the default setting in place
![image-20240417-130730.png](../__attachments/70090753/image-20240417-130730.png?inst-v=f407cb41-07ba-4b4e-b8bb-137a0a2d3af9)
Specify your bastion connection for OVPN_URL, e.g. if your SIEMonster instance domain is siem.example.com and the tenant you are connecting the hydra to is tenant1 the URL will be
https://bastion.tenant1.siem.example.com:8443
![image-20240417-131029.png](../__attachments/70090753/image-20240417-131029.png?inst-v=f407cb41-07ba-4b4e-b8bb-137a0a2d3af9)
Press [ENTER] on the OVPN_Login prompt, leaving the default value
![image-20240417-131344.png](../__attachments/70090753/image-20240417-131344.png?inst-v=f407cb41-07ba-4b4e-b8bb-137a0a2d3af9)
Specify your bastion password in the next prompt and Press [ENTER]
![image-20240417-131437.png](../__attachments/70090753/image-20240417-131437.png?inst-v=f407cb41-07ba-4b4e-b8bb-137a0a2d3af9)
In the K8S_DOMAIN prompt please add your top-level domain with a prefix of the tenant you are connecting the hydra to. e.g. for a siem domain of siem.example.com you would add tenant1.siem.example.com. Press [ENTER] when you have entered the desired value.
![image-20240417-131837.png](../__attachments/70090753/image-20240417-131837.png?inst-v=f407cb41-07ba-4b4e-b8bb-137a0a2d3af9)
In the TENANT_NAME prompt Enter the name of the tenant you are connecting to and Press [ENTER]
![image-20240417-131949.png](../__attachments/70090753/image-20240417-131949.png?inst-v=f407cb41-07ba-4b4e-b8bb-137a0a2d3af9)
In the NODE_NAME prompt, add the text you want the node to display as in your XDR cluster, Press [ENTER] when you have added the desired node name.
🔖 Please note: it is recommended to use the same name as the hostname to not confuse hydra’s with the wrong tenants etc.
![image-20240417-132115.png](../__attachments/70090753/image-20240417-132115.png?inst-v=f407cb41-07ba-4b4e-b8bb-137a0a2d3af9)
For the KEY_NAME prompt, please provide the Wazuh XDR cluster key that is present in the configuration on the central node with the following steps.
Login to the SIEMonster central platform
Click on XDR in the left column
Click on the drop down for modules at the top left
Click Management and then Click “Configuration”
Click “Edit configuration” ensuring that “node01 (master)” is selected in the dropdown
Find the “<cluster>” section in the configuration and type out the contents of the “<key>” variable on the hydra configuration screen.
Enter the key at the prompt and Press [ENTER]
If you have followed the instructions correctly you will see the following with no errors.
![image-20240417-133100.png](../__attachments/70090753/image-20240417-133100.png?inst-v=f407cb41-07ba-4b4e-b8bb-137a0a2d3af9)
The deployment script for your custom baremetal hydra has now been created. You will note a new file called bare_metal.sh appear on the file system. To deploy it run the following command:
./bare_metal.sh
When the script finishes you will be prompted to reboot. Press [ENTER] to reboot
![image-20240417-134156.png](../__attachments/70090753/image-20240417-134156.png?inst-v=f407cb41-07ba-4b4e-b8bb-137a0a2d3af9)
Wait for the host to reboot and reconnect via ssh.
Elevate privileges with sudo -s
Run the following command and verify that suricata, openvpn and wazuh containers are running. The container names are in the last column.
docker ps
![image-20240417-134431.png](../__attachments/70090753/image-20240417-134431.png?inst-v=f407cb41-07ba-4b4e-b8bb-137a0a2d3af9)
Also perform the following command to see if OpenVPN has connected. Check for an interface tun0 and it should have an IP starting with 192.168.230.
ifconfig
![image-20240417-134534.png](../__attachments/70090753/image-20240417-134534.png?inst-v=f407cb41-07ba-4b4e-b8bb-137a0a2d3af9)
Connect to the Wazuh container to see if the cluster is connected with the following commands
docker exec -it wazuh bash
tail -f /var/ossec/logs/cluster.log
You should see output similar to the following, to stop the tail command press [CTRL]+C and then [CTRL+D] to exit the container.
![image-20240417-134758.png](../__attachments/70090753/image-20240417-134758.png?inst-v=f407cb41-07ba-4b4e-b8bb-137a0a2d3af9)
Your baremetal hydra is now deployed.