« March 2013 | Main | November 2012 »

Thursday, December 27, 2012

Encypting folders in OS X

encfs is a user level file system that provides strong encryption of files, and which works with Fuse to allow mounting encrypted folders as if they were a remote drive. The result is an easy to use method of creating a space to store sensitive data, but without creating a monolithic disk image that has to be backed up in it's entirety every time it gets touched. I've been using an encrypted disk image for this for a few years now, and the load on Time Machine or, in my case, Crash Plan, is pretty high. Also, this system will allow you to create an encrypted space in dropbox or other cloud storage system.

First, some caveats. If you do this and lose your password, you lose access to the encrypted files. Period. No ifs, ands, or butts. I strongly suggest that you also make an unecrypted copy of these files on a DVD or external drive that you can physically secure and do so on a regular basis. Finally, I can't really say whether doing this is better or worse than other approaches, but it seems to be a good idea to me.


There are a few sites out in the internet that have versions of fuse for OS X, but my favorite is OSXFuse on github. This fork is actively being updated, unlike macfuse, and has macfuse compatibilty layer. Get both fuse and sshfs from there--we're not talking about sshfs now, but it's a handy thing to have--it lets you mount any system you can use ssh to connect to as a mounted drive. Install the osxfuse package, this provides the hooks for user level file systems, it's a simple package install. An alternative fuse for OSX is fuse4X, but I haven't tried that one, see http://fuse4x.github.com

To get encfs, one possibility is to install boxcryptor. It's a nice wrapper, if you want a decent GUI for this, it's a decent option. Also, a hat tip to them for putting up information on how to do this, those were very helpful. You could also build the source found at http://www.arg0.net/encfs, and there are installers for in in brew, darwin ports, and fink (although the latter is not up to the current version). I just took the easy way out and used boxcryptor. If you use boxcryptor do make sure to do a custom install and uncheck the OSXFUSE option, since the main project page is a newer version.

When you run boxcryptor, it will lead you through creating one encrypted folder, I went ahead and put that into dropbox. When you do the install on a second machine with dropbox, it will find that folder--just click on the BoxCryptor.bc folder and it will prompt you for a password, and that folder will mount in the sidebar. Put stuff in, and it gets encrypted on the fly, dismount the folder when you're done.

But you can also use the command line to make other encrypted folders, for example:

mkdir ~/Crypt
encfs /Users/hays/Crypt.raw /Users/hays/Crypt

will make an encrypted folder that can be mounted to ~/Crypt as a fuse drive. In a shell, that folder will ~/Crypt, but in Finder, it will appear as OSXFUSE volume 0 (encfs) in that same dir. If you drag that folder to the Finder's sidebar, it will reappear there each time you mount the encrypted volume.

You may find this a little confusing at first--the key thing to remember is that any files that you place directly in the Crypt.raw folder will not be encrypted--the encryption occurs when you put files and folder into the mounted FUSE volume, and the encrypted files are stored in the Crypt.raw folder.

This latter bit is a bit more secure than boxcryptor's free version in that file and folder names are encrypted as well as the contents. To mount the filesystem:

encfs -i 20 /Users/hays/Crypt.raw /Users/hays/Crypt

You'll be prompted for a password, eh voilà!

Again, I want to stress that it is important to keep backups of whatever data you encypt in this manner--last spring I spent about an hour in a cold sweat trying to remember my password for an encypted disk image that contained my tax data.

Posted by bil at 11:29 AM
Edited on: Thursday, December 27, 2012 11:46 AM
Categories: Other Software

Monday, December 17, 2012

Installing Splunk forwarder on OS X

Splunk has a component called a forwarder, think of this as a thin client that forwards log data to a splunk server (the indexer, in particular). Here's a basic installation procedure for OSX. For this we will be using the darwin tarball, rather that the OS X dmg. The latter stores all of the data and configure inside of the OS X app bundle, and this strikes me as a Bad Idea (tm).

Also, since splunk isn't FOSS, so you'll need to go up to splunk.com to get a copy. I'll assume you already have a server step up somewhere--if you don't, there's no point to doing this.

Some general notes

The darwin forwarder installs in /opt. This is good in general, since it keeps the installation away from Apple's version of unixy goodness, but it might cause some issues if you use Darwin ports. I don't know if it does, since I don't use Darwin ports.

You have an option to use SSL to connect to the server. You should do this, but in my case, I found it better to try things out in a test setup without using SSL since setting up the certs can be a pain.

Initially, we'll try this running the splunk forwarder as root, but then we'll cut over to a different user. Running process as root if you don't have to is not a great idea.

You might also check out this:


Installing Splunk forwarder

So your first step is to get the splunk universal forwarder. Go ahead, I'll wait here.

Sudo to a root shell:

sudo /bin/bash

We'll do this all as root, so be careful with your typing.

Make a directory for this:

mkdir /opt

cd /opt

Assuming you downloaded the splunk forwarder through the browser, it should be in Downloads, copy it to /opt (but keep in mind that you'll be installing a later version than this, so the names will change).

cp ~/Downloads/splunkforwarder-4.3.1-119532-Darwin-universal.tgz /opt

Unpack the forwarder and enter the directory:

tar -xvzf splunkforwarder-4.3.1-119532-Darwin-universal.tgz

cd splunkforwarder

Start splunk

/opt/splunkforwarder/bin/splunk start --accept-license;

Open a second terminal window,

sudo /bin/bash

cd /opt/splunkforwarder/var/log/splunk

tail -f splunkd.log

You can check this window to see how well your forwarder is working.

Add your server to the configuration, you'll be prompted for your splunk userid and password for this, so it will be admin and whatever you changed your password to from changeme. Also, the ip number of your server is likely to be different:

/opt/splunkforwarder/bin/splunk add forward-server

Now, let's add a couple of logs to foward to the server:

/opt/splunkforwarder/bin/splunk add monitor /var/log/secure.log

/opt/splunkforwarder/bin/splunk add monitor /var/log/system.log

If everything goes well, at this point you should be able to look at the system.log and the secure.log from your splunk server's web interface.

Adding SSL Support

This is the best simple explanation I've found for using SSL with splunk. For this method, we're relying on splunk to make the CA, and then producing signed certs with passwords for some additional security.


Make a space to store the certs out of the way of the default installation:

mkdir /opt/splunkforwarder/etc/certs

chmod og-wrx certs

Posted by bil at 6:00 PM
Categories: Other Software, Work

Update to Timelox for OpenSSH 6.1p1

I just patched openssh 6.1p1 with the timelox code, I've posted the installer tgz file up at:


This will likely be the last of these I do, since sshguard does a better job of the same thing. If you're curious about this, see Timelox and TheHand.

Posted by bil at 3:55 PM
Categories: My Software