Douglas Garstang <doug.garst...@gmail.com> writes:

> What about the script that mounts the file system? That could be
> compromised. This seems somewhat like security via obscurity to me.
> Your security is only as good as it's weakest link, and the script that
> runs every day would be the weakest link. Therefore, there doesn't seem
> to be much point in going into an extra level of effort to secure other
> parts of tripwire if the script is still a vulnerability.

I was assuming you'd leave the file system mounted all the time.

> And... this doesn't help with my key issue anyway. Lets say that the
> client system mounts /etc/tripwire every day so that it can run it's
> check. This means that puppet has to put the client side key on the
> network file server, which means it's still not running on the same
> machine as the puppet master, which is essentially the same
> configuration in the first place.

Right, but you're only putting it on one system that has write access to
it, namely the file server, and you can lock that system down much more
completely.  That one system holds all the keys for all your Tripwire
databases, server and site.

At that point, it's not clear that you need to use Puppet to manage the
database and keys on the file server, since they're just data that lives
in one place at that point.  (Well, you might want a backup.)  Of course,
if you want to treat them as configuration, then yes, you have a Puppet
issue still -- I didn't mean to say it's not a reasonable question.  But I
think you're in a better spot for the client systems.

But yes, you need to ensure that the attacker can't just unmount the file
system and replace it with local directories with a new database, etc.
The normal way that one does this is that one puts the checking binary on
the network file system as well, compiles a cryptographic key into the
checking binary, and then has the binary checksum itself and then sign its
report with that key.  You then need infrastructure to check that the
report is signed with a valid key, and also that you get a report every
day, and that it's not a replay of the previous day's.  Samhain does some
stuff like this.

In practice, most people stop some point short of this, since after all, a
sophisticated attacker may be able to load a kernel module that will
prevent Tripwire from seeing that binaries have changed.  It's all just
moving the problem, and it's a question of how much you want to defend
against.  I just like network file systems for this stuff because if you
have them handy, it's an easy way to make the database part more robust.

(For the record, we put our Tripwire databases in AFS so that they're
read-only and put the Tripwire binary in AFS, run it from cron on each
server, mail the results to a central collection point, and check for
servers that aren't sending reports.  We don't defend against replacing
the cron job with just mailing out a clean report, and we don't use
cryptographically signed binaries, although we keep thinking about a
project to do both of those.)

-- 
Russ Allbery (r...@stanford.edu)             <http://www.eyrie.org/~eagle/>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-us...@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to