[Discussion] Features - Designing for Scaleability

Matt Jonkman jonkman at jonkmans.com
Wed Dec 3 22:40:58 UTC 2008


So you're thinking the tool should have it's own management protocol to
a central hub built in. To allow sensors to be relatively autonomous,
pulling config and reporting data through a single protocol?

Matt

Martin Holste wrote:
> John,
> 
> I think you've hit on some key points here.  I manage about a dozen
> sensors, and there is a definite line that is crossed somewhere around a
> half-dozen servers where managing the configuration and health of the
> boxes requires some power tools.  I prefer Nagios for general system
> health monitoring, so that has never been an issue.  Conversely, it has
> been an incredible challenge to manage rules and granular Snort
> performance on many boxes with multiple Snort instances.  I've taken the
> route you have with many home-grown scripts, etc., but there's always
> something new that comes out with Snort making the management
> difficult.  Specifically, dealing with SO rules throws a huge wrench in
> the works when dealing with mixed architectures. 
> 
> My strategy thus far has been to have my sensors completely self
> contained and manage them centrally using a home-grown system written in
> Perl to make generic queries and issue commands.  The databases which
> Snort writes to are on the box (performance really isn't impacted at all
> by doing this).  The Perl agent receives queries like "get all alerts in
> last X minutes," or "add this rule to the running configuration," or
> "calculate stats for Mbps and alerts per second for last 1000 ticks." 
> The key is that since all the data is on the sensor, it scales very
> well.  The central Perl client can then parallelize queries so all
> sensors can search at the same time much faster than if all the alerts
> were located in one central database.  Since everything goes through the
> central management client, it can easily log all the actions (and even
> queries) which are run for audit/change management purposes.
> 
> For encryption, I run everything through OpenVPN.  This works really
> well, especially for debugging, since it is much easier to tcpdump a
> tunnel interface than get a hook into a TLS socket.
> 
> I'm working on a 2.0 version of this architecture which will be entirely
> asynchronous, so that the sensors can alert the central management hub
> on predetermined criteria.
> 
> For truly large deployments, I think you're right that a parent-child
> setup might be necessary.  An exploration of peer-to-peer techniques
> might be an interesting, but I think that for simplicity, a tree
> hierarchy would make the most sense.  That is, a "hub" may have X number
> of servers assigned to it, and a hub higher up the tree would be able to
> ask hubs to delegate queries down the hierarchy.  It would be
> interesting to see if there would be performance gains versus attempting
> parallelized queries over thousands of sensors from just one hub.  My
> thinking is that some of the sensors could also function as hubs. 
> 
> I think that we need to remember that the vast majority of users do not
> deploy more than a few sensors, so we need to guard against spending too
> much devel time on features that will only serve a small percentage of
> the community.  That said, audit, change management, archiving, and
> other management features are things that benefit everyone.  As long as
> we keep it all modular, users can mix and match to get the features they
> require.
> 
> --Martin
> 
> On Tue, Nov 18, 2008 at 12:47 PM, John Pritchard
> <john.r.pritchard at gmail.com <mailto:john.r.pritchard at gmail.com>> wrote:
> 
>     Team,
> 
>     My apologies if I've missed this being covered previously. Or, if the
>     Bro framework already takes some of these things into consideration.
> 
>     I'd like to suggest that we take very large deployments into
>     consideration when designing our solution. The kind of problems you
>     encounter when managing an infrastructure with a handful or even a
>     dozen different IDS sensors is very different than trying to
>     efficiently and consistently manage infrastructures with larger
>     footprints (e.g. > 100+ sensors).
> 
>     A couple of suggestions to help our design address these potential
>     deployment and management scenarios:
> 
>     1) Centralized sensor and policy management platform (or framework)
>     --> Such a solution may be restricted to a single centralized server
>     or multiple servers.
>     --> Might be a parent -> child relationship among configuration
>     servers to segregate business units, or simply replication among
>     servers for disaster recovery / business continuity purposes
>     --> efficient, repeatable, and audit-able methodology for making
>     changes to both individual sensors as well as pre-defined groups of
>     sensors (e.g. dmz sensors, dns sensors, development lab sensors,
>     etc...)
>     --> My experience to date has been performing these kind of tasks with
>     home-grown scripts, ssh, scp, audit logs, etc... However, it would be
>     nice to find something a little more mature for this project.
> 
>     I have not used it, but there is a project called "Puppet" that looks
>     like it might be a good candidate for trying to develop a framework
>     along these lines:
>     http://reductivelabs.com/trac/puppet/wiki/PuppetIntroduction
> 
> 
>     2) Centralized sensor and policy monitoring platform (or framework)
>     --> This is similar to the "management framework" concept, but the
>     focus is more on device health monitoring... and possibly policy
>     integrity monitoring...
>     --> For this piece, I'm thinking of something that provides functions
>     such as looking at memory utilization, cpu utilization, hard-drive
>     space, network interface stats... and other "bits" such as dates and
>     checksums for critical configuration files changed (e.g. detection
>     policies, tuning policies, variable definitions, etc)...
> 
>     There are a number of open-source enterprise monitoring utilities out
>     there. Here's one I've been playing with recently:
>     http://www.zabbix.com/
> 
> 
>     3) Distributed Data Repositories
>     I know we briefly touched on the database stuff when talking about
>     schema design. I just wanted to add a plug for a couple of things
>     here:
>     --> encrypted communication channels (sensor -> DB or sensor -> sensor)
>     --> ability to simultaneously log to 2 or more data repositories
> 
>     I strongly agree with the concept of designing modular solutions. So,
>     these kind of features can be "bolted on" if they were required.
> 
>     Look forward to everyone's thoughts on how we can most effectively
>     tackle problems of scale for large deployments.
> 
>     Cheers, John
>     _______________________________________________
>     Discussion mailing list
>     Discussion at openinfosecfoundation.org
>     <mailto:Discussion at openinfosecfoundation.org>
>     http://lists.openinfosecfoundation.org/mailman/listinfo/discussion
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Discussion mailing list
> Discussion at openinfosecfoundation.org
> http://lists.openinfosecfoundation.org/mailman/listinfo/discussion

-- 
--------------------------------------------
Matthew Jonkman
Emerging Threats
Phone 765-429-0398
Fax 312-264-0205
http://www.emergingthreats.net
--------------------------------------------

PGP: http://www.jonkmans.com/mattjonkman.asc





More information about the Discussion mailing list