From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page AIDE and the translation is 61% complete.

Other languages:
English • ‎italiano • ‎日本語 • ‎한국어 • ‎русский • ‎中文(中国大陆)‎

AIDE (Advanced Intrusion Detection Environment) is a host-based intrusion detection system. AIDE scans files and other resources and stores information about these files in a database. Stored information includes key file attributes such as file hash output, file size, ownership, modification time, creation time, and more. After the initial database has been created, AIDE then rescans the system and compares new scan results with previously stored values. If values differ then the file has been changed and the change will be reported. The idea behind using AIDE is to create a snapshot of a system then compare the snapshot to another created snapshot to find compromised files.



It is easy to install app-forensics/aide after setting the USE flags accordingly.

USE flags for app-forensics/aide AIDE (Advanced Intrusion Detection Environment) is a file integrity checker

acl Add support for Access Control Lists global
curl Add support for client-side URL transfer library global
e2fs Enable support for checking file attributes on ext2/ext3/ext4 filesystems local
mhash Add support for the mhash library global
postgres Add support for the postgresql database global
prelink Bypass prelinking when calculating checksums local
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur global
static !!do not set this during bootstrap!! Causes binaries to be statically linked instead of dynamically global
xattr Add support for extended attributes (filesystem-stored metadata) global
zlib Add support for zlib (de)compression global

USE flag changes specific to a certain package should be defined in the /etc/portage/package.use file, or a text file inside a directory called /etc/portage/package.use. For example, when using a /etc/portage/package.use file:

Файл /etc/portage/package.useВключение поддержки zlib в пакете AIDE
app-forensics/aide zlib


После настройки USE-флагов установите приложение:

root #emerge --ask app-forensics/aide


Общий обзор

Файл настроек app-forensics/aide не настолько устрашающий, как это может показаться с первого взгляда. Файл по умолчанию хранится в /etc/aide/aide.conf, но если это необходимо, администраторы легко могут создать множественные отдельные файлы настроек. Кроме нескольких переменных, файл настроек содержит несколько кратких обозначений для того, какие аспекты файлов нужно сканировать (только хэш-суммы, или также информацию об индексных дескрипторах (inodes), и т.д.) и затем, какие файлы нужно сканировать.

Давайте сначала рассмотрим переменные.

Файл aide.confПеременные конфигурации базы данных AIDE

The first line in the example above (database) defines where the location of database that contains the known values. The second line (database_out) defines where to store new databases when another is generated. It is generally recommended against having these variables point to the same database (having the same paths for each variable). If one database is to overwrite another, the best method is to manually copy over the generated database from one location to the other. For example, to overwrite the first database with the second, this command could be used:

root #cp /var/lib/aide/ /var/lib/aide/aide.db

For now, leave the database variables as they are; they will be covered in more detail later in the article.

Next, consider the variables which are short-hand notations for what information to record in the database.

Файл aide.confCокращенные обозначения используемые в настройке AIDE
Binlib = p+i+n+u+g+s+b+m+c+md5+sha1
Logs = p+i+n+u+g+S
It should be obvious that md5 and sha1 mean that MD5 and SHA-1 checksums are taken (respectively).

The letters are described in the default aide.conf file, but for convenience the following table provides an overview of the most common options:

Short Description
p Permissions
i inode number
n Number of (hard)links
u User information
g Group information
s Size
S Size (only report when the size is suddenly smaller - growing is allowed)
b Block count
m Modification time

Next is an overview of which directories to scan, and what to scan for. In three line example to follow, AIDE is instructed to scan the /bin and /sbin directories via the measures identified in the Binlib short-hand notation variable. The /var/log file will display the scan measures defined in the Logs variable defined above.

Файл aide.confПараметры задачи сканирования
/bin Binlib
/sbin Binlib
/var/log Logs

AIDE supports regular expressions and users are allowed to "remove" matches. For instance, to scan /var/log but not /var/log/portage then make an exclusion set by using the ! (exclamation point) before the excluded path(s):

Файл aide.confДругие задачи сканирования
/var/log Logs

Detailed options

The configuration file is based on regular expressions, macros and rules for files and directories. Users experienced with the tripwire solution will have no difficulties dealing with AIDE's configuration file. The following macros are available:

Macro Description Syntax
ifdef If defined @@ifdef "name"
ifndef If not defined @@ifndef "name"
define Define a variable @@define "name" "value"
undef Undefine a variable @@undef "name"
ifhost if "hostname" @@ifhost "hostname"
ifnhost if not "hostname" @@ifnhost "hostname"
endif Endif must be used after any of the above macros except define and undef @@endif

These macros become very handy when dealing with multiple Gentoo boxes, while using the same configuration on all. Not all machines run the same services or even have the same users.

Next we have a set of flags which identify the permissions, file properties, checksums, cryptographic hashes, ... to validate on files and directories.

Flag Description
p permissions
i inode
n number of links
u user
g group
s size
b block count
m mtime
a atime
c ctime
S check for growing size
md5 md5 checksum
sha1 sha1 checksum
rmd160 rmd160 checksum
tiger tiger checksum
R p+i+n+u+g+s+m+c+md5
L p+i+n+u+g
E Empty group
> Growing logfile p+u+g+i+n+S

If AIDE is compiled with mhash support, then the following flags can be used as well:

Flag Description
haval haval checksum
gost gost checksum
crc32 crc32 checksum

Инициализация и частое сканирование

For a basic AIDE setup, a database must be initialized. This is performed using the --init option. To make sure AIDE uses the configuration settings defined in the sections before, be sure to pass the --config option pointed to the correct configuration file:

root #aide --init --config=/etc/aide/aide.conf
AIDE, version 0.14.2
### AIDE database at /var/lib/aide/ initialized.

Once initialized, any pre-existing database files can be copied over:

root #cd /var/lib/aide; cp aide.db

With a new database available, the entries can be scanned again (now or at a later date) using the --check option. This will create another database containing any modifications that have made to the file system since the first database has been created. Be sure to use the --config option pointed to the same configuration file that the first database was created with:

root #aide --check --config=/etc/aide/aide.conf
AIDE, version 0.14.2
### All files match AIDE database. Looks okay!

Если произошло изменение файла(ов), будет послано уведомление:

root #aide --check --config=/etc/aide/aide.conf
AIDE found differences between database and filesystem!!
Start timestamp: 2013-04-11 15:31:02
  Total number of files:        318
  Added files:                  0
  Removed files:                0
  Changed files:                2
Changed files:
changed: /etc/pam.d
changed: /etc/pam.d/run_init
Detailed information about changes:
Directory: /etc/pam.d
  Mtime    : 2013-04-09 22:11:18              , 2013-04-11 15:31:01
  Ctime    : 2013-04-09 22:11:18              , 2013-04-11 15:31:01
File: /etc/pam.d/run_init
  Size     : 205                              , 208
  Mtime    : 2013-04-09 22:11:18              , 2013-04-11 15:31:00
  Ctime    : 2013-04-09 22:11:18              , 2013-04-11 15:31:01
  Inode    : 394203                           , 394053
  MD5      : Mm0KPzpPt63eqGClTJ/KaQ==         , eLUrP2BsIq25f3AZX+dlBA==
  SHA1     : NrQtsUeOsXS4RHUq+ejYBne5V6E=     , 5A6ef6VJCcMiqEjKQ7e9xkBNZB8=

Лучшие Практики

Ясно определите что нужно сканировать

Файл конфигурации AIDE по умолчанию полезен, но требуется его тонкая настройка для соответствия требованиям пользователей. Важно знать какие файлы нужно сканировать и почему.

Например, для сканирования всех файлов, связанных с аутентификацией, и никаких других файлов, используйте следующие настройки:

Файл aide.confЗадачи сканирования, связанные с аутентификацией
# Политики SELinux и настройки
/etc/selinux ConfFiles
# Базы данных аутентификации
/etc/passwd ConfFiles
/etc/shadow ConfFiles
/etc/nsswitch.conf ConfFiles
# Конфигурация аутентификации
/etc/pam.d ConfFiles
/etc/securetty ConfFiles
/etc/security ConfFiles
# Библиотеки PAM
/lib(64)?/security Binlib

Храните базу данных на внешнем носителе и в режиме только для чтения

A second important aspect is that the result database should be stored offline when not needed and should be used in read-only mode when the database is needed. This gives some protection against a malicious user that might have compromised the machine to modify the results database. For instance, provide the result database on a read-only NFS mount (for servers) or read-only medium (when physical access to the machine is possible) such as a CD/DVD or a read-only USB drive.

После размещения базы данных в месторасположении только для чтения, обновите файл aide.conf, чтобы database= указывал на это новое место.

Делайте автономное сканирование

Если необходимо, попытайтесь использовать автономные методы сканирования системы. В случае с виртуальными платформами, возможно сделать снимок системы, смонтировать этот снимок (с доступом только на чтение) и затем запустить aide сканирование на примонтированной файловой системе.

root #losetup /dev/loop0 /srv/virt/gentoo.img
root #vgscan
root #vgchange -ay
root #mount -o ro /dev/volgrpX/volumeY /mnt/image
root #chroot /mnt/image
root #aide --check --config=/path/to/aide.conf
root #exit
root #umount /mnt/image
root #vgchange -an /dev/volgrpX
root #losetup -d /dev/loop0

Подход, представленный выше, использует chroot. Это требуется только тогда, когда исходная файловая система сканируется с работающей системы, и администратор хочет выполнить автономную проверку. Если первоначальное сканирование проводилось в автономном режиме, то файл aide.conf уже будет указывать на точку монтирования и база данных сразу же будет пользоваться этими путями, поэтому в данном случае не требуется использование chroot.

Смотрите также

  • Integrity/Concepts повествует об идеях связанных с целостностью системы