Install Splunk UBA on a single Linux server
Install Splunk UBA on a server with Oracle Enterprise Linux (OEL) or Red Hat Enterprise Linux (RHEL) installed. Splunk UBA version 5.4.2 requires OEL version 8.9 or 8.10 or RHEL version 8.8 or 8.10.
Prerequisites
- You must install Splunk UBA on a server that is running a supported operating system. See, Operating system requirements.
- Make sure your Red Hat Enterprise Linux license includes the proper subscription names. See, Additional RHEL requirements.
- Determine the interface of your system network configuration, for example
eth0,en0, etc. You will need this information later in the installation process.
Configure permissions for and prepare the caspida user
Enable sudo permissions for the caspida user.
- Use the
visudocommand to edit the/etc/sudoersfile. - If the following line exists, comment the line
Defaults requiretty. - Add the following lines at the end of the
/etc/sudoersfile.caspida ALL=(ALL) NOPASSWD:ALL Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin/etc/sudoersfile is read sequentially, so placing these lines at the end ensures that there is no impact to the caspida user from any existing accounts or group permissions. - Add the caspida user to the system. For example, assuming UID and GID 2018 is available:
groupadd --gid 2018 caspida useradd --uid 2018 --gid 2018 -m -d /home/caspida -c "Caspida User" -s /bin/bash caspida - Set the password for caspida user:
passwd caspida - Verify the caspida user permissions for newly created files and directories. See Validate the UMASK value.
Obtain the installation package
Download the following Splunk UBA software and RHEL packages:
- Obtain the Splunk UBA 5.4.2 software:
- Go to the Splunk UBA Software Installation Package page on Splunkbase.
- Download the file to the
/home/caspidadirectory. The name of the package issplunk-uba-software-installation-package_542.tgz.
Prepare the server for the installation
- From the command line, log in to the server as the root user, or log in as a different user then use
suorsudoto gain root user privileges. - Find the 1TB disks using the
fdiskcommand:fdisk -l/dev/sdband/dev/sdc. - Partition and format the partition on each disk found in step 2.
- Partition and format the partition on the
/dev/sdbdisk using the following series of commands. Verify that thealign-check opt 1command returns1 aligned.parted -a optimal /dev/sdb mklabel gpt mkpart primary ext4 2048s 100% align-check opt 1 quit - Format the partition using the
mkfscommand.mkfs -t ext4 /dev/sdb1 - Repeat the commands to partition and format the partition on
/dev/sdc:parted -a optimal /dev/sdc mklabel gpt mkpart primary ext4 2048s 100% align-check opt 1 quit - Format the partition using the
mkfscommand. When prompted, confirm that you want to continue.mkfs -t ext4 /dev/sdc1
- Partition and format the partition on the
- Get the block ID for each disk using the
blkidcommand. For example, to get the block IDs for/dev/sdb1and/dev/sdc1in our example:blkid -o value -s UUID /dev/sdb1 blkid -o value -s UUID /dev/sdc15c00b211-e751-4661-91c4-60d9f9315857. - Create new
/var/vcapand/var/vcap2directories.mkdir -p /var/vcap /var/vcap2 - Add the block IDs for the
/var/vcapand/var/vcap2partitions to the/etc/fstabdirectory. For example:UUID=5c00b211-e751-4661-91c4-60d9f9315857 /var/vcap ext4 defaults 0 0 UUID=e10ab5c0-c27a-4617-8945-daab6d597731 /var/vcap2 ext4 defaults 0 0 - Mount the file systems.
mount -a - Verify that the 1TB disks are mounted correctly using the
df -hcommand. For example:root# df -h Filesystem Size Used Avail Use% Mounted on ... /dev/sdc1 493G 77M 467G 1% /var/vcap2 /dev/sdb1 985G 43G 892G 5% /var/vcap ... - Inherit the permissions for the root user.
chmod 755 /var/vcap /var/vcap2 chown root:root /var/vcap /var/vcap2 - Make a directory for caspida software packages. Note: This should be different from caspida home directory (
/home/caspida).mkdir /opt/caspida chown caspida:caspida /opt/caspida chmod 755 /opt/caspida - Set the following environment variables for PostgreSQL in the
/etc/locale.conffile:LANG="en_US.UTF-8" LC_CTYPE="en_US.UTF-8" - Run the following command to source the /etc/locale.conf file:
source /etc/locale.conf - Verify that the host name resolves using the
host <host name>command. If it does not, verify your host name lookup and DNS settings. See, Configure host name lookups and DNS. - Modify
/etc/sysconfig/selinuxsetSELINUX=permissive. With SELINUX set toenforced, certain actions during installation and upgrade (for example, access to particular files) can be blocked. Set SELINUX topermissiveto allow Splunk UBA the necessary access so that actions are not blocked, but instead logged in the audit logs. - Verify that the system date, time and time zone are correct using the
timedatectlcommand, as shown below. The time zone in Splunk UBA should match the time zone configured in Splunk Enterprise.root# timedatectl status Local time: Mon 2019-04-08 14:30:02 UTC Universal time: Mon 2019-04-08 14:30:02 UTC RTC time: Mon 2019-04-08 14:30:01 Time zone: UTC (UTC, +0000) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: n/aUse the
timedatectlcommand to change the time zone. For example, to change the time zone to UTC:timedatectl set-timezone UTCntpq -pcommand to verify that NTP is pointing to the desired server. - Verify that
/proc/sys/net/bridge/bridge-nf-call-iptablesexists on your system and the content ofbridge-nf-call-iptablesis1. Run the following command to verify:cat /proc/sys/net/bridge/bridge-nf-call-iptablesYour situation Take this action /proc/sys/net/bridge/bridge-nf-call-iptablesexists on your system and the content is1.A. Run the following command to make sure this setting is preserved through any reboot operations:
B. Go to Step 18.echo net.bridge.bridge-nf-call-iptables=1 > /etc/sysctl.d/splunkuba-bridge.conf/proc/sys/net/bridge/bridge-nf-call-iptablesexists on your system but the content is not1.A. Run the following commands to set the content of the bridge-nf-call-iptables:
B. Run the following command to ensure that the settings persist through any reboot operations:sysctl -w net.bridge.bridge-nf-call-iptables=1
C. Go to Step 18.echo net.bridge.bridge-nf-call-iptables=1 > /etc/sysctl.d/splunkuba-bridge.conf/proc/sys/net/bridge/bridge-nf-call-iptablesdoes not exist on your system.A. Run the following commands to create the file and ensure that it is loaded on reboot:
B. Run the following commands to create and set the content of themodprobe br_netfilter echo br_netfilter > /etc/modules-load.d/br_netfilter.confbridge-nf-call-iptables:
C. Run the following command to ensure that the settings persist through any reboot operations:sysctl -w net.bridge.bridge-nf-call-iptables=1
D. Go to Step 17.echo net.bridge.bridge-nf-call-iptables=1 > /etc/sysctl.d/splunkuba-bridge.conf - Run the following command to ensure that /etc/sysctl.d/splunkuba-bridge.conf is readable by the caspida user:
chmod o+r /etc/sysctl.d/splunkuba-bridge.confIf that command returns without error, proceed to the next step.
- Verify that IPv6 drivers are available. To do this, check that
/proc/sys/net/ipv6/exists. For example:root# ls -l /proc/sys/net/ipv6/ total 0 -rw-r--r-- 1 root root 0 Mar 12 16:52 anycast_src_echo_reply -rw-r--r-- 1 root root 0 Mar 12 16:52 auto_flowlabels -rw-r--r-- 1 root root 0 Mar 12 16:52 bindv6only dr-xr-xr-x 1 root root 0 Mar 12 16:52 conf -rw-r--r-- 1 root root 0 Mar 12 16:52 flowlabel_consistency -rw-r--r-- 1 root root 0 Mar 12 16:52 flowlabel_state_ranges -rw-r--r-- 1 root root 0 Mar 12 16:52 fwmark_reflect dr-xr-xr-x 1 root root 0 Mar 12 16:52 icmp -rw-r--r-- 1 root root 0 Mar 12 16:52 idgen_delay -rw-r--r-- 1 root root 0 Mar 12 16:52 idgen_retries -rw-r--r-- 1 root root 0 Mar 12 16:52 ip6frag_high_thresh -rw-r--r-- 1 root root 0 Mar 12 16:52 ip6frag_low_thresh -rw-r--r-- 1 root root 0 Mar 12 16:52 ip6frag_secret_interval -rw-r--r-- 1 root root 0 Mar 12 16:52 ip6frag_time -rw-r--r-- 1 root root 0 Mar 12 16:52 ip_nonlocal_bind -rw-r--r-- 1 root root 0 Mar 12 16:52 mld_max_msf -rw-r--r-- 1 root root 0 Mar 12 16:52 mld_qrv dr-xr-xr-x 1 root root 0 Mar 12 16:52 neigh dr-xr-xr-x 1 root root 0 Mar 12 16:52 route -rw-r--r-- 1 root root 0 Mar 12 16:52 xfrm6_gc_threshIf the IPv6 drivers exist, skip to the next step.
If IPv6 drivers do not exist on your system, check if/etc/default/grubcontainsipv6.disable=1. IPv6 drivers will not be available on a system ifipv6.disable=1exists in/etc/default/grub. Ifipv6.disable=1is not present in/etc/default/gruband IPv6 drivers do not exist, consult with your system or network administrators. You will not be able to continue with the installation. If/etc/default/grubcontainsipv6.disable=1, perform the following tasks as root:- Remove
ipv6.disable=1from/etc/default/grub. - Recreate the grub config:
grub2-mkconfig -o /boot/grub2/grub.cfg - Reboot the machines. After the system comes up, make sure
/proc/sys/net/ipv6exists.
To disable IPv6 functionality for security, networking or performance reasons, create the
/etc/sysctl.d/splunkuba-ipv6.conffile as root. This file should contain the following content:
This procedure keeps the IPv6 drivers but turns off IPv6 addressing.net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 - Remove
- Create the
/etc/security/limits.d/caspida.conffile and add the following security limits for thecaspidauser to this file:caspida soft nproc unlimited caspida soft nofile 32768 caspida hard nofile 32768 caspida soft core unlimited caspida soft stack unlimited caspida soft memlock unlimited caspida hard memlock unlimitedNote: Make sure the root account does not have any security limits. - If you are not using IPv6 on your network, edit the
/etc/yum.conffile and add the following entry so that only IPv4 addresses are used by yum/rpm:ip_resolve=4 - If you have any firewall configuration enabled, such as firewalld, disable the configuration during installation. Run the following command:
systemctl disable firewalld - Restart the system.
init 6 - After the system restarts, use the following command to verify that the host name matches your host name lookup and DNS settings. See Configure host name lookups and DNS.
hostname --fqdn
Turn on FIPS compliance
Federal Information Processing Standard (FIPS) compliance is available with Splunk UBA version 5.4.0 and higher. Complete the following steps to turn on FIPS on each Splunk UBA node before running the install.sh script in the Install Splunk UBA section.
- Run the following command to check the current status of FIPS:
sudo fips-mode-setup --check - On each node, run the following command to turn on FIPS:
sudo fips-mode-setup --enable - After successfully turning on FIPS, reboot the system:
sudo reboot - Confirm FIPS is turned on:
sudo fips-mode-setup --check - You can also verify the status using the following command.
Note: You see a 1 if FIPS is turned on, otherwise 0.
cat /proc/sys/crypto/fips_enabled
Install Splunk UBA
Perform the following steps to install Splunk UBA.
- Log in to the command line as the caspida user using SSH.
- Verify that the caspida user has umask permissions set to 0022 or 0002.
umaskIf the returned values are not supported, edit the
~/.bash_profileand the~/.bashrcfiles and append:umask 0022 - Copy the file for Splunk UBA Software Installation from Splunkbase to the
/home/caspidadirectory. - Untar the file for Splunk UBA Software Installation in
/home/caspidadirectory.tar xvzf /home/caspida/splunk-uba-software-installation-package_542.tgz - Untar the Splunk UBA platform software to the
/opt/caspidadirectory.tar xvzf /home/caspida/Splunk-UBA-Platform-5.4.2-20250304-24168929.tgz -C /opt/caspida/ - Untar the Splunk UBA Packages for RHEL to the
/home/caspidadirectory.tar xvzf /home/caspida/Splunk-UBA-5.4.2-Packages-RHEL-8.tgz -C /home/caspida - Run the installation script.
/opt/caspida/bin/installer/redhat/INSTALL.sh /home/caspida/Splunk-UBA-5.4.2-Packages-RHEL-8/var/log/caspida/install.log.-
If you do not use One-Time-Password (OTP) or Multi-Factor Authentication (MFA) methods, and you see the following error, run the command
sudo yum remove krb5-workstation. If you do use OTP or MFA skip to sub-step b.error: Failed dependencies: krb5-libs(x86-64) = 1.18.2-22.el8_7 is needed by (installed) krb5-workstation-1.18.2-22.el8_7.x86_64 libkadm5(x86-64) = 1.18.2-22.el8_7 is needed by (installed) krb5-workstation-1.18.2-22.el8_7.x86_64 -
If you use One-Time-Password (OTP) or Multi-Factor Authentication (MFA) methods, and you see the following error, run the command
sudo yum downgrade krb5-workstation.error: Failed dependencies: krb5-libs(x86-64) = 1.18.2-22.el8_7 is needed by (installed) krb5-workstation-1.18.2-22.el8_7.x86_64 libkadm5(x86-64) = 1.18.2-22.el8_7 is needed by (installed) krb5-workstation-1.18.2-22.el8_7.x86_64 -
Then rerun the installation script.
-
- Generate SSH keys using the
ssh-keygen -t rsacommand. Press enter for all the prompts and accept all default values. For example:[caspida@ubahost-001]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/caspida/.ssh/id_rsa): Created directory '/home/caspida/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/caspida/.ssh/id_rsa. Your public key has been saved in /home/caspida/.ssh/id_rsa.pub. The key fingerprint is: SHA256:Ohe1oSpUtNT8siJzvn2lFLrHmVH7JGKke+c/5NRFb/g caspida@ubahost-001 - Add the SSH keys to the server and adjust the permissions to allow the server to access them.
cat /home/caspida/.ssh/id_rsa.pub >> /home/caspida/.ssh/authorized_keys chmod 600 /home/caspida/.ssh/authorized_keys - SSH to the server without a password using the host name or internal IP.
ssh <uba host name>; exit - Check the system status with the
uba_pre_check.shshell script. Run the following command on a single-node deployment and be sure to replace<node1>with the actual host name of your system.
Check system status before and after installation for more information about the script./opt/caspida/bin/utils/uba_pre_check.sh <node1> - Run the setup script.
/opt/caspida/bin/Caspida setup- When prompted, accept the license agreement and confirm removal of existing metadata.
- When prompted, type the host name of the Splunk UBA server installation. For example, type
uba01-prodif uba01-prod is the host name of your Splunk UBA server. - When prompted, confirm that you want to continue setting up Splunk UBA.
- The log file is
/var/log/caspida/caspida.out.
- Verify the host name of all the nodes using the following command:
hostname - Make sure all the nodes have a consistent setup. If using fully qualified domain names (FQDN) then all nodes should output FQDN in the host name command. If the short name is used, then all nodes should output the short name in the host name command.
-
If FQDN is used then in the pre_check script provide the FQDN of all the nodes, for example:
/opt/caspida/bin/utils/uba_pre_check.sh <NODE1_FQDN> <NODE2_FQDN> <NODE3_FQDN> -
When prompted for a list of host names in the setup script, if the output of the host name command is FQDN, then provide a CSV list of FQDN host names, for example:
<NODE1_FQDN>,<NODE2_FQDN>,<NODE3_FQDN>Note: If you plan on connecting to Splunk Cloud Platform to run queries for datasources, use fully qualified domain names (FQDN), not short names, for your Splunk UBA hostnames.
-
- After setup completes:
- Open a web browser and log in to the Splunk UBA server with the default admin credentials to confirm a successful installation. The default username is
adminand password ischangeme. See Secure the default account after installing Splunk UBA for information about the default accounts provided with Splunk UBA and how to secure them. - See Verify successful installation for more information about verifying a successful installation.
- Open a web browser and log in to the Splunk UBA server with the default admin credentials to confirm a successful installation. The default username is