воскресенье, 4 августа 2013 г.

Tripwire

Режимы работы Tripwire:

    Инициализация базы данных (Database Initialization Mode);

    Проверка целостности (Integrity Checking Mode);

    Обновление базы данных (Database Update Mode);

    Обновление политики (Policy Update Mode);

    Тестовый режим (Test Mode);
   
При вызове программ можно использовать дополнительные ключи:
    -?
    --help
    --help all
    --help режим
    --version
    --verbose (или -v)
    --quiet (или -s)
    --polfile полиси-файл
    --cfgfile файл-конфигурации
    --site-keyfile файл-общего-ключа
    --local-keyfile файл-локального-ключа
    --dbfile файл-БД
    --local-passphrase парольная фраза (не советую использовать, т.к. ее могут увидеть с помощью команды ps)
    --site-passphrase парольная фраза (не советую использовать, т.к. ее могут увидеть с помощью команды ps)

    При необходимости исходные конфигурационные файлы можно создать вновь:
# twadmin -m p > /etc/tripwire/twpol1.txt 

# twadmin -m f > /etc/tripwire/twcfg.txt


Маски (Атрибуты файлов)

A property mask determines which object properties are ignored or monitored by Tripwire.
An empty property mask may not be used.
The property mask must contain one or more property characters.
When property values are used in a property mask without the + or – sign, the plus sign (+) is assumed.
+p+n+s = +pns = pns
    p - права доступа
    i - inode
    n - число жестких ссылок
    u - uid
    g - gid
    t - тип файла
    s - размер
    d - номер устройства диска, на котором хранится соответствующий inode
    r - для файлов устройств номер устройства
    b - число блоков
    m - время модификации
    c - время создания/модификации inode
    l - ожидается, что файл будет расти; если он уменьшился, то это нарушение
    a - время доступа (несовместим с CMSH, т.к. для вычисления суммы необходимо прочитать файл; доступ к содержимому директории меняет время доступа к ней)
    C - контрольная сумма CRC-32, POSIX 1003.2
    M - контрольная сумма MD5
    S - контрольная сумма SHA
    H - контрольная сумма HAVAL
К этим атрибутам можно добавлять дополнительные маски:
+ сравнить атрибут
- игнорировать атрибут
The mask # establishes the same monitoring criteria as the first mask.

The plus sign (+) enables monitoring for a property, the minus sign (-) disables monitoring.
Not specifying a property in the property mask is the same as using the minus (-) sign.
When a plus or minus sign appears in a property mask, it is in effect until the next plus or minus sign appears in the same mask.
When two properties in the same mask contradict each other, only the last property is acted upon by Tripwire.
A property mask may be used with no properties enabled. This type of mask is often used to monitor the deletion or addition of files to the system.

specify the name of the report file you wish to merge with the database
$ tripwire --update -r /var/lib/tripwire/report/androidius.ru-20130802-140850.twr

Атрибуты правил

При написании правил вы можете указывать их атрибуты.
Атрибуты модифицируют действие правила, записываются в виде списка имя = значение через запятую и могут применяться к отдельному правилу или группе правил. Группа правил заключается в фигурные скобки. Список атрибутов для группы правил записывается в скобках перед ней. Индивидуальные атрибуты имеют больший приоритет, чем групповые, за исключением атрибута emailto - в этом случае атрибут добавляется. Обрабатываются следуюшие атрибуты:
rulename - позволяет присвоить правилу имя, которое будет выведено в отчете в случае нарушения правила. Кроме этого, имя можно использовать при сортировке с помощью grep

emailto - Пример: /etc -> +us (email = paer@yahoo.com). чтобы указать несколько адресов, надо перечислить их через точку с запятой и заключить в кавычки

/etc -> +ug (emailto="admin@foo.com;admin2@foo.com");

severity - от 0 до миллиона, по умолчанию - 0; чем больше, тем серьезнее; проверку можно запускать только для правил указанного уровня или выше; в командной строке могут использоваться ключи high - уровень 100, medium - уровень 66, low - уровень 33

recurse - рекурсивная проверка. Если объект является каталогом, то Tripwire будет контролировать все его подкаталоги. true (-1) по умолчанию, false (0) - подкаталоги сканироваться не будут, Tripwire будет сканировать только свойства заданного каталога, а не содержащихся в нем файлов. Положительное значение (1, 2, 3 и т.д.) - позволяет установить глубину сканирования (максимальный уровень вложенности). Атрибут recurse для файла игнорируется.
(
  rulename = "Monitor Filesystems",
)
{
  /                             -> $(ReadOnly) ;
  /home                         -> $(ReadOnly) (recurse=1);

}

Переменные

Переменные делятся на глобальные и локальные для данной секции. Локальные имеют больший приоритет. Значение переменной присваивается командой имя_переменной = значение; Имя переменной может включать буквы (регистр имеет значение), цифры и знаки: "_+-@:&%^.". Если значение содержит пробел или управляющие сиволы, то оно должно быть заключено в кавычки. Подстановка переменных допускается в любом месте, где по синтаксису полагается строка (в т.ч. как часть левой части правила) и выражается так:
$(имя_переменной)

Предопределенные переменные (не могут быть переопределены):
ReadOnly = +pinugsmtdbCM-raclSH (предполагается, что содержимое файлов не изменяется)

Dynamic = +pinugtd-rsacmblCMHS (предполагается частое изменение содержимого файлов, например /home)

Growing = +pinugtdl-rsacmbCMSH (например, журналы)

IgnoreAll = -pinusgamctdrblCMSH (проверять лишь наличие или отсутствие файла)

IgnoreNone = +pinusgamctdrbCMSH-l (используется для дальнейшего конструирования собственной маски: $(IGnoreNone)-ar)

Device = +pugsdr-intlbamcCMSH (для файлов, которые нельзя открывать)


Директивы

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

    @@section. Начинает новый раздел файла. Эта директива может сопровождаться аргументами: FS, NTFS или NTREG. Unix-версия Tripwire игнорирует разделы файла NTFS или NTREG, что позволяет вам использовать один файл политики для всей вашей сети. Если после директивы не задано никаких аргументов, предполагается значение FS. Нет необходимости определять конец раздела, поскольку Tripwire просто просматривает файл в поисках следующей директивы и интерпретирует ее, как конец предыдущего раздела.
    @@ifhost, @@else, @@endif. Эти директивы можно использовать для определения специфических для хоста разделов файла. В отличие от директив разделов, директивы ifhost требуют, чтобы предложение было завершено директивой endif. Это позволяет вам запускать правила только для конкретного хоста в группе хостов, воспользовавшись примерно такой командой:

    @@ifhost originix || badman
       # define rules for only hosts originix and badman here
    @@endif

@@ifnhost hostname Same as the argument, except that the hostname must NOT match the hostname used in this argument.
@@include pathname Used to include the file specified in pathname into the policy file. Both files must use syntax readable by Tripwire.
@@variable Used to make Tripwire perform an action when the named variable is encountered.
@@{variable-name} Same as the previous syntax; normally used in conjunction with other strings.
@@undef variable-name Unassigns the named variable.
@@define variable-string Used to assign a string to a variable. If now string argument is used, the null string is assigned. (Example: @@define LOGS E+pugn
##this template will monitor log files for file permissions, User ID, Group ID, and link count.
##The next template will be the default template applied to directories.)
Using: /var/log                       @@LOGS;
@@ifdef variable-name This argument is true if the variable is defined.
@@Ifndef variable-name This argument is true if the variable is NOT defined.
    @@print, @@error. Эти директивы используются для вывода отладочных сообщений из файла политики. Директория @@print просто печатает на стандартный вывод, а директива @@error осуществляет печать в случае ненормального завершения работы программы. Следующий пример указывает Tripwire выдать сообщение в случае, если будет сделана попытка проверки хоста cauliflower, поскольку для этого хоста не предусмотрено никаких правил проверки:

    @@ifhost cauliflower
       @@error "We haven't written any policy rules for
           host cauliflower yet"
    @@endif

    @@end. Эта директива обозначает конец файла политики. Достигнув этой точки, Tripwire прекращает считывание файла.
||  Logical OR statement
&&  Logical AND statement
##  Used to indicate comments


Чтобы исключить файл или папку из проверки используется знак !:
/etc $(ReadOnly) –ar;
!/etc/rc.d ;
!/etc/sysconfig ;
Распечатать результаты проверки:
twprint --print-report -r /var/lib/tripwire/report/site.ru-20130802-133246.twr | more

Обновить правила из файла twpol1.txt:
tripwire --update-policy --secure-mode low ../etc/tripwire/twpol1.txt
--secure-mode low - Обновить базу данных после применения новых настроек.

6. Check for any changes to the files and update tripwire database.
# ./tripwire --check --interactive

(
  rulename = "www Site Directory", severity = $(SIG_MED)
)
{
/var/www                        -> $(IgnoreNone);
/var/www/httpd-logs             -> $(SEC_LOG);
/var/www/caskag/data/logs       -> $(SEC_LOG) ;
!/var/www/caskag/data/mod-tmp       -> $(SEC_INVARIANT) ;
}

Если же изменен важный файл, к примеру, отредактирован какой-то конфигурационный файл в каталоге /etc, то нужно сообщить об данном Tripwire. Для этого Tripwire запускается с опцией -update и опцией -twrfile, после которой показывается файл отчета:
# tripwire --update --twrfile /var/tripwire/report


Автоматическая проверка

execute tripwire check daily at 4:00 a.m.
#add the following line to your crontab
00 4 * * * /opt/tripwire/sbin/tripwire  --check
Для автоматической ежедневной проверки нужно создать файл twcheck в /etc/cron.daily:
#!/bin/sh

HOST_NAME= 'uname -n'

if [ ! -e /var/lib/tripwire/${HOST_NAME}.twd ]; then echo "*** Error: Tripwire database for ${HOST_NAME} not fountd"

echo "*** Run "/etc/tripwire/twinstall.sh" and/or "tripwire —init." else

test -f /etc/tripwire/tw.cfg && /usr/sbin/tripwire --check fi
Проверка работоспособности почтовой системы:

tripwire --test --email адрес

http://www.bog.pp.ru/work/tripwire.html
http://www.ibm.com/developerworks/ru/library/au-usingtripwire/
http://www.intuit.ru/studies/courses/1053/150/lecture/2201?page=10&keyword_content=leased 

Каккие файлы проверять с помощью Tripwire:

Проверяйте все бинарные файлы, особенно в папках /sbin и /lib.
Проверяйте системный логи /var/log.
Проверяйте конфигурационные файлы в /etc.
Проверяйте файлы программ безопасности, антивирусов и фаерволов.

Комментариев нет:

Отправить комментарий