Работа с Tripwire

Использование Tripwire для отслеживания изменений файлов в системе

Tripwire® – это система обнаружения вторжений, отслеживающая изменения файлов и директорий на основе политик, определяемых системным администратором.

Дэвид Тенсли, системный администратор, Ace Europe

фото Дэвида ТенслиДэвид Тенсли (David Tansley) — один из внештатных авторов IBM developerWorks. У него более 15 лет опыта администрирования UNIX-систем, а последние 8 лет он специализируется на AIX. В сферу его личных интересов входят бадминтон и Формула 1, но наибольшее удовольствие он получает, путешествуя на своём мотоцикле вместе с женой.



04.02.2013

Введение

Tripwire® – это Open Source-пакет для проверки целостности системы, пользующийся популярностью на протяжении многих лет. Хотя я много раз использовал его в различных дистрибутивах Linux, я лишь недавно начал использовать его в AIX®, в основном по следующим причинам:

  • Сложность компиляции с помощью AIX-версии gcc.
  • Я предпочитаю использовать встроенную службу аудита AIX.

Тем не менее, поскольку теперь существует RPM-пакет Tripwire для AIX, я использую его на некоторых компьютерах под управлением AIX. Tripwire не обеспечивает полного обнаружения вторжений на основе изменений файлов, но, работая в связке со службой аудита AIX, обеспечивает жесткую политику безопасности. Tripwire отслеживает изменения в файлах и директориях системы, используя объекты, определяемые в главном файле политики. Ниже приведен неполный список отслеживаемых атрибутов:

  • индексные дескрипторы inode
  • метки времени
  • размер файла
  • файловые разрешения и атрибуты владельцев
  • контрольные суммы
  • типы файлов

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

По сравнению с другими системами обнаружения вторжений (Intruder Detection System, IDS) Tripwire имеет свои недостатки. Однако, поскольку это Open Source-проект, об этих недостатках вскоре забываешь. Существует коммерческая версия Tripwire, но для демонстрации возможностей достаточно Open Source-версии, на рассмотрении которой я и остановлюсь. Я использую операционную систему AIX версии 7.1, в которой установлен пакет Tripwire версии 2.4.1. Ссылку на загрузку RPM-пакета Tripwire вы найдете в разделе Ресурсы. После загрузки пакета убедитесь, что в системе проинсталлированы следующие RPM-зависимости:

libgcc-4.6.1-1.aix7.1.ppc.rpm  
libstdc++-4.6.1-1.aix7.1.ppc.rpm
(openssl-1.0.0d-1.aix5.1.ppc.rpm)

Для работы Tripwire также требуется openssl; на большинстве компьютеров AIX этот компонент уже установлен. Если вы используете SSH, то убедитесь, что версия openssl не ниже 0.9.8. Проверить это можно следующим образом:

# openssl
OpenSSL> version
OpenSSL 0.9.8m 25 Feb 2010
OpenSSL> quit

Теперь установите Tripwire:

#  rpm -ivh tripwire-2.4.2-1-1.aix5.1.ppc.rpm
tripwire                    ##################################################

После установки Tripwire двоичные файлы будут располагаться в директории /opt/freeware/sbin.

tripwire-check           
atcadmin
tripwire                 
tripwire-setup-keyfiles  
reprint

Файлы политик располагаются в директории /etc/tripwire. В файле twcfg.txt определяются переменные, используемые Tripwire (например, местоположение файлов отчетов, параметры уведомлений по электронной почте, уровень детализации отчетов). Файл политики twpol.txt указывает Tripwire, за какими файлами необходимо наблюдать.

На первом шаге необходимо настроить файл политики и указать, за какими файлами необходимо наблюдать. Файл twpol.txt, поставляемый с Tripwire, ориентирован на использование в операционной системе Linux, поэтому следует убедиться в том, что в нем перечислены нужные вам файлы. Если вы забудете настроить файл политики, то будете получать сообщения об ошибках, связанных с несуществующими файлами. Быстрее будет создать собственный файл политики, соответствующий принятым в вашей среде стандартам безопасности. В этой статье описывается процесс создания простой начальной политики. Я не буду обсуждать все возможности программы Tripwire (например, уровни опасности и условия уведомлений по e-mail), а вместо этого покажу вам, как настроить Tripwire и начать с ней работать, самостоятельно сгенерировав файл политики, отвечающий вашим задачам и параметрам уведомлений об изменении файлов.


Конфигурирование Tripwire

Ниже показано содержимое файла twcfg.txt. Поскольку Tripwire уведомляет о разрешениях для директорий, которые могут не быть корректными на вашем компьютере с AIX, то документация предлагает (и я согласен с ней) изменить значение

LOOSEDIRECTORYCHECKING = false

на

LOOSEDIRECTORYCHECKING = true

В соответствии с принятыми в вашей среде стандартами вы можете изменить местоположения файлов DBFILE и REPORTFILE:

ROOT                   =/opt/freeware/sbin
POLFILE                =/etc/tripwire/tw.pol
DBFILE                 =/var/lib/tripwire/$(HOSTNAME).twd
REPORTFILE             =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE            =/etc/tripwire/site.key
LOCALKEYFILE           =/etc/tripwire/$(HOSTNAME)-local.key
EDITOR                 =/usr/bin/vi
LATEPROMPTING          =false
LOOSEDIRECTORYCHECKING =false
MAILNOVIOLATIONS       =true
EMAILREPORTLEVEL       =3
REPORTLEVEL            =3
MAILMETHOD             =SENDMAIL
SYSLOGREPORTING        =false
MAILPROGRAM            =/usr/sbin/sendmail -oi -t

Если имя вашего хоста невозможно разрешить, то необходимо проинформировать Tripwire о том, как называется ваш локальный хост. Для этого отредактируйте файл twpol.txt; примерно в 64-й строке найдите параметр

HOSTNAME=;

и укажите имя хоста после знака '='. Например, для хоста с именем rs6000 эта строка должна выглядеть следующим образом:

HOSTNAME=rs6000;

Сохраните и закройте файл.

Генерация ключей

Следующая задача заключается в генерации ключа сайта и локального ключа для Tripwire с использованием пароля. Это помогает защитить Tripwire от несанкционированного доступа. Локальный ключ предназначен для файла базы данных, а ключ сайта – для конфигурационных файлов и файлов политик. Необходимо запомнить указанный на этом шаге пароль, поскольку он запрашивается при каждом обновлении файлов политик или базы данных. Оба ключа генерируются при помощи приведенной ниже команды. В данном примере я указал пароли, используемые в этой статье:

# /opt/freeware/sbin/tripwire-setup-keyfiles

----------------------------------------------

Creating key files...
Enter the site keyfile passphrase:rs6000
Verify the site keyfile passphrase:rs6000
Generating key (this may take several minutes)...Key generation complete.

(When selecting a passphrase, keep in mind that good passphrases typically
have upper and lower case letters, digits and punctuation marks, and are
at least 8 characters in length.)

Enter the local keyfile passphrase:master
Verify the local keyfile passphrase:master
Generating key (this may take several minutes)...Key generation complete.

----------------------------------------------
Signing configuration file...
Please enter your site passphrase:
Wrote configuration file: /etc/tripwire/tw.cfg

A clear-text version of the Tripwire configuration file:
/etc/tripwire/twcfg.txt
has been preserved for your inspection.  It  is  recommended  that  you
move this file to a secure location and/or encrypt it in place (using a
tool such as GPG, for example) after you have examined it.
Signing policy file...
Please enter your site passphrase:rs6000
Wrote policy file: /etc/tripwire/tw.pol.

По завершении генерации ключей директория /etc/tripwire будет содержать следующие файлы:

rs6000-local.key  tw.cfg            twcfg.txt
site.key          tw.pol            twpol.txt

Из предыдущего листинга видно, что в директории появились дополнительные файлы:

  • rs6000-local.key (зашифрованный файл локального ключа);
  • site.key (зашифрованный файл ключа сайта);
  • tw.cfg (зашифрованный файл переменных конфигурации);
  • tw.pol (зашифрованный файл политики).

Теперь файлы twcfg.txt и twpol.txt, находящиеся в этой директории, больше не нужны. Вы всегда сможете получить доступ к зашифрованным версиям этих файлов через утилиту Tripwire, указав соответствующий пароль. Это будет продемонстрировано далее в этой статье.

Первоначальное сканирование

Теперь, когда у нас есть сгенерированные ключи и мы задали пароли для них, можно приступать к первоначальному сканированию, используя политику в зашифрованном файле tw.pol. Как уже упоминалось ранее, файл политики, поставляемый в составе Tripwire, ориентирован на использование в операционной системе Linux (это касается набора проверяемых файлов), поэтому его необходимо настроить под вашу операционную систему AIX; чуть позже, я покажу, как это сделать. А сейчас просто запустите сканирование, в процессе которого Tripwire сгенерирует контрольные суммы и запишет атрибуты просканированных файлов. Также будет создана и обновлена база данных. В этот раз вы скорее всего получите в процессе сканирования большое количество ошибок, но этот пример показывает, чего ожидать от использования Tripwire.

При запуске инициализации вам будет предложено ввести пароль (следующий листинг сильно сокращен по причине большого количества сообщений об ошибках):

# /opt/freeware/sbin/tripwire --init
Please enter your local passphrase:master
Parsing policy file: /etc/tripwire/tw.pol
Generating the database...
*** Processing Unix File System ***
### Warning: File system error.
### Filename: /proc/ksyms
### A file or directory in the path name does not exist.
### Continuing...
### Warning: File system error.
### Filename: /dev/initctl
### A file or directory in the path name does not exist.
### Continuing...
…
...
Wrote database file: /var/lib/tripwire/rs6000.twd
The database was successfully generated.
#

Для корректной работы Tripwire всегда должна существовать база данных; обеспечьте регулярное создание ее резервных копий, которые облегчат ее повторную инициализацию.

По завершении инициализации Tripwire сообщит о создании базы данных (обратите внимание на то, что база данных будет называться по имени хоста и в нашем случае располагаться в файле /var/lib/tripwire/rs6000.twd).


Файл политики

Для настройки файла политики под ваши задачи используйте режим проверки (check mode) Tripwire для проверки целостности системы. Также в этом режиме будет выведен список всех файлов, присутствующих в файле политики, но фактически отсутствующих в системе. Этот список будет длинным, поэтому стоит перенаправить вывод в log-файл для последующего анализа:

 # /opt/freeware/sbin/tripwire --check | grep -w "Filename:"

В результате выполнения предыдущей команды вы получите примерно следующий список (ниже приведена только его часть):

     Filename: /bin/ypdomainname
     A file or directory in the path name does not exist.
     Filename: /bin/tcsh
     A file or directory in the path name does not exist.
     Filename: /usr/sbin/fixrmtab
     A file or directory in the path name does not exist.
     …
     …

Чтобы настроить политику Tripwire и указать, какие файлы необходимо отслеживать, можно пойти двумя путями:

  1. Открыть файл политики и удалить из него все несуществующие файлы, перечисленные в списке.
  2. Начать с чистого листа и добавить собственные записи.

Я предпочитаю последний вариант. Он позволяет мне отслеживать только нужные мне файлы. Прежде чем мы создадим нужные записи, необходимо разобраться с форматом файла политик.

Файл политик использует очень много объектов и командных директив, поэтому обязательно прочитайте man-страницу twpolicy. В нашем примере я буду рассматривать и использовать только некоторые объекты. Tripwire может отслеживать файловые атрибуты, перечисленные в листинге 1.

Листинг 1. Атрибуты файлов
a     Access timestamp
b     Number of blocks allocated
c     Inode timestamp (create/modify)
d     ID of device on which inode resides
g     File owner's group ID
i     Inode number
l     File is increasing in size (a "growing file")
m     Modification timestamp
n     Number of links (inode reference count)
p     Permissions and file mode bits
r     ID of device pointed to by inode
      (valid only for device objects)
s     File size
t     File type
u     File owner's user ID
C     CRC-32 hash value
H     Haval hash value
M     MD5 hash value
S     SHA hash value

К этим атрибутам можно добавлять дополнительные маски:

+ сравнить атрибут
- игнорировать атрибут

Встроенные объекты

Если вы просматривали поставляемый файл twpol, то должны были заметить, что объекты уже были определены. Это показано ниже в листинге 2. Для создания масок свойств используйте атрибуты из листинга 1 в соответствии с их описанием.

Листинг 2. Маски
Variable       Mask
Device =      +pugsdr-intlbamcCMSH ; # devices file 
Dynamic =     +pinugtd-srlbamcCMSH ; # directories that change
Growing =     +pinugtdl-srbamcCMSH ; # file that grow in size
IgnoreAll =   -pinugtsdrlbamcCMSH ;  # check nothing
IgnoreNone =  +pinugtsdrbamcCMSH-l ; # check everything except growing attribute 
ReadOnly =    +pinugtsdbmCM-rlacSH ; # read only
Temporary =   +pugt                  # temp files that might be removed

Взглянув на маску свойств Temporary из листинга 2, мы видим, что эта маска отслеживает следующие атрибуты:

  • права доступа (также выполняется их сравнение)
  • владельца файла
  • группу-владельца файла
  • тип файла

Tripwire использует эти маски свойств, содержащие переменные, для более простого определения того, какие атрибуты следует отслеживать для всех указанных файлов. Вы можете определять свои собственные объекты, о чем я расскажу далее. Для лучшей совместимости при кросс-платформенном использовании можно создавать объекты для определенных условий. Вкратце это означает, что можно указывать, какие атрибуты должны отслеживаться для различных типов файлов.

Формат объекта имеет следующий вид:

object_name  = [ mask ];

Здесь object_name – это понятное имя типа отслеживаемых файлов, а mask – маска, содержащая атрибуты из листинга 1.

Определение объектов

Если вы хотите следить за системными двоичными файлами, например, reducevg или chfs, то необходимо знать об изменении их следующих свойств:

  • права доступа
  • символические ссылки
  • группа-владелец
  • владелец файла
  • размер файла
  • время изменения
  • контрольная сумма MD5

Итак, исходя из вышеперечисленных свойств, я могу создать объект с именем SYSBIN (от system binaries – системные двоичные файлы), используя атрибуты из листинга 1.

SYSBIN =  +pngu+sm;

Обратите внимание на то, что эта маска содержит два знака "плюс" (+), которые означают, что права доступа и размер файла необходимо сравнивать со значениями, полученными при предыдущем запуске Tripwire или создании моментального снимка.

Каждый наблюдаемый файл или директория имеют следующий формат:

<directory/file-name> - > $(object_name)

Запись для наблюдения за двоичным файлом /usr/local/bin/pwgen, определенная с помощью объекта SYSBIN, будет выглядеть следующим образом:

/usr/local/bin/pwgen  -> $(SYSBIN);

Если бы с помощью объекта SYSBIN мне потребовалось наблюдать за директорией /usr/bin, то запись выглядела бы так:

/usr/bin -> $(SYSBIN);

Любые изменения в этой директории (например, добавление или удаление файлов) считаются нарушением целостности.

Для динамических файлов (как правило, это log-файлы) такие жесткие требования применять не стоит, поскольку их размеры постоянно изменяются. Для них можно было бы использовать, например, следующий объект:

 SYSLOGS +p-lum

С помощью этого объекта отслеживаются следующие свойства:

  • права доступа
  • увеличение размера файла игнорируется ( -l)
  • владелец файла
  • контрольная сумма MD5

Запись для наблюдения за log-файлом var/adm/messages, определенная с помощью объекта SYSLOGS, будет выглядеть следующим образом:

/var/adm/messages - > $(SYSLOGS)

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

  • время доступа
  • права доступа
  • время изменения
  • размер файла
  • владелец файла
  • контрольная сумма MD5

В нашем случае можно было бы создать следующий объект с именем APPCONF:

APPCONF a+pm+suM;

Запись для наблюдения за конфигурационным файлом приложения /opt/dstage/Server/DSEngine/dsenv, определенная с помощью объекта APPCONF, будет выглядеть следующим образом:

/opt/dstage/Server/DSEngine/dsenv - > $(APPCONF);

Вы не сможете просканировать файловую систему, которая уже содержит другую файловую систему, смонтированную в базовой точке монтирования (не являющуюся кросс-монтированием NFS), до тех пор, пока не укажете ее отдельно в файле политики.

Предположим, что вы хотите наблюдать за файловой системой /opt, которая содержит другую файловую систему /opt/myapp, смонтированную следующим образом:

/opt
/opt/myapp

В этом случае Tripwire сообщит об ошибке:

The object: "/opt/myapp" is on a different file system...ignoring.

Поэтому не забывайте создавать записи для всех файловых систем, которые необходимо сканировать.

Использование объектов, не содержащих переменных

Нет необходимости всегда использовать переменные объектов, хотя они упрощают работу в случаях, когда приходится указывать в файле политики повторяющиеся команды. Можно указывать атрибуты вместо объектов – такие конструкции называются масками свойств. Например, для наблюдения за директорией /etc/security и для рекурсивного сканирования ее содержимого будем наблюдать за следующими свойствами:

  • права доступа
  • владелец файла
  • группа-владелец

В этом случае можно создать следующую запись:

/etc/security   -> +pug  (recurse=-1);

Здесь -1 означает рекурсивное сканирование; 0 означает простое сканирование дескрипторов inode директорий.

Если задано сканирование директорий, то при добавлении и удалении файлов, а также при изменении этой директории Tripwire сообщит о нарушении целостности.


Создание исключений для Tripwire

Чтобы программа Tripwire полностью проигнорировала (т. е. не сканировала) директорию или файлы, нужно создать запись в следующем формате:

! <имя_объекта>;

Здесь имя_объекта может являться заранее определенной переменной, именем файла или директорией. Например, чтобы Tripwire исключил из сканирования директорию /opt/dump и файл /opt/freeware/goodies/myjob, можно создать следующие записи:

!/opt/dump;
!/opt/freeware/goodies/myjob;

Ранее я приводил пример сканирования директории /etc/security. В этой директории находится файл lastlog, содержащий информацию о предыдущих входах в систему. Если вы не хотите отслеживать этот файл, то просто создайте следующую запись: !/etc/security/lastlog;.

Теперь при проверке директории /etc/security Tripwire проигнорирует файл lastlog.


Дешифрование файла политики

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

 # /opt/freeware/sbin/twadmin --print-polfile > /etc/tripwire/twpol.txt

После этого дешифрованный файл политики будет называться twpol.txt.


Создание нового файла политики

В следующем примере мы создадим файл twpol с нуля. Для этого начнем с создания нового файла с именем /etc/tripwire/twpol.txt.

Поместите в этот файл следующее содержимое:

# this is a comment
# aix twpol.txt file

# system binaries
SYSBIN =  +pngu+sm;

/usr/local/bin/pwgen  -> $(SYSBIN);
/usr/bin -> $(SYSBIN);
/usr/sbin -> $(SYSBIN);

/etc/security   -> +pug  (recurse=-1);

# ignore last log
!/etc/security/lastlog;

# logs
SYSLOGS = +p-lum;

/var/adm/messages -> $(SYSLOGS);
/opt -> $(SYSBIN);
# ignore these do not scan
!/opt/dump;
!/opt/freeware;

Шифрование файла политики

Для того чтобы Tripwire сгенерировал новый файл политики (или обновил существующий), воспользуйтесь командой twadmin; вам будет предложено ввести пароль для ключа сайта:

# /opt/freeware/sbin/twadmin --create-polfile -S site.key /etc/tripwire/twpol.txt
Please enter your site passphrase:rs6000
Wrote policy file: /etc/tripwire/tw.pol

Просмотр зашифрованного файла политики

Чтобы убедиться в том, что Tripwire внес необходимые изменения в обновленный файл политики, воспользуйтесь командой atcadmin для вывода его содержимого:

# /opt/freeware/sbin/twadmin --print-polfile
# this is a comment
# aix twpol.txt file

# system binaries
SYSBIN =  +pngu+sm;

/usr/local/bin/pwgen  -> $(SYSBIN);
/usr/bin -> $(SYSBIN);
/usr/sbin -> $(SYSBIN);

/etc/security   -> +pug  (recurse=-1);

# ignore last log
!/etc/security/lastlog;

# logs
SYSLOGS = +p-lum;

/var/adm/messages -> $(SYSLOGS);
/opt -> $(SYSBIN);
# ignore these do not scan
!/opt/dump;
!/opt/freeware;

Если в момент запуска команды tripwire –init база данных Tripwire уже существует, то рекомендуется сначала удалить исходную базу данных. Это будет гарантировать, что вы получите чистую сборку базы данных. В этом примере моя база данных расположена в файле /var/lib/tripwire/rs6000.twd.

Сканирование и создание базы данных

Теперь программа Tripwire должна выполнить первоначальную проверку целостности и сгенерировать новую базу данных:

# /opt/freeware/sbin/tripwire --init
Please enter your local passphrase:master
Parsing policy file: /etc/tripwire/tw.pol
Generating the database...
*** Processing Unix File System ***
Wrote database file: /var/lib/tripwire/rs6000.twd
The database was successfully generated.

Запустим проверку целостности Tripwire для нашей системы (т. е. процесс сканирования Tripwire). Результаты показаны в листинге 3. В этом листинге содержится отчет с информацией об использовании новой политики.

Листинг 3. Проверка целостности Tripwire
# /opt/freeware/sbin/tripwire –check

Parsing policy file: /etc/tripwire/tw.pol
*** Processing Unix File System ***
Performing integrity check...
Wrote report file: /var/lib/tripwire/report/rs6000-20110817-173602.twr


Open Source Tripwire(R) 2.4.1 Integrity Check Report

Report generated by:          root
Report created on:            Wed Aug 17 17:36:02 BST 2011
Database last updated on:     Never

===============================================================================
Report Summary:
===============================================================================

Host name:                    rs6000
Host IP address:              192.168.4.8
Host ID:                      None
Policy file used:             /etc/tripwire/tw.pol
Configuration file used:      /etc/tripwire/tw.cfg
Database file used:           /var/lib/tripwire/rs6000.twd
Command line used:            /opt/freeware/sbin/tripwire –check
Rule Summary:
===============================================================================

-------------------------------------------------------------------------------
  Section: Unix File System
-------------------------------------------------------------------------------

  Rule Name                       Severity Level    Added    Removed  Modified
  ---------                       --------------    -----    -------  --------
  pwgen                           0                 0        0        0
  (/usr/local/bin/pwgen)
  bin                             0                 0        0        0
  (/usr/bin)
  sbin                            0                 0        0        0
  (/usr/sbin)
  security                        0                 0        0        0
  (/etc/security)
  messages                        0                 0        0        0
  (/var/adm/messages)
  opt                             0                 0        0        0
  (/opt)

Total objects scanned:  3739
Total violations found:  0
# Section: Unix File System
-------------------------------------------------------------------------------

No violations.

===============================================================================
Error Report:
===============================================================================

No Errors

-------------------------------------------------------------------------------
*** End of report ***

Проверка и устранение нарушений целостности

Наша не слишком подробная политика показывает, что с нашей системой все в порядке. Теперь я изменю разрешения для наблюдаемого файла /usr/local/bin/pwgen.

# cd /usr/local/bin
# ls -l pwgen
-rwxrwxr-x    1 root     system       198697 Mar 26 15:15 pwgen
# chmod 755 pwgen
# ls -l pwgen
-rwxr-xr-x    1 root     system       198697 Mar 26 15:15 pwgen

Теперь снова запустим процесс сканирования Tripwire; программа сообщит об изменениях, произошедших с файлом pwgen. Сокращенный вывод результатов сканирования приведен в листинге 4.

Листинг 4. Результаты проверки нарушений
# /opt/freeware/sbin/tripwire --check
Parsing policy file: /etc/tripwire/tw.pol
*** Processing Unix File System ***
Performing integrity check...
Wrote report file: /var/lib/tripwire/report/rs6000-20110817-173839.twr


Open Source Tripwire(R) 2.4.1 Integrity Check Report

Report generated by:          root
Report created on:            Wed Aug 17 17:38:39 BST 2011
Database last updated on:     Never

===============================================================================
Report Summary:
===============================================================================

Host name:                    rs6000
Host IP address:              192.168.4.8
Host ID:                      None
Policy file used:             /etc/tripwire/tw.pol
Configuration file used:      /etc/tripwire/tw.cfg
Database file used:           /var/lib/tripwire/rs6000.twd
===============================================================================
Rule Summary:
===============================================================================

-------------------------------------------------------------------------------
  Section: Unix File System
-------------------------------------------------------------------------------

  Rule Name                       Severity Level    Added    Removed  Modified
  ---------                       --------------    -----    -------  --------
* pwgen                           0                 0        0        1
  (/usr/local/bin/pwgen)
  bin                             0                 0        0        0
  (/usr/bin)
  sbin                            0                 0        0        0
# Section: Unix File System
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
Rule Name: pwgen (/usr/local/bin/pwgen)
Severity Level: 0
-------------------------------------------------------------------------------

Modified:
"/usr/local/bin/pwgen"
…
…
*** End of report ***

Повторная инициализация или обновление политики

Из листинга 4 видно, что программа Tripwire смогла правильно определить произошедшие изменения. Если мы считаем, что эти изменения допустимы для файла pwgen, то следует сделать так, чтобы Tripwire не уведомляла о них. Для этого есть два пути.

Мы можем снова запустить Tripwire с опцией init и получить новый базовый снимок системы, с которым будут сравниваться результаты последующих проверок:

# /opt/freeware/sbin/tripwire --init

Мы можем обновить базу данных Tripwire и указать, что данное изменение следует проигнорировать (или, точнее, принять).

Все файлы отчетов, генерируемые Tripwire, расположены в виде файлов имяхоста<метка_времени>.twr в директории /var/lib/tripwire/report. Просто выберите отчет, созданный в результате проверки Tripwire, отсортировав файлы по дате. Когда вы выберете нужный файл, базу данных можно обновить с помощью следующей команды:

tripwire - - update - - twrfile </var/lib/tripwire/report/<hostname_date_stamp>.twr

После выполнения этой команды вы попадете в текстовый редактор. Найдите имена файлов, о нарушении которых сообщалось в отчете. Вся информация о нарушениях или обновлениях отмечена знаками [x] перед именами файлов. В нашем примере нужно найти следующую строку:

[x] "/usr/local/bin/pwgen"

Например:

Rule Name: pwgen (/usr/local/bin/pwgen)
Severity Level: 0
-------------------------------------------------------------------------------

Remove the "x" from the adjacent box to prevent updating the database
with the new values for this object.

Modified:
[x] "/usr/local/bin/pwgen"

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

Когда вы сохраните файл и закроете редактор, а изменения будут внесены в базу данных, вам будет предложено ввести пароль для завершения процедуры. Если вы не делали никаких изменений, то Tripwire сообщит вам об этом, и пароль вводить не придется. В нашем примере пароль запрашивается, поскольку база данных была обновлена.

Please enter your local passphrase: master
Wrote database file: /var/lib/tripwire/rs6000.twd

Первоначальное заполнение файла политики

Заполнение нового файла политики списком файлов, которые необходимо отслеживать, может занять много времени. Одним из быстрых способов сделать это является простое указание директорий и файловых систем, как было показано выше. Другой способ – это запуск команды find в директориях, содержащих системные двоичные файлы (например, /usr/bin) и перенаправление вывода в файл политики. В листинге 5 приведен простой сценарий, который находит файлы стандартного типа и печатает имя объекта (например, SYSBIN из предыдущих примеров). Вывод можно перенаправить в файл политики.

Листинг 5. Сценарий pop_twpol
#!/bin/sh
# pop_twpol
dir_list="/usr/bin /usr/sbin /usr/local/bin"

for loop in $dir_list
do
list=$(find ${loop} -type f -exec ls {} \;)

 for loop2 in $list
  do
   echo "${loop2} -> \$(SYSBIN);"
  done

done

Пример вывода этого сценария может выглядеть следующим образом:

/usr/bin/xmtopasagg -> $(SYSBIN);
/usr/bin/xmtrend -> $(SYSBIN);
/usr/bin/xmwlm -> $(SYSBIN);
/usr/bin/xpstat -> $(SYSBIN);
/usr/bin/xsend -> $(SYSBIN);
/usr/bin/yes -> $(SYSBIN);
/usr/bin/ypcat -> $(SYSBIN);
/usr/bin/ypmatch -> $(SYSBIN);
/usr/bin/yppasswd -> $(SYSBIN);
/usr/bin/ypservers -> $(SYSBIN);
/usr/bin/ypwhich -> $(SYSBIN);

Сначала получим текстовую версию файла политик Tripwire, как мы делали это ранее:

# /opt/freeware/sbin/twadmin --print-polfile > /etc/tripwire/twpol.txt

Далее запустите сценарий из листинга 5 (вы можете исправить список директорий по своему усмотрению) и перенаправьте вывод в файл twpol.txt:

#./pop_twpoll >> /etc/tripwire/twpol.txt

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

Далее примените новый файл политик в Tripwire:

# /opt/freeware/sbin/twadmin --create-polfile -S site.key /etc/tripwire/twpol.txt

Специальные файлы и log-файлы можно добавить вручную или с помощью вышеописанного алгоритма.

Просмотрите содержимое файла политики и убедитесь в том, что он содержит указанные файлы, зашифрован и готов к использованию:

# /opt/freeware/sbin/twadmin –print-polfile
# this is a comment
# aix twpol.txt file

# system binaries
SYSBIN =  +pngu+sm;


# logs
SYSLOGS = +p-lum;

/var/adm/messages -> $(SYSLOGS);

/etc/security   -> +pug  (recurse=-1);
# ignore last log
!/etc/security/lastlog;

/opt -> $(SYSBIN);
# ignore these do not scan
!/opt/dump;
!/opt/freeware/goodies/myjob;

/usr/bin/Mail -> $(SYSBIN);
/usr/bin/ManGetURL.class -> $(SYSBIN);
/usr/bin/Rsh -> $(SYSBIN);
/usr/bin/SpmiArmd -> $(SYSBIN);
…
…

Далее выполните первоначальное сканирование Tripwire для повторной генерации базы данных:

 # /opt/freeware/sbin/tripwire --init

Запустите проверку Tripwire с использованием только что созданного файла политики:

 # /opt/freeware/sbin/tripwire –-check

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

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


Отчеты

Как уже упоминалось ранее, после запуска каждой проверки Tripwire создает отчет. Его можно вывести на стандартное устройство вывода или сохранить в файле. Файлы отчетов хранятся в директории /var/lib/tripwire/report.

Например:

# pwd
/var/lib/tripwire/report
bash-3.2# ls
rs6000-20110811-174421.twr  rs6000-20110812-092023.twr
rs6000-20110811-175332.twr  rs6000-20110812-093053.twr
rs6000-20110811-192716.twr  rs6000-20110812-093410.twr

Для просмотра отчета используйте команду reprint в следующем формате:

pwprint -m r –twrfile <reportfile.twr>

Например, для просмотра файла отчета rs6000-20110812-093643.twr можно использовать следующую команду:

# /opt/freeware/sbin/twprint \
-m r --twrfile /var/lib/tripwire/report/rs6000-20110812-093643.twr

 Report is not encrypted.
Open Source Tripwire(R) 2.4.1 Integrity Check Report
Report generated by:          root
Report created on:            Fri Aug 12 09:36:43 BST 2011
Database last updated on:     Never
===============================================================================
Report Summary:
===============================================================================
Host name:                    rs6000
Host IP address:              192.168.4.8
Host ID:                      None
Policy file used:             /etc/tripwire/tw.pol
Configuration file used:      /etc/tripwire/tw.cfg
….
….

Можно также просмотреть информацию из базы данных о конкретном файле. Так, для извлечения информации о файле /usr/local/bin/pwgen можно использовать следующую команду:

# /opt/freeware/sbin/twprint -m d --print-dbfile /usr/local/bin/pwgen
Object name:  /usr/local/bin/pwgen

Property:               Value:
-------------           -----------
Object Type             Regular File
Mode                    -rwxr-xr-x
Num Links               1
UID                     root (0)
GID                     system (0)
Size                    198697
Modify Time             Sat Mar 26 15:15:25 GMT 2011

Просмотреть полную информацию базы данных Tripwire можно с помощью следующей команды:

# /opt/freeware/sbin/twprint -m d –print-dbfile |more

Запуск Tripwire

Чтобы получить эффект от программы Tripwire, необходимо регулярно запускать ее. Для этого вы можете использовать ваш любимый планировщик. Ниже приведен пример записи планировщика cron, которая запускает Tripwire ежедневно в 06:30 и перенаправляет отчет в файл /opt/dump/logs/triplog<дата>:

30 06 * * *  /opt/freeware/sbin/tripwire \
- - check > /opt/dump/logs/triplog'date +"%d-%m-%y"'

И, конечно, не забывайте просматривать отчеты в директории /var/lib/tripwire/report. Вы также можете отправлять их себе по электронной почте. Следующая запись планировщика cron отправляет отчеты по электронной почте группе sysadmin:

30 06 * * *  /opt/freeware/sbin/tripwire - - check | mail sysadmin -s "tripwire report for
'hostname'"

Заключение

Учтите, что некоторые приложения для архивации системы с AIX могут изменять время последнего доступа к архивируемым файлам.

Если эти файлы отслеживаются программой Tripwire, то она сообщит о нарушении целостности атрибута. Таким образом, вам может потребоваться либо изменить настройки политики, или запускать инициализацию Tripwire после процесса архивации для получения нового снимка состояния. Чтобы проверить время последнего доступа к файлу, можно использовать утилиту istat:

istat <имя_файла>

Tripwire имеет богатую функциональность; в этой статье я рассмотрел лишь основные возможности этой программы. Не забудьте прочитать man-страницу twpol, чтобы узнать об остальных возможностях, не упомянутых в этой статье. Не ленитесь настраивать файл политики с учетом требований вашей системы. Tripwire – это полезная программа, которая отлично дополнит другие инструменты для аудита.

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=AIX и UNIX
ArticleID=857328
ArticleTitle=Работа с Tripwire
publish-date=02042013