project manager • Really believes in Open Source model • Programming since he was 9 years old • Ossim developer at its early stage • Python lover :-) • Debian package maintainer (a long, long time ago) • Sci-Fi books reader and mountain bike rider
infrastructure configuration • Ensure configurations are the same on all servers (or on a type of servers) • Auto-restart services on configuration changes • Auto-Install required packages
infrastructure configuration • Ensure configurations are the same on all servers (or on a type of servers) • Auto-restart services on configuration changes • Auto-Install required packages Don't sysadmin, develop configuration states. Make your life easier!
apache2 on all my frameworks • I don't want to have to shell into every server just to run an apt-get upgrade command • I have {n} servers that I want to check what version of {package} is installed
apache2 on all my frameworks • I don't want to have to shell into every server just to run an apt-get upgrade command • I have {n} servers that I want to check what version of {package} is installed "ssh in a for loop is not a solution" Luka Kanies, Puppet developer
remote execution • Still young (2011) but active developed • Other tools: ◦ puppet (ruby): fedora, mozilla, sans ◦ chef (ruby): openstack, cloudfoundry • Salt is easier (IMHO) than chef and puppet (steeper learning curve) • Configure states by writing simple lists of items (yaml), more readable for sysadmins than vanilla python or ruby
fine with Alienvault's Architecture • Easy Installation ◦ Squeeze debian packages, pip, bootstrap git • Easy Configuration ◦ No need to learn a new programming language • Extensible ◦ Develop Alienvault specific modules is quite easy!
thousands of servers • ZeroMQ based for messaging • Persistent connections / Parallel execution • MessagePack: fast and small message format (fluentd, redis, etc.)
mistakes • All configuration changes stored in a single and unique place (master filesever) • Private Git repository for Knowledge Database (configuration states developed at customers) • Reusable configurations for other deployments! • Just code one time, test it and apply where you need
for every single server on your infrastructure: • Hostname resolution • Custom plugins distribution • Remote code execution • Snort threshold and rules • Logrotate files • Rsyslog filters • Firewall rules • etc.
• Send commands to minions • Store configurations, files and resources for minions Minon (client) • Connects to Master • Listens for commands • Downloads configurations from Master and apply them (update config states)
file • git • group • host • locale • mount • mongo* • mysql* • pkg • postgres* • rabbitmq* • service • ssh* • timezone • user Custom modules can be written in Python!
By system information: Grains grains['os'] == 'Debian' and 'Server' in grains ['av_profile'] • By defined groups: Node Groups nodegroups: 'sensors': avsensor*.domain.com, foo.bar 'servers': av(siem|logger).domain.com, bar.foo • Mix combination: Compound 'webserv* and G@os:Debian or E@web-dc1-srv.*'
MSSPs and SOCs • Monitoring, Deployment and Management off all the infrastructure in a single dashboard • Configurations backup on demand • Patches and fixes distribution • Full Inventory • etc...