Scroll to navigation

AIDE.CONF(5) AIDE AIDE.CONF(5)

NAME

aide.conf - The configuration file for Advanced Intrusion Detection Environment

SYNOPSIS

aide.conf is the configuration file for Advanced Intrusion Detection Environment. aide.conf contains the runtime configuration aide uses to initialize or check the AIDE database.

FILE FORMAT

aide.conf is similar in to Tripwire(tm)'s configuration file. With little effort tw.conf can be converted to aide.conf.

aide.conf is case-sensitive. Leading and trailing white spaces are ignored. AIDE uses the backslash character (\) as escape character for ' ' (space), '@' and '\' (backslash) (e.g. '\ ' or '\@').

There are three types of lines in aide.conf. First there are the configuration lines which are used to set configuration parameters and define/undefine variables. Second, there are (restricted) selection lines that are used to indicate which files are added to the database. Third, macro lines define or undefine variables within the config file. Lines beginning with # are ignored as comments.

CONFIG LINES

These lines have the format parameter=value. See URLS for a list of valid urls.

The url from which database is read. There can only be one of these lines. If there are multiple database lines then the first is used.
The url to which the new database is written to. There can only be one of these lines. If there are multiple database_out lines then the first is used.
The url from which the other database for --compare is read. There is no default for this one.
The attributes of the (uncompressed) database files which are to be added to the reports in report level >= database_attributes . Only checksum attributes are supported. To disable set database_attrs to 'E'. By default all compiled in checksums are added to the report.
Whether to add the AIDE version and the time of database generation as comments to the database file or not. Valid values are yes, true, no and false. The default is to add the AIDE version and the time of database generation. This option may be set to no by default in a future release.

The log level to use. Log messages are written to stderr. If there are multiple log_level lines then the first one is used. The --log-level or -L command line option overwrites this option.

The following log levels are available:

error: show unrecoverable issues that have to be handled by the user. Errors are fatal to the AIDE process.

warning: additionally show recoverable issues that most likely lead to unexpected behaviour and should be handled by the user

notice: additionally show recoverable issues that sometimes lead to unexpected behaviour and might be handled by the user.

info: additionally show informational messages

rule: additionally show messages to help to debug the path rule matching

config: additionally show messages to help to debug config and rule parsing

debug: additionally show messages that are useful to debug the application (very verbose)

trace: detailed information about the flow of the application (e.g. in-loop logging) (even more verbose)

Removed in AIDE v0.17, use log_level and report_level options instead
Whether the output to the database is gzipped or not. Valid values are yes,true,no and false. The default is no. This option is available only if zlib support is compiled in.
The prefix to strip from each file name in the file system before applying the rules and writing to database. AIDE removes a trailing slash from the prefix. If there are multiple root_prefix lines then the first one is used. The default is no (an empty) prefix. This option has no effect in compare mode.
Whether to check ACLs for symlinks or not. Valid values are yes,true,no and false. The default is to follow symlinks. This option is available only if acl support is compiled in.
Whether to warn about dead symlinks or not. Valid values are yes,true,no and false. The default is not to warn about dead symlinks.
The value of config_version is printed in the report and also printed to the database. This is for informational purposes only. It has no other functionality.
If the parameter is not one of the previous parameters then it is regarded as a group definition. Value is then regarded as an expression. Expression is of the following form.

<predefined group>| <expr> + <predefined group>
| <expr> - <predefined group>
See DEFAULT GROUPS for an explanation of default predefined groups. Note that this is different from the way Tripwire(tm) does it.

Group names are limited to alphanumeric charachters (A-Za-z0-9).

REPORT CONFIG LINES

The URL that the output is written to.

Multiple instances of the report_url option are supported.

Examples:

report_url=file:///var/log/aide.log

Write report to /var/log/aide.log.

report_url=stdout

Write report to stdout.

report_url=syslog://

Write report to syslog.

The following report options are available (to take effect they have to be set before report_url):

The report level to use. The available report levels are as follows:

minimal: print single line whether AIDE found differences to the database

summary: additionally print number of added, removed and changed files

database_attributes: additionally print database checksums

list_entries: additionally print lists of added, removed and changed entries

changed_attributes: additionally print details about changed entries

added_removed_attributes: additionally print details about added and removed attributes

added_removed_entries: additionally print details about added and removed entries

Base16 encode the checksums in the report. The default is to report checksums in base64 encoding.
Report added files (report level >= list_entries) and their details (report level >= added_removed_entries) in initialization mode.
Suppress report output if no differences to the database have been found.
Append to the report URL.
Group the files in the report by added, removed and changed files.
Summarize changes in the added, removed and changed files sections of the report.

The general format is like the string YlZbpugamcinHAXSEC, where Y is replaced by the file-type (f for a regular file, d for a directory, l for a symbolic link, c for a character device, b for a block device, p for a FIFO, s for a unix socket, D for a Solaris door, P for a Solaris event port, ! if file type has changed and ? otherwise).

The Z is replaced as follows: A = means that the size has not changed, a < reports a shrinked size and a > reports a grown size.

The other letters in the string are the actual letters that will be output if the associated attribute for the item has been changed or a "." for no change, a "+" if the attribute has been added, a "-" if it has been removed, a ":" if the attribute is ignored (but not forced) or a " " if the attribute has not been checked. The exceptions to this are: (1) a newly created file replaces each letter with a "+", and (2) a removed file replaces each letter with a "-".

The attribute that is associated with each letter is as follows:

A l means that the link name has changed.
A b means that the block count has changed.
A p means that the permissions have changed.
An u means that the uid has changed.
A g means that the gid has changed.
An a means that the access time has changed.
A m means that the modification time has changed.
A c means that the change time has changed.
An i means that the inode has changed.
A n means that the link count has changed.
A H means that one or more message digests have changed.

The following letters are only available when explicitly enabled using configure:

A A means that the access control list has changed.
A X means that the extended attributes have changed.
A S means that the SELinux attributes have changed.
A E means that the file attributes on a second extended file system have changed.
A C means that the file capabilities have changed.
Attributes whose addition is to be ignored in the report.
Attributes whose removal is to be ignored in the report.
Attributes whose change is to be ignored in the report.
Attributes which are always printed in the report for changed files. If an attribute is both ignored and forced the attribute is not considered for file change but printed in the final report as long as the file has been otherwise changed.
List (no delimiter) of ext2 file attributes which are to be ignored in the report. See chattr(1) for the available attributes. Use 0 (zero) to not ignore any attribute. Ignored attributes are represented by a ':' in the output.

Example:

Ignore changes of the ext2 file attributes compression error (E), huge file (h), indexed directory (I):

report_ignore_e2fsattrs=EhI

SELECTION LINES

AIDE supports three types of selection lines:

Regular selection line:

<regex> <group>

Files and directories matching the regular expression are added to the database.

Negative selection line:

!<regex>

Files and directories matching the regular expression are ignored and not added to the database. The children of matching directories are also ignored.

Equals selection line:

=<regex> <group>

Files and directories matching the regular expression are added to the database. The children of directories are only added if the regular expression ends with a "/". The children of sub-directories are not added at all.

Every regular expression has to start with a "/". An implicit ^ is added in front of each regular expression. In other words the regular expressions are matched at the first position against the complete filename (i.e. including the path). Special characters in your filenames can be escaped using two-digit URL encoding (for example, %20 to represent a space).

See EXAMPLES and doc/aide.conf for examples.

More in-depth discussion of the selection algorithm can be found in the AIDE manual.

RESTRICTED SELECTION LINES

Restricted selection lines are like normal selection lines but can be restricted to file types. The following file types are supported:

f: restrict rule to regular files

d: restrict rule to directories

l: restrict rule to symbolic links

c: restrict rule to character devices

b: restrict rule to block devices

p: restrict rule to FIFO files

s: restrict rule to UNIX sockets

D: restrict rule to Solaris doors

P: restrict rule to Solaris event ports

The file types are separated by comma. The syntax of restricted selection lines is as follows:

Restricted regular selection line:

<regex> <file types> <group>

Restricted negative selection line:

!<regex> <file types>

Restricted equals selection line:

=<regex> <file types> <group>

Examples

Only add directories and files to the database:

/ d,f R

Add all but directory entries to the database:

!/run d
/run R

Use specific rule for directories:

/run d R-m-c-i
/run R

MACRO LINES

@@define VAR val
Define variable VAR to value val.
@@undef VAR
Undefine variable VAR.
@@ifdef VAR, @@ifndef VAR
@@ifdef begins an if statement. It must be terminated with an @@endif statement. The lines between @@ifdef and @@endif are used if variable VAR is defined. If there is an @@else statement then the part between @@ifdef and @@else is used is VAR is defined otherwise the part between @@else and @@endif is used. @@ifndef reverses the logic of @@ifdef statement but otherwise works similarly.
@@ifhost hostname, @@ifnhost hostname
@@ifhost works like @@ifdef only difference is that it checks whether hostname equals the name of the host that AIDE is running on. hostname is the name of the host without the domainname (hostname, not hostname.example.com).
@@{VAR}
@@{VAR} is replaced with the value of the variable VAR. If variable VAR is not defined an empty string is used. Unlike Tripwire(tm) @@VAR is NOT supported.

Variables are supported in strings and in regular expressions of selection lines.

Pre-defined marco variables:

@@{HOSTNAME}: hostname of the current system

@@else
Begins the else part of an if statement.
@@endif
Ends an if statement.

@@include FILE
Include FILE.

The content of the file is used as if it were inserted in this part of the config file.

@@include DIRECTORY REGEX
Include all (regular) files found in DIRECTORY matching regular expression REGEX (sub-directories are ignored). The file are included in lexical sort order.

The content of the files is used as if it were inserted in this part of the config file.

@@x_include FILE
@@x_include DIRECTORY REGEX
@x_include is identical to @@include, except that if a config file is executable is is run and the output is used as config.

For security reasons DIRECTORY and each executable config file must be owned by the current user and must not be group- or world-writable.

@@x_include_setenv VAR VALUE

Adds the variable VAR with the value VALUE to the environment used for config file execution.

Enironment variable names are limited to alphanumeric charachters (A-Za-z0-9) and the underscore '_' and must not begin with a digit.

URLS

Urls can be one of the following. Input urls cannot be used as outputs and vice versa.

Output is sent to stdout, stderr respectively.
Input is read from stdin.
file://filename
Input is read from filename or output is written to filename.
Input is read from filedescriptor number or output is written to number.

DEFAULT GROUPS

>: Growing file p+ftype+l+u+g+i+n+S+X

The following are available only when explicitly enabled using configure

Please note that 'I' and 'c' are incompatible. When the name of a file is changed, its ctime is updated as well. When you put 'c' and 'I' in the same rule the, a changed ctime is silently ignored.

When 'ANF' is used, new files are added to the new database, but are ignored in the report.

When 'ARF' is used, files missing on disk are omitted from the new database, but are ignored in the report.

EXAMPLES

/ R

This adds all files on your machine to the database. This one line is a fully qualified configuration file.

!/dev$

This ignores the /dev directory structure.

=/foo R

Only /foo and /foobar are taken into the database. None of their children are added.

=/foo/ R

Only /foo and its children (e.g. /foo/file and /foo/directory) are taken into the database. The children of sub-directories (e.g. /foo/directory/bar) are not added.

All=p+i+n+u+g+s+m+c+a+md5+sha1+tiger+rmd160

This line defines group All. It has all attributes and all md checksum functions. If you absolutely want all digest functions then you should enable mhash support and add +crc32+haval+gost to the end of the definition for All. Mhash support can only be enabled at compile-time.

HINTS

In the following, the first is not allowed in AIDE. Use the latter instead.

/foo epug
/foo e+p+u+g

SEE ALSO

aide(1) manual.html

DISCLAIMER

All trademarks are the property of their respective owners. No animals were harmed while making this webpage or this piece of software.

May 19, 2019 aide v0.16.2