Introduction and Summary:
Headless VPS servers can suffer from a lack of random data inputs since there is little if any hardware to pull truly random data from (mouse, keyboard, webcams, entropy keys, etc.). A hack for semi-random data to be generated in software is possible with rng-tools. These instructions will help you install rng-tools on your VPS and hack the config to pull from the urandom file.Note: This random data is not truly random and it is generally not considered secure for highly sensitive applications. I'll be using it for generating obfuscation data, so true randomness is not important to me. Also, my paranoia level is in the mid to low range - if you're requiring higher security solutions, please skip this article.
Prerequisites:
- Linux Ubuntu 16.04 LTS Server
- Console Access
- Root level permissions
Instructions:
1. Connect to the server console (local or SSH)2. Install the rng-tools package:
sudo apt update && apt install rng-tools
Note: If you start the service, you will see that it fails:
systemctl status rng-tools3. Add the /dev/urandom path to the rng config file:
● rng-tools.service
Loaded: loaded (/etc/init.d/rng-tools; bad; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2017-10-26 04:11:02 EDT; 36min ago
Docs: man:systemd-sysv-generator(8)
Process: 299 ExecStart=/etc/init.d/rng-tools start (code=exited, status=1/FAILURE)
Oct 26 04:11:02 ubuntuvps systemd[1]: Starting rng-tools.service...
Oct 26 04:11:02 ubuntuvps rng-tools[299]: Starting Hardware RNG entropy gatherer daemon: (Hardware RNG device inode not found)
Oct 26 04:11:02 ubuntuvps rng-tools[299]: /etc/init.d/rng-tools: Cannot find a hardware RNG device to use.
Oct 26 04:11:02 ubuntuvps systemd[1]: rng-tools.service: Control process exited, code=exited status=1
Oct 26 04:11:02 ubuntuvps systemd[1]: Failed to start rng-tools.service.
Oct 26 04:11:02 ubuntuvps systemd[1]: rng-tools.service: Unit entered failed state.
Oct 26 04:11:02 ubuntuvps systemd[1]: rng-tools.service: Failed with result 'exit-code'.
sudo echo "HRNGDEVICE=/dev/urandom" >> /etc/default/rng-tools
4. Start the service again
systemctl start rng-tools
5. Check the status of rng-tools
systemctl status rng-tools
● rng-tools.service
Loaded: loaded (/etc/init.d/rng-tools; bad; vendor preset: enabled)
Active: active (exited) since Thu 2017-10-26 04:47:45 EDT; 2s ago
Docs: man:systemd-sysv-generator(8)
Process: 562 ExecStart=/etc/init.d/rng-tools start (code=exited, status=0/SUCCESS)
Oct 26 04:47:45 ubuntuvps systemd[1]: Starting rng-tools.service...
Oct 26 04:47:45 ubuntuvps rng-tools[562]: Starting Hardware RNG entropy gatherer daemon: rngd.
Oct 26 04:47:45 ubuntuvps systemd[1]: Started rng-tools.service.
Oct 26 04:47:45 ubuntuvps rngd[564]: RNDADDENTROPY failed: Operation not permitted
Blog Formatting Guide:
- Commands written in Consolas in BLUE are LOCAL Client Shell Commands (I'm running an Ubuntu local client)
- Commands written in Consolas in RED are REMOTE Server Shell Commands (usually in SSH)
- All commands in Courier and BOLD are CUSTOM user variables that your should change for your configuration.
- All text written in Courier and PURPLE are file contents as shown in a text editor.