|
Content Cleanup Required |
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 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
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.