Инструментальные средства обеспечения безопасности

       

Представление о файлах политики Tripwire


Файлы политики определяют для Tripwire, что следует и чего не следует искать. Обычно это шифрованные файлы в двоичном формате, но вы можете воспользоваться командой twadmin -m p current- policy.txt, чтобы сохранить текущий двоичный файл политики в текстовом формате и отредактировать его. Синтаксис текстового файла может оказаться весьма сложным для понимания. Он содержит определения переменных и определения правил. Каждое правило содержит две главные части: имя файла или директории и маску свойств. Ниже приведена часть примера файла политики.

/bin/login -> $(SEC_CRIT) ; /bin/ls -> $(SEC_CRIT) ; /bin/mail -> $(SEC_CRIT) ; /bin/more -> $(SEC_CRIT) ; /bin/mt -> $(SEC_CRIT) ; /bin/mv -> $(SEC_CRIT) ;

Обратите внимание, как имя файла или имя объекта отделяется от маски свойств символом -. SEC_CRIT представляет собой переменную, определенную в начале файла, которая задает разрешенную маску свойств. Обратите также внимание, что каждое правило завершается точкой с запятой (;).

Разрешенная маска свойств. Маски Tripwire управляют тем, какие свойства проверяются в каждом файле. Свойства, обозначенные знаком (+), проверяются, обозначенные знаком (-) - нет. Свойства, которые не обозначены соответствующим знаком, предположительно могут быть проверены. В этом случае все свойства, которые не включены в командную строку, игнорируются. В таблице 12.2 показаны описания каждого свойства.

Таблица 12.2. Маски свойств Tripwire

СвойствоОписание
aПоследнее время доступа.
bБлоки с выделенной памятью.
cСоздать/изменить время.
dУстройство ID, на котором находится inode.
gГрупповой ID владельца файла.
iНомер inode.
lФайл с разрешенным увеличением размера (хорош для чего-либо из /var/log).
mМодификация отмены времени.
nКонтрольный счет inode (число связей).
pРазрешение на чтение/запись/исполнение файла и режима (setuid, setgid).
rУказание inode на устройство ID (для устройств только /dev).
sРазмер файла.
tТип файла (текстовый, данных, исполнимый).
uПользовательский ID владельца файла.
CШифрованная строка по методу CRC32.
HШифрованная строка по методу Haval.
MШифрованная строка по методу MD5.
SШифрованная строка по методу SHA/SHS.
Совет. Параметр -i, задаваемый в режиме интегральной оценки (-m c), используется для игнорирования конкретных свойств в процессе проведения проверки.
Например, выполняя команду tripwire -m c -i "p,s,u", мы сообщаем Tripwire, что необходимо выполнить интегральную оценку для всех файлов, но при этом игнорировать все изменения полномочий доступа, размеров файлов или пользовательских идентификаторов владельцев файлов.

Если вы хотите произвести проверку содержимого шифрованной строки MD5, размера файла, полномочий доступа и пользователя/группы владельца файла, то нужно воспользоваться командой:

/home/myfile -> Mspug

Эту команду также можно написать так:

/home/myfile -> +Mspug-abcdilmnrtCHS

Чтобы сделать жизнь проще, Tripwire поставляется с несколькими заранее заданными переменными, которые можно использовать для определения маски свойств. Они приведены в таблице 12.3.

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

SEC_CRIT = $(IgnoreNone)-SHa

Любые правила, которые используют маску свойств SEC_CRIT, будут проверять все свойства, за исключением SHA hash, Haval hash и времени последнего доступа к файлу.



Таблица 12.3. Переменные определения маски свойств TripwareПеременнаяЗначениеОписание
ReadOnly+pinugtsdbmCM-rlacSHСледит за полномочиями, inode, ссылками на inode, правом владения, типом файлов, размером файлов, устройством ID, используемыми блоками, модификацией отметок времени, а также ненужной информацией CRC32 и MD5. Хороша для файлов, которые не должны изменяться.
Dynamic+pinugtd-srlbamcCMSHСледит за разрешениями, inode, ссылками на inode, правом владения, типом файлов, устройством ID. Не следит за размером, отметками времени или ненужной информацией.
Growing+pinugtdl-srbamcCMSHСледит за тем же, что и Dynamic, но проверяет, что этот файл только увеличивается. Если файл внезапно становится меньше, то Tripwire привлечет ваше внимание. Хороша для файлов протоколов.
Device+pugsdr-intlbamcCMSHСледит за разрешениями, правом владения, размером файлов, устройством ID и устройствами, на которые указывает inode. Хороша для файлов устройств.
IgnoreAll-pinugtsdrlbamcCMSHСледит только за наличием файла, а не его свойствами.
IgnoreNone+pinugtsdrlbamcCMSHСледит за всеми свойствами файла.
<


Некоторые правила с использованием переменной маски свойств можно посмотреть здесь:

/var/log/messages -> $(Growing); /dev/fd0 -> $(Device); /home/jdoe/.netscape -> $(IgnoreAll); /etc/inetd.conf -> $(ReadOnly);

Атрибуты правил. Атрибуты правил могут относиться к отдельным правилам или группам правил, как это показано в таблице 12.4.

Таблица 12.4. Атрибуты правил TripwareАтрибут_правилаОписание
rulenameПрисваивает имя правилу или группе правил. Помогает в подразделении ваших правил и упрощает понимание при просмотре резюме отчетов по проверке целостности.
emailtoЕсли проверка на целостность Tripwire проводится с опцией -email-report, то где бы правило с этим признаком не запускалось, будет послан e-mail на заданный список e-mail-адресов. Несколько e-mail-адресов должны быть разделены точкой с запятой и заключены в двойные кавычки.
severityЗадает уровень строгости правила или группы правил. Значения могут варьироваться от 0 до 1000000. Это позволяет использовать Tripwire для сканирования только на определенный уровень серьезности нарушения правил. Вы можете задать значащие имена переменных для уровней строгости (т.е. medium=50).
recurseСообщает Tripwire, должен ли он сканировать все вложенные директории в директории (значение true), или он не должен сканировать ни в каких вложенных директориях (значение false), или же он должен сканировать только на определенную глубину вложенных директорий (числовое значение).
Отдельным правилам атрибуты могут присваиваться добавлением их в скобках в конце строки перед точкой с запятой. Чтобы присвоить атрибуты группам правил, их следует помещать в скобках перед правилами. Правила, следующие за атрибутами, на которые распространяется их действие, должны помещаться в фигурных скобках. Ниже приведен пример правил из файла политики:

/var/log/messages -> $(Growing) (rulename = Log, severity = 10); /etc -> $(ReadOnly) (rulename = Etc, recurse = 2); (rulename = Bin, severity = 100, recurse = false, emailto="root;bob@home") { /bin/cat -> $(IgnoreNone)-SHa ; /bin/date -> $(IgnoreNone)-SHa ; /bin/dd -> $(IgnoreNone)-SHa ; /bin/df -> $(IgnoreNone)-SHa ; }



Мы создали правило с названием "Log" с уровнем опасности 10 для файла /var/log/messages. Правило использует маску свойств Growing, которая показывает, что Tripwire проверяет такие свойства, как владельца файла, полномочия доступа и изменение размера. Правило "Etc" использует рекурсивный атрибут, чтобы указать программе на необходимость в процессе интегральной оценки просматривать файловую систему только на глубину двух директорий и использовать маску свойств ReadOnly. Правило "Bin" объединяет несколько тестов с уровнем опасности 100. Правила тестирования для четырех важных Unix-приложений для проверки изменений всех свойств за исключением SHA-строки, Haval-строки и времени последнего доступа. Если любой из этих тестов обнаружит изменение свойств, то по адресу пользователя root и bob@home будут посланы уведомления по электронной почте.

Совет. Помните флаг -R для режима интегральной оценки (-mc)? Вы можете включить этот параметр, чтобы обозначить необходимость использования только конкретных правил. К примеру, команда tripwire -m c -R Bin может быть использована в случае, если необходимо выполнить проверку по правилу "Bin".

Специальные правила: точки останова. Если вы хотите сканировать директории, но пропускать отдельные файлы, то можете использовать специальные правила, которые называются точками останова (stop points), чтобы игнорировать эти файлы. Точки останова представляют собой просто имена файлов или директорий, следующие за восклицательным знаком:

/etc -> $(ReadOnly); !/etc/dhcpd.leases; !/etc/motd;

Это правило говорит о необходимости убедиться, что в директории /etc все файлы имеют свойства "только для чтения", за исключением файлов /etc/dhcpd.leases и /etc/motd.

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


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

  • @@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

  • @@print, @@error. Эти директивы используются для вывода отладочных сообщений из файла политики. Директория @@print просто печатает на стандартный вывод, а директива @@error осуществляет печать в случае ненормального завершения работы программы. Следующий пример указывает Tripwire выдать сообщение в случае, если будет сделана попытка проверки хоста cauliflower, поскольку для этого хоста не предусмотрено никаких правил проверки:

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

  • @@end. Эта директива обозначает конец файла политики. Достигнув этой точки, Tripwire прекращает считывание файла.


Использование нового файла политики. После того как вы модифицировали или создали новый файл политики (назовем его newpolicy.txt), воспользуйтесь командой tripwire -m p newpolicy.txt, чтобы дать возможность программе использовать новый файл политики и, соответственно, обновить базу данных.


Содержание раздела