Инсталляция и использование AIDE

Автор: (C) Ariel Maiorano
Перевод: (C) А. Куприн


Введение

Если ваша система была взломана, то есть шанс, что хакер, кракер, "троян", "червь" или кто-то еще могли либо заменить системные файлы, либо установить новые. Как правило, ими оказываются программы, имеющие "черный ход" (backdoors) и/или другой деструктивный по отношению к вашей системе код. Представьте себе подменённую версию программы для входа в систему, которая после ввода специального пароля впускает кого-то с правами суперпользователя (magic password -- неотъемлимая часть большинства rootkits [Набор утилит, которые взломщик устанавливает на компьютере. Более подробно смотрите сделанный Ингой Захаровой перевод статьи на эту тему. Прим.перев.] ). Или представьте содержащий "трояна" ssh-клиент, сообщающий по электронной почте информацию о пользователе (логин и пароль) -- очень напоминает ту ситуацию, что случилась в прошлом году с один солидным сайтом.

Программы проверки целостности файлов могут нам помочь, регулярно сохраняя контрольные или хеш-суммы и другие произвольные атрибуты файлов (размер, владелец, группа, права доступа и прочее) в базе данных и позднее сравнивая свежеполученную информацию на предмет изменений. И, если программа входа в систему была заменена или был создан каталог /tmp/.hidden/backdoord, вы будете об этом предупреждены.

Эта статья объяснит, как установить и использовать AIDE -- свободно распространяемая система обнаружения вторжений (IDS -- Intrusion Detection System), ориентированная на работу на конкретном компьютере-хосте (host-based type) или, если хотите, программа проверки целостности файлов. Цитата с сайта AIDE:

AIDE (Advanced Intrusion Detection Environment -- Среда для Обнаружения Вторжений с Расширенными Возможностями) является свободной заменой Tripwire. Она может делать все, что и "наполовину" свободный Tripwire (Автор имеет ввиду, что открытая редакция Tripwire существует только для Linux. Прим. перев.) и кое-что сверх этого.

Полная инсталляция AIDE помещается на одной дискете. В программе есть возможность проверять различные изменения в файлах и каталогах, временами доходящая до степени легкой параноидальности. На такого рода контроль требуется много времени и иногда возможны ложные срабатывания, но программа делает контроль над изменениями менее сложным (но не менее безопасным!). Настроив собственную конфигурацию (вы можете начать с моего примера) и поработав пару недель, вы поймете, что именно нужно изменить в настройках. Помните, что диск надо будет монтировать каждый раз, когда вы захотите сделать проверку. Это требует больше времени, чем обычно, но, если атакующий уже "внутри", то он не сможет: а) изменить вашу базу данных и б) не будет знать, что вы регулярно проверяете систему при помощи AIDE.

Инсталляция

Во-первых, необходимо создать файловую систему на дискете (соответствия обозначений между DOS и Linux: диск A: -- /dev/fd0, диск B: -- /dev/fd1):

root@pc2:~#
root@pc2:~# mkfs /dev/fd0
mke2fs 1.22, 22-Jun-2001 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
184 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
184 inodes per group

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
root@pc2:~#

далее подмонтируйте дискету и создайте на ней директорию "aide"...

root@pc2:~#
root@pc2:~# mount /dev/fd0 /mnt/floppy
root@pc2:~#
root@pc2:~# mkdir /mnt/floppy/aide
root@pc2:~#

Возьмите исходники AIDE, скомпилируйте во временном каталоге и установите систему на флоппи-диске (если хотите что-то изменить, то воспользуйтесь ключом --prefix при запуске скрипта настройки конфигурации configure ); Прежде чем выполнять инсталляцию на дискету, "ужмите" двоичные файлы утилитой strip и не забудьте удалить временную директорию. (И место освободите, и следы за собой "заметёте". 8-) Прим. перев.). Вывод программ распаковки и сборки "изрядно подсокращен" -- прим. редактора...

root@pc2:~#
root@pc2:~# mkdir /tmp/aide
root@pc2:~#
root@pc2:~# cd /tmp/aide
root@pc2:/tmp/aide#
root@pc2:/tmp/aide# wget http://www.cs.tut.fi/~rammer/aide-0.7.tar.gz
--12:54:47-- http://www.cs.tut.fi/%7Erammer/aide-0.7.tar.gz
=> aide-0.7.tar.gz'
Connecting to www.cs.tut.fi:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 219,837 [application/x-tar]
0K .......... .......... .......... .......... .......... 23% @ 34.84 KB/s
50K .......... .......... .......... .......... .......... 46% @ 50.97 KB/s
100K .......... .......... .......... .......... .......... 69% @ 65.45 KB/s
150K .......... .......... .......... .......... .......... 93% @ 46.38 KB/s
200K .......... .... 100% @ 7.17 MB/s

(Вот это КАНАЛ! 8-) Прим. перев.)
12:54:52 (50.40 KB/s) - aide-0.7.tar.gz' saved [219837/219837]

root@pc2:/tmp/aide#
root@pc2:/tmp/aide# tar xvfz aide-0.7.tar.gz
aide-0.7/
aide-0.7/Makefile.in

[...]

aide-0.7/include/compare_db.h
aide-0.7/include/gnu_regex.h
root@pc2:/tmp/aide#
root@pc2:/tmp/aide# cd aide-0.7
root@pc2:/tmp/aide/aide-0.7#
root@pc2:/tmp/aide/aide-0.7# ./configure --prefix=/mnt/floppy/aide
creating cache ./config.cache
checking for a BSD compatible install... /usr/bin/ginstall -c

[...]

creating aide.spec
creating config.h
root@pc2:/tmp/aide/aide-0.7#
root@pc2:/tmp/aide/aide-0.7# make
make all-recursive
make[1]: Entering directory /tmp/aide/aide-0.7'

[...]

make[2]: Leaving directory /tmp/aide/aide-0.7'
make[1]: Leaving directory /tmp/aide/aide-0.7'
root@pc2:/tmp/aide/aide-0.7#
root@pc2:/tmp/aide/aide-0.7# strip src/aide
root@pc2:/tmp/aide/aide-0.7#
root@pc2:/tmp/aide/aide-0.7# make install
\Making install in src
make[1]: Entering directory /tmp/aide/aide-0.7/src'

[...]

make[2]: Leaving directory /tmp/aide/aide-0.7'
make[1]: Leaving directory /tmp/aide/aide-0.7'
root@pc2:/tmp/aide/aide-0.7#
root@pc2:/tmp/aide/aide-0.7# cd ..
root@pc2:/tmp/aide# cd ..
root@pc2:/tmp# rm -r aide
root@pc2:/tmp#

Теперь создадим очень простой конфигурационный файл, который позволит проверять изменения в выбранных каталогах (включая все файлы, находящиеся "ниже") по следующим признакам: права доступа, номер индексного дескриптора (inode), количество символических ссылок, имя владельца, имя группы, размер, время модификации, время создания и контрольная сумма (md5). И сгенерируем базу данных...

root@pc2:/tmp#
root@pc2:/tmp# cd /mnt/floppy/aide/bin/
root@pc2:/mnt/floppy/aide/bin#
root@pc2:/mnt/floppy/aide/bin# cat aide.conf
database=file:/mnt/floppy/aide/bin/aide.db
database_out=file:/mnt/floppy/aide/bin/aide.db.new
/vmlinuz R
/boot R
/etc R
/bin R
/usr/bin R
/usr/local/bin R
/sbin R
/usr/sbin R
/usr/local/sbin R
/var/log R
/tmp R
/var/tmp R
root@pc2:/mnt/floppy/aide/bin#
root@pc2:/mnt/floppy/aide/bin# ./aide --config=./aide.conf --init
root@pc2:/mnt/floppy/aide/bin#
root@pc2:/mnt/floppy/aide/bin# mv aide.db.new aide.db
root@pc2:/mnt/floppy/aide/bin#

Это только "рабочий" пример конфигурационного файла, я использую именно такой, но вы, конечно, можете (и должны!) приспособить его под свои нужды. Помните, что база данных должна постоянно находиться на дискете! В конце этого документа есть ссылка на пример aide.conf. Размонтируйте флоппи-диск -- у вас есть готовый к использованию экземпляр AIDE.

Регулярное использование (проверки и обновления)

Теперь у нас есть дискета с базой данных, и мы можем регулярно использовать ее для проверки изменений в файлах, которые нужно контролировать. Я создам файл в подкаталоге /tmp, чтобы показать на его примере как действует AIDE...

root@pc2:/#
root@pc2:/# cat > /tmp/.hidden
hidden
root@pc2:/#
root@pc2:/# mount /dev/fd0 /mnt/floppy/
root@pc2:/# cd /mnt/floppy/aide/bin/
root@pc2:/mnt/floppy/aide/bin# ./aide --config=./aide.conf --check
AIDE found differences between database and filesystem!!
(Обнаружены различия между базой данных и фаловой системой!!)
Start timestamp: 2002-01-21 15:22:56
Summary:
Total number of files=1443,added files=1,removed files=0,changed files=1

Added files:
added:/tmp/.hidden
Changed files:
changed:/tmp
Detailed information about changes (подробнее об изменениях):

File: /tmp
Mtime: old = 2002-01-21 13:36:25, new = 2002-01-21 15:22:03
Ctime: old = 2002-01-21 13:36:25, new = 2002-01-21 15:22:03
root@pc2:/mnt/floppy/aide/bin#

Всё предельно ясно, сделали изменения -- получите извещение. 8-)

Теперь представьте следующую ситуацию: файл /tmp/.hidden был создан, AIDE сообщила об этом, вы проверили его и выяснили, что никакого "криминала" в нем нет и быть не может и вы не хотите, чтобы предупреждения об этом в дальнейшем вас беспокоили. Для этого вам нужно обновить базу данных AIDE. (Прежде чем сделать это, необходимо убедиться в том, что все изменения в файловой системе проконтролированы. Прим. перев.)

root@pc2:/mnt/floppy/aide/bin#
root@pc2:/mnt/floppy/aide/bin# ./aide --config=./aide.conf --update
AIDE found differences between database and filesystem!!
Start timestamp: 2002-01-21 15:28:58
Summary:
Total number of files=1443,added files=1,removed files=0,changed files=1

Added files:
added:/tmp/.hidden
Changed files:
changed:/tmp
Detailed information about changes:

File: /tmp
Mtime: old = 2002-01-21 13:36:25, new = 2002-01-21 15:22:03
Ctime: old = 2002-01-21 13:36:25, new = 2002-01-21 15:22:03
root@pc2:/mnt/floppy/aide/bin#
root@pc2:/mnt/floppy/aide/bin# mv aide.db.new aide.db
root@pc2:/mnt/floppy/aide/bin#
root@pc2:/mnt/floppy/aide/bin# ./aide --config=./aide.conf --check
root@pc2:/mnt/floppy/aide/bin#

И, наконец, ... выводы, файлы, ссылки, прочее.

Помните, что вам следует: не забывать сохранять всю важную, относящуюся к AIDE информацию на дискете; не оставлять примонтированый флоппи-диск и удалять все следы AIDE из системы (если таковые имеются), для того, чтобы атакующий не знал об использовании вами системы аудита файлов; измените пример конфигурационного файла так, как нужно вам. Приветствуется чтение руководства по AIDE, помните -- это очень гибкая программа. И, наконец, цитата из раздела 'Общее руководство по безопасности':
"Не основывайтесь на предположениях
Никому и ничему не доверяйте
Ничто не безопасно
Либо безопасность, либо удобство использования
Паранойя -- ваш друг."

Пример конфигурационного файла aide.conf: misc/maiorano/aide.conf.txt

Домашняя страница проекта AIDE: http://www.cs.tut.fi/~rammer/aide.html

Здесь вы можете взять архив исходников AIDE: http://www.cs.tut.fi/~rammer/aide-0.7.tar.gz (На момент перевода статьи, текущей версией была 0.8, поэтому лучше воспользоваться домашней страницей проекта. Прим. перев.)

Домашняя страница Tripwire, более известной альтернативы AIDE: http://www.tripwire.org

Несколько заметок и статей для будущего чтения...

Интересная статья на securityfocus.com озаглавленная 'Вас, возможно, уже взломали': http://www.securityfocus.com/columnists/12

Статья на linuxsecurity.com озаглавленная 'Начиная работу с Tripwire (Open Source Linux Edition)': http://www.linuxsecurity.com/feature_stories/feature_story-81.html

Еще одна интересная статья для чтения: 'Сравнение сетевых и хост-ориентированных систем обнаружения вторжения -- руководство по технологии обнаружения вторжений' от ISS: http://secinf.net/info/ids/nvh_ids/

Коммерческая точка зрения на эту проблему от NetworkWorldFusion: 'Снижение количества сетевых нарушителей': http://www.nwfusion.com/reviews/1004trends.html


Ariel Maiorano

Я -- независимый программист из Аргентины. Занимаюсь, как правило, разработкой для web и в области безопасности.


Copyright (C) 2002, Ariel Maiorano.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 75 of Linux Gazette, February 2002

Команда переводчиков:
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр Саввин, Роман Шумихин, Александр Куприн

Со всеми предложениями, идеями и комментариями обращайтесь к Сергею Скороходову ([email protected]). Убедительная просьба: указывайте сразу, не возражаете ли Вы против публикации Ваших отзывов в рассылке.

Сайт рассылки: http://gazette.linux.ru.net
Эту статью можно взять здесь: http://gazette.linux.ru.net/lg75/articles/rus-maiorano.html