<> ||<>|| = Introduction = One of the many possible layers of security which may be applied to your Ubuntu computer is known as ''file integrity monitoring'' or ''file integrity verification''. The purpose of monitoring and/or verifying the integrity of key files, including system binaries and configuration files is to ensure that the files have not been altered by unauthorized means. The unauthorized alteration of certain system files is one of the symptoms of an active attack or compromise upon a system. Using file integrity monitoring is a pro-active means of being aware of any changes to critical system files. As with most tools, and utilities in the GNU/Linux community, there are many different applications for use in monitoring and verifying the integrity of files on your Ubuntu system. This guide will discuss the installation, configuration, and usage of some of these tools on an Ubuntu system. = Available Tools = While there are literally a dozen or more solutions for monitoring and verifying the integrity of critical files on a GNU/Linux computer system, this guide will focus only on the '''Advanced Intrusion Detection Environment''' ('''AIDE''') utility. Other possible tools, and utilities for monitoring and/or verifying file integrity will be listed in the '''Resources''' section. The exploration and use of these tools is left as an exercise for the reader of this guide. = AIDE = The Advanced Intrusion Detection Environment (AIDE) is a ''free'' replacement for the popular file integrity verification tool known as '''Tripwire'''. It creates a database from regular expression rules that it finds in a configuration file. Once this database is initialized, it can be used to verify the integrity of critical system and user files. AIDE uses most of the popular message digest algorithms (md5, sha1, rmd160, tiger, haval, etc.) for checking file integrity. Additional algorithms may also be easily added. All of the traditional file system attributes may be checked for inconsistencies as well. == Installing AIDE == To install AIDE from a terminal prompt, ensure that your Internet connection is working, and enter the following command: {{{ sudo apt-get install aide }}} Enter your password. Upon successful authentication, the AIDE package should be fetched and installed. During installation, an '''Ubuntu Configuration''' window will appear notifying you that daily reports are mailed to the ''root'' user by default, and that this behavior may be changed by editing the {{{/etc/default/aide}}} configuration file. Press the '''Enter''' key to acknowledge this message. You will then be asked if the AIDE database should be initialized. Select '''Yes''' here, and press the '''Enter''' key. The next confirmation dialog will ask you to examine {{{/var/lib/aide/aide.db.new}}} before replacing any existing database. If this is your first time installing AIDE on the system in question, select '''Yes''' here, and press the '''Enter''' key. == Configuring AIDE == '''(The following instructions do not apply to newer versions of Ubuntu, such as 14.04. For details, see the section [[#AIDE with the aide-common package|AIDE with the aide-common package]] below.)''' There are two primary configuration files for AIDE: ||{{{/etc/default/aide}}}||The AIDE general configuration file.|| ||{{{/etc/aide/aide.conf}}}||The AIDE rules configuration file.|| === /etc/default/aide === Some general settings and behaviors for AIDE may be modified by editing the {{{{/etc/default/aide}}} configuration file. For example, if you would like to have all of AIDE's daily reports emailed to the user {{{breandon}}} instead of the default root user, simply use {{{sudo}}} with your favorite editor, and modify the line {{{MAILTO=root}}} to reflect your choice of user, e.g.: {{{MAILTO=breandon}}}. You can also mail to an ordinary address, e.g., {{{MAILTO=me@example.com}}}. Read the comments in {{{/etc/default/aide}}} to see what the other configuration directives control. === /etc/aide/aide.conf === {{{/etc/aide/aide.conf}}} controls scanning and reporting rules. Files and directories can change in many ways: some you may not consider important, but others you will want reported. {{{/etc/aide/aide.conf}}} determines whether and how AIDE should report a file or directory as having changed, and which attributes AIDE should consider when scanning. For example, in the default {{{/etc/aide/aide.conf}}} file, all member directories and files of the Group definition {{{BinLib}}} are checked for permissions, inode, number of links, user, group, size, block count, mtime, ctime, md5 checksum, and sha1 checksum (p+i+n+u+g+s+b+m+c+md5+sha1), whereas all member directories and files in the Group definition Databases are checked only for permissions, number of links, user, and group (p+n+u+g). The member directories of a particular Group definition are added by specifying one entry per line, in the form of: ||{{{directory}}} {{{Group definition}}}|| For example, to make the directory {{{/opt/local/bin}}} part of the {{{BinLib}}} Group definition, a line would be added in the appropriate section of the {{{/etc/aide/aide.conf}}} configuration file resembling the following: ||{{{/opt/local/bin BinLib}}}|| Another example of a clever use for AIDE is to monitor the system's crontabs. System crontabs control the scheduled system activities which are executed on a schedule by the cron daemon. To ensure that these files are not altered in such a way as to introduce the automatic, scheduled execution of a malicious application, simply use the {{{sudo}}} command to edit the {{{/etc/aide/aide.conf}}} file with your favorite editor and locate the following section of the file: ||{{{# Check crontabs}}}|| Uncomment all of the lines beginning with {{{#/var/spool}}} under the {{{# Check crontabs}}} heading, and save the file. You should examine the {{{/etc/aide/aide.conf}}} file closely, observing the commented sections in particular, for other possible uses of AIDE. Also read the {{{aide.conf}}} manual page, in addition to reading the HTML version of the AIDE manual, for further uses of AIDE which may be specified in this configuration file. After making configuration changes, issue the following command at the terminal prompt to update the AIDE configuration: {{{ sudo update-aide.conf }}} ## Otherwise, AIDE's daily crontab will do the same thing, so if you have made changes, but do not need to run aide manually, and immediately you can be assured the configuration will be updated by the daily crontab automatically before the daily run of AIDE by the daily crontab. == Using AIDE == To begin using AIDE, you must make sure the database is present: {{{ ls /var/lib/aide }}} If you see the file {{{aide.db}}} in the output of the {{{ls}}} command, then proceed to the initialization step. If, instead, you see the file {{{aide.db.new}}}, then you need to rename the {{{aide.db.new}}} file to {{{aide.db}}} using this command: {{{ sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db }}} Once the AIDE database is in place, you can initialize the database with the following command from a terminal prompt: {{{ sudo aide --init }}} At the end of this process, you should see the line: ||{{{### AIDE database initialized}}}|| You may run an initial check of the directories and files as defined in {{{/etc/aide/aide.conf}}} by entering the following command at a terminal prompt: {{{ sudo aide --check }}} If all is well in the directories, and files being monitored, you will see this message when the check completes: ||{{{### All files match AIDE database. Looks okay!}}}|| AIDE will also run each day from the {{{/etc/cron.daily/aide}}} crontab, and the output of this run will be mailed to the user specified in the {{{MAILTO=}}} directive of the {{{/etc/default/aide}}} configuration file as detailed above. = AIDE with the aide-common package = Newer versions of Ubuntu (including 14.04) come with two packages for AIDE: * {{{aide}}}, with the {{{aide}}} command and manual page, and little else * {{{aide-common}}}, with a wrapper around that command, configuration files with rules, and {{{cron}}} configuration files that will cause AIDE to be run nightly If your AIDE is bundled like this, attempts to run the {{{aide}}} command directly will fail with the message: {{{ Couldn't open file /var/lib/aide/please-dont-call-aide-without-parameters/aide.db for reading }}} even when parameters are supplied. The configuration files are in different places, and to configure and use AIDE, the executables from {{{aide-common}}} must be used instead: {{{aideinit}}}, {{{aide.wrapper}}}, {{{update-aide.conf}}}, and {{{aide-attributes}}}. = Resources = Additional information on AIDE, and file integrity monitoring and verification is available via the following resources: == Local System Resources == ||{{{man aide}}}|| System manual page for the {{{aide}}} command.|| ||{{{man aide.conf}}}|| System manual page for the {{{aide.conf}}} configuration file.|| ||{{{man aideinit}}}|| System manual page for the {{{aideinit}}} command.|| ||{{{man update-aide.conf}}}|| System manual page for the {{{update-aide.conf}}} command.|| ||{{{/usr/share/doc/aide/manual.html}}}|| The AIDE manual in HTML format.|| ||{{{/etc/default/aide}}}|| The AIDE general configuration file.|| ||{{{/etc/aide/aide.conf}}}|| The AIDE rules configuration file.|| ||{{{/etc/cron.daily/aide}}}|| Daily AIDE cron scripts.|| == Other File Integrity Monitoring and Verification Tools == * '''BSign''' : Corruption and Intrusion Detection using embedded hashes. * '''Integrit''' : Small footprint, unattended monitoring of file integrity with cascading rulesets. * '''Samhain''' : Standalone, or Client-Server file integrity monitoring solution. * '''Systraq''' : Monitors, and alerts on file changes. = External Links = * [[http://sourceforge.net/projects/aide]] - AIDE web site. * [[http://www.linuxsecurity.com/content/view/101882/49/]] - Guide for CHKROOTKIT and AIDE. * [[http://la-samhna.de/samhain/]] - Samhain home page. * [[http://mdcc.cx/systraq/]] - Systraq home page. ## This link doesn't exist yet: * [[http://integrit.sourceforge.net/]] - Integrit home page. ---- CategorySecurity