PCI DSS Compliance
The Payment Card Industry (PCI) Data Security Standard (DSS) mandates
the use of file integrity monitoring software. Version 1.1 of the PCI DSS
includes the following two requirements:
Sect. 11.5: "Deploy file integrity monitoring
software to alert personnel to unauthorized modification of critical system
or content files; and configure the software to perform critical file
comparisons at least weekly."
Sect. 10.5.5: "Use file integrity monitoring and change
detection software on logs to ensure that existing log data cannot be
changed without generating alerts (although new data being added should
not cause an alert)."
While weekly checks can be done with any open-source file integrity checker,
to the best of our knowledge Samhain is the only one that can perform
incremental checks on growing logfiles (i.e. verify at each check that
the data present at the preceding check have not been modified meanwhile),
as required by Sect. 10.5.5 of the PCI DSS.
Centralized Management
Samhain can be used standalone on a single host, but its particular
strength is centralized monitoring and management. The complete
management of a samhain system can be done from one central location.
To this end,
several components are required.
A full samhain client/server system is built of the following components:
- The samhain file/host integrity checker
-
- This is the client/agent on the monitored host(s).
It is designed to run as a daemon.
This avoids repetitive warnings,
because the daemon keeps a memory of file changes.
However, if you prefer, it can also be invoked from cron.
- The yule log server
-
- Yule collects and logs reports from samhain clients on remote
(or the local) hosts.
- Yule allows samhain clients to download
baseline databases and
runtime configuration files (if stored on the server)
at startup.
- Yule keeps track of the status of clients, and can inform
you if a client seems to be dead.
- If you have edited a client's runtime configuration file
on the server, yule can advise the client to
reload the configuration file.
- A relational database
-
-
The server will store reports
from clients in this database. Oracle, MySql, or PostgreSQL
are supported. While a database is in general not required, it is
neccessary for the next component.
- The Beltane II web-based console
-
- Beltane II is a PHP application available as separate
package.
- Beltane II will pull reports from the database,
and present them for review.
- It then allows the user to update the client's baseline
databases stored on the server, to reflect the file system
changes reported by the client.
- Additionally, Beltane II gives access to the client status as
known by the server, and to the server interface for asking clients
to reload their configuration.
Host Integrity Monitoring
Samhain is extensible by modules that can be compiled in at
the users' discretion. The following list shows which modules are
currently available. The documentation contains a HOWTO for creating
additional modules.
- Logfile monitoring/analysis
-
-
As of version 2.5.0, samhain optionally perform logfile
monitoring/analysis. Currently supported formats are UNIX syslog,
Apache (and compatible) access and error logs, Samba logfiles,
and BSD-style process accounting logs.
-
Both whitelisting and blacklisting policies are supported. Perl-style
regular expression can be used to match logfile entries.
-
Samhain supports checking for correlated events, for missing heartbeat
messages, and automatic detection of bursts of repeated messages.
- Windows registry check
-
-
On Windows/Cygwin, it is possible to check the integrity
of individual keys
(or hierarchies of keys) in the registry.
- SUID/SGID files
-
-
Samhain can optionally check the filesystem for new
SUID/SGID files.
-
This check can be scheduled independently from the regular
file check.
-
Optionally, samhain can strip SUID/SGID permissions from
new SUID/SGID files, or quarantine or delete them. By default, it will
just report them.
- Open ports
-
-
Samhain can optionally monitor which ports are open on the
local host, and compare agains a list of allowed or required
port/services.
-
On Linux and FreeBSD, also the program having the
port open will be reported.
- Process check
-
-
Samhain can optionally check for processes that are hidden
(i.e. not listed in the output from 'ps'), or fake
(i.e. listed by 'ps', but non-existent). Additionally, it is possible
to check for the existence of (user-defined) required processes.
- Mount check
-
-
Samhain can optionally monitor the presence and mount
options of mounted filesystems.
- Login/logoff events
-
-
Samhain can optionally monitor and report
login/logoff events.
-
This check uses the system utmp file.
Logging Options
The verbosity and on/off status of each log facility can
be configured individually.
-
Central log server. Messages are sent via encrypted
TCP connections. Clients need to authenticate to the server.
-
Syslog.
-
Console (if daemon) / stderr.
-
Log file. To prevent unauthorized modifications of
existing log records, the log file entries are signed.
-
E-mail (built-in mailer). E-mail reports are signed to
prevent tampering.
- RDBMS (currently MySQL, PostgreSQL, and Oracle are supported;
support for unixODBC is untested).
- Execute external program — this can be used to implement
arbitrary additional logging facilities, or to perform active
response to events.
Security
There is always a trade-off between security and convenience, and thus
you may want to keep your file checking executable on disk and hope
that an intruder will not tamper with it.
Samhain offers the following
features to help protecting its integrity:
- signed database and configuration file: Both the
file signature database and the configuration file can be signed
with GnuPG.
- embedded password: For successful connection to
the server, a password is required which is embedded into
the executable itself (this password can be set exactly once
after compiling the executable).
- compiled-in key: Every executable built from source
contains a unique random 64-bit key (unless this key is defined by
the user at compile time). Logfile/e-mail messages generated by
a different executable (with a different key) will not pass the
verification routine with a 'known good' executable.
- daemon mode: Samhain can run continuously as a daemon
(background process), and any stop/restart process will
leave a recognizable mark.
Thus it is not possible to "slip in" a rogue executable
as long as the daemon is running.
- signed reports: eMail reports and messages written to the
log file are signed. Messages sent to a central log server
are additionally encrypted with Rijndael (AES).
- stealth: what an intruder cannot see, s/he will not
try to subvert. Samhain offers several options to hide itself.
Documentation
The manual in PDF and HTML format
is available online
on the Samhain development site. It includes
explanations
and examples for the setup,
complete documentation of the format of the
configuration file, and
of the interface to external programs.
There are also several HOWTOs
for specific issues (e.g. the client/server setup).
This documentation is also included in the
distribution tarball, along with man pages
for the program and the configuration file, and sample
configurations for Linux, FreeBSD, and Solaris.