first impressions: @vultr Bare Metal Server w/ pre-installed FreeBSD 12.0

I signed-up to be on the waiting list last week, but quickly noticed today there was a spot available. They had a promo with 2 x 240GB SSDs so I took the bait and tried out their Bare Metal Server running a pre-installed FreeBSD 12.0-RELEASE amd64 (my choice).

Deployed and in less than 3 minutes, I had access to the box via SSH. I made observations and noted minor issues I had with the default setup.

  • /etc/fstab pointed to /dev/ufs/rootfs
  • drive cyclinder errors on the console window
  • unable to boot your own FreeBSD ISO image to start from scratch

After searching online for hints, I found this thread addressing the exact issues I had with bsdinstall – after running it once more and using /dev/ada1 as the target disk, I’m taken back to a shell prompt instead of the normal reboot after a fresh install.

Proceeded to update /etc/fstab to point to /dev/ada1p2 and rebooted with no issues. Ran the installer once more but this time, used /dev/ada0 as the target disk; updated /etc/fstab to point to /dev/ada0p2 and rebooted with no issues. The “cylinder errors” on the console window I mentioned earlier also disappeared.

YMMV, but this was a learning experience for me. By the way, if you have Floating IPs on the same data center as the bare metal server, you can use those with this setup.

Here’s a closer look at the errors I encountered:

Sep 10 16:53:50 guest kernel: GEOM: diskid/DISK-PHDV723501UJ240AGN: the secondary GPT header is not in the last LBA.
Sep 10 16:53:50 guest kernel: Trying to mount root from ufs:/dev/ufs/rootfs [rw]...
Sep 10 16:53:50 guest kernel: GEOM: diskid/DISK-PHDV723501UJ240AGN: the secondary GPT header is not in the last LBA.

Sep 10 17:15:46 guest kernel: UFS /dev/ada0p2 (/) cylinder checksum failed: cg 5, cgp: 0xf3ecdcef != bp: 0x59b1fb60
Sep 10 17:15:46 guest kernel: UFS /dev/ada0p2 (/) cylinder checksum failed: cg 5, cgp: 0xf3ecdcef != bp: 0x59b1fb60

@vultr, SSH tunneling & jump host

I’ve got a few @vultr instances that have Squid listening for connections that I also use to tunnel through my local machine’s HTTP/HTTPS traffic.

In the example config below, Piscataway is the “jump host” to Frankfurt & Tokyo

Remember to modify the “username”, “ip address” & “port” values accordingly. Also, I’m assuming you already have an IdentityFile setup.

edit ~/.ssh/config and add the lines below:

Host piscataway
        User username
        Hostname piscataway_sshd_ip_address
        Port 22
        IdentityFile /path/to/file
        LocalForward 1234 piscataway_squid_ip_address:3128

Host tokyo
        User username
        Hostname tokyo_sshd_ip_address
        Port 22
        IdentityFile /path/to/file
        ProxyCommand ssh -q -W %h:%p piscataway
        LocalForward 5678 tokyo_squid_ip_address:3128

Host frankfurt
        User username
        Hostname frankfurt_sshd_ip_address
        Port 22
        IdentityFile /path/to/file
        ProxyCommand ssh -q -W %h:%p piscataway
        LocalForward 6969 frankfurt_squid_ip_address:3128

To connect to “Frankfurt” & tunnel through, simply type: ssh frankfurt then configure your local machine Proxy settings to point to port 6969

To verify your IP address, you can use

WordPress Security Tips 2019

  • Before you install the latest and greatest hyped WordPress security plugin out there, first, do some basic inventory of what lives in the DocumentRoot – depending on your setup, there may be several of these locations. Manually examine them closely using a shell or file browser.

  • Setup a @vultr VPS for $6/month and utilize the provided IPv4 address to enforce IP-based restriction in any and all your WordPress sites – most importantly, your /wp-admin/ and /wp-json/ areas. There are other uses for such VPS – the IP address stuff is just one of many.

  • Inventory your plugins & themes thoroughly – don’t need it? deactivate then delete it completely from /wp-content/plugins/ and /wp-content/themes/. Don’t let any be a sitting duck waiting to be exploited.

  • And lastly, ensure your site(s) are running the latest WordPress code base. Undefined symbol “RAND_egd”

When you compile Apache 2.4.x & OpenSSL 1.1.x on FreeBSD from source (ports), and you also use “pkg” to install or upgrade applications, you’ll run into all sorts of random errors – one of them is Undefined symbol “RAND_egd”

To fix the problem, try this remedy which seems to work:

cd /usr/ports/security/openssl111/
make deinstall clean
make install clean

add this line to /etc/make.conf 

then continue...

cd /usr/ports/devel/apr1
make deinstall clean
make install clean

cd /usr/ports/www/apache24/
make deinstall clean
make install clean

troubleshooting Apache 2.4.x/mod_dav issues

Resolving issues when you encounter 401 (auth) or 403 (forbidden) related errors is relatively easy. Tailing log files and looking at directory/file permissions from the console is the starting point.

But what happens when you encounter what is called an “500 – Internal Server Error”? It turns out, there are multiple levels of logging available you can set globally or within the context of a <Directory> or <VirtualHost > directive. See for more details.

In one of our hiccups, setting “LogLevel trace8” revealed inadequate permissions were set for the DavLockDB file – rendering endless error 500s when transferring files or creating new folder/directories.

[Sun Dec 30 06:57:17.xxxxxx 2018] [dav:error] [pid xxxxx:tid xxxxxxxxx] [client x.x.x.x:xxxxx] Could not open the lock database. [500, #400]

[Sun Dec 30 06:58:27.xxxxxx 2018] [dav:error] [pid xxxxx:tid xxxxxxxxx] [client x.x.x.x:xxxxx] The locks could not be queried for verification against a possible "If:" header. [500, #0]

A simple permissions tweak to DavLockDB /path/to/file and restarting Apache resolved the problem.

Here’s a few Apache 2.4.x directives to look over whenever similar issues arise:


OpenSSL 1.1.x & TLS 1.3

Looking under the hood, it looks like OpenSSL 1.1.1a is the default install on FreeBSD 12.0-RELEASE base. We use Squid 4.4 & Apache 2.4.37 both of which had to be recompiled.

Just a few notes if you share a similar configuration:

  • build /usr/ports/security/openssl111/ or use pkg
## modify /etc/make.conf to reflect


## modify httpd.conf to reflect something similar to these:

SSLProtocol -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 +TLSv1.3 

Once all modifications are finalized, restart Apache and fire up to verify.

To verify with Squid, use

$ squid -v
Squid Cache: Version 4.4
Service Name: squid

This binary uses OpenSSL 1.1.1a 20 Nov 2018. For legal restrictions on distribution see

Please note the above configuration purposely disables SSLv3 & TLSv1.0-1.1 – only TLSv1.2 and 1.3 are enabled with corresponding ciphersuites. All other connections will fail.

Alaska – The Last Frontier

Danskoya (Norway), Hokkaido (Japan) and Alaska (USA) are three places I’d like to visit someday with my wife & kids.

The serenity, blistering cold, vast spaces of wilderness, tributaries of flowing rivers & lakes, majestic coastlines, the rich history of local natives are just some of the reasons why I am drawn to these remote places.

I don’t spend a lot of time watching television. But if I do, I set aside time to enjoy documentary shows about Alaska on the Discovery Channel, PBS and other stations.

The blog post title is one of those shows alongside “The Last Alaskans”, “Life Below Zero”, “Alaskan Bush People” and many others.

What I find most fascinating with these shows are the endless stories about survival in the outdoors, family and ancestral history, team work with family members & neighbors, passed on traditions and rituals and most importantly – being responsible by taking advantage of opportunities to the fullest.

yours truly, @warehouseninja

Bootable USB Drives with Rufus

written by Pete Batard, this neat tool helps you create bootable USB drives of various types of operating systems. It supports .img and .iso source files just to name a few.

The software is free & open-source and can be downloaded from

At, we utilize Rufus to create & maintain bootdisks for Windows 10 and FreeBSD. It has proven to be very valuable for all our hardware/software deployments.

WebRTC in Firefox & Chrome

If you don’t need WebRTC, you can disable it:

In Firefox, type about:config in the URL bar then search for media.peerconnection.enabled, highlight it then right-click and select Toggle to set the Value to false

In Chrome, install the WebRTC Leak Prevent plugin by Aaron Horler and set the IP-handling policy to Disable non-proxied UDP (force proxy)

To test both browsers for IP-address leaks, use