Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Глава 12. Программы обеспечения безопасности (Целостность системы)

Linux Tripwire 2.2.1

Инсталляция типичного Red Hat Linux сервера включает в среднем около 30400 файлов. Администратор не в состоянии проконтролировать целостность всех системных файлов, и если хакер получит доступ к серверу и сможет модифицировать какие-либо файлы, то Вы можете об этом не узнать. Для решения этих проблем было создано несколько программ.

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

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

Эта версия Tripwire имеет значительные изменения по сравнению с предыдущей. Некоторые расширения включают:

  • Множество уровней сообщений позволяет Вам выбрать различную информативность отчетов.
  • Опция Syslog посылает информация об инициализации и обновлении базы данных, изменении политики и целостности в syslog.
  • Производительность базы данных может быть оптимизирована для увеличения эффективности проверки целостности.
  • Разные разделы отчета могут быть посланы разным получателям.
  • Поддержка отправки отчетов по почте через SMTP.
  • Режим тестирования почты для проверки правильности почтовых настроек.
  • Возможность создания нескольких независимо исполняемых секций с политиками.

Эти инструкции предполагают.
Unix-совместимые команды.
Путь к исходным кодам /var/tmp (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем root.
Tripwire версии 2.2.1.

Пакеты.
Домашняя страница Tripwire: http://www.tripwiresecurity.com,
Вы должны скачать: Tripwire_221_for_Linux_x86_tar.gz.

Раскройте архив:

[root@deep /]# cp Tripwire_version_for_Linux_x86_tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf Tripwire_version_for_Linux_x86_tar.gz

ЗАМЕЧАНИЕ. После раскрытия архива Tripwire в каталоге /var/tmp Вы увидите файлы, связанные с Tripwire: License.txt, README, Release_Notes, install.cfg, install.sh, созданный каталог и Tripwire_version_for_Linux_x86_tar.gz.

Конфигурирование файла /var/tmp/install.cfg

Помните, что Tripwire не является программой с открытыми исходными кодами, поэтому процесс компиляции не выглядит как обычно. Вместо этого, Вы должны модифицировать файл install.cfg (который будет автоматически инсталлировать Tripwire), чтобы определить в нем все необходимые пути. Мы должны это сделать так, чтобы он был совместим со структурой файловой системы Red Hat, а исполняемые файлы Tripwire попали под переменную PATH.

Шаг 1.

Редактируйте файл install.cfg (vi install.cfg) и измените этот файл следующим образом:

# install.cfg
#
# default install.cfg for:
# Tripwire(R) 2.2.1 for Unix
#
# NOTE: Это Bourne shell-скрипт, который запоминает инсталляционные
# параметры. Инсталлятор будет выполнять этот файл, чтобы создать Ваш
# конфигурационный файл, а также определит место любой специальной
# конфигурации, нужной для инсталляции.
# Защитите этот файл, потому что в нем могут разместить вредоносный код.
#
# Определите корневой каталог для инсталляции, установив TWROOT=
# во что-нибудь иное, чем /usr/TSS.
#=======================================================
# Если CLOBBER истина, то существующие файлы будут переписываться.
# Если CLOBBER ложь, то существующие файлы не переписываются.
CLOBBER=false
# Корень дерева каталогов TSS.
TWROOT="/usr"
# Исполняемые файлы Tripwire хранятся в TWBIN.
TWBIN="${TWROOT}/bin"
# Файлы политик Tripwire хранятся в TWPOLICY.
TWPOLICY="${TWROOT}/TSS/policy"
# Руководства пользователя (manual pages) Tripwire хранятся в TWMAN.
TWMAN="${TWROOT}/man"
# Файлы базы данных Tripwire хранятся в TWDB.
TWDB="${TWROOT}/TSS/db"
# Файлы ключей сайта Tripwire хранятся в TWSITEKEYDIR.
TWSITEKEYDIR="${TWROOT}/TSS/key"
# Файлы локальных ключей Tripwire хранятся в TWLOCALKEYDIR.
TWLOCALKEYDIR="${TWROOT}/TSS/key"
# Файлы отчетов Tripwire хранятся TWREPORT.
TWREPORT="${TWROOT}/TSS/report"
# Определяется текстовый редактор по умолчанию для Tripwire.
TWEDITOR="/bin/vi"
# TWLATEPROMTING контролирует место, когда tripwire спрашивает пароль.
TWLATEPROMPTING=false
# TWLOOSEDIRCHK определяет, должен ли проверяться каталог на
# свойства, которые могут изменяться, когда файлы в нем проверены.
TWLOOSEDIRCHK=false
# TWMAILNOVIOLATIONS определяет, должен ли Tripwire посылать отчет, когда
# при проверки целостности с опцией --email-report нарушений найдено не
# было. Это позволяет администратору узнать, что проверка была произведена.
TWMAILNOVIOLATIONS=true
# TWEMAILREPORTLEVEL определяет словесное наполнение e-mail отчетов.
TWEMAILREPORTLEVEL=3
# TWREPORTLEVEL определяет словесное наполнение печатаемых отчетов.
TWREPORTLEVEL=3
# TWSYSLOG определяет, должен ли Tripwire регистрировать события в
# системные файлы регистраций
TWSYSLOG=false
#####################################
# Почтовые опции. Выберите подходящий
# метод и комментируйте другие секции
#####################################
#####################################
# Опции SENDMAIL по умолчанию
#
# SENDMAIL или SMTP может быть использован для отправки
# отчетов через TWMAILMETHOD.
# Определяет, какая программа sendmail используется.
#####################################
TWMAILMETHOD=SENDMAIL
TWMAILPROGRAM="/usr/lib/sendmail -oi -t"
#####################################
# Опции SMTP
#
# TWSMTPHOST выбирает SMTP-сервер, используемый для отправки отчетов.
# SMTPPORT выбирает SMTP-порт, используемой почтовой программой SMTP.
#####################################
# TWMAILMETHOD=SMTP
# TWSMTPHOST="mail.domain.com"
# TWSMTPPORT=25
#####################################################################
# Copyright (C) 1998-2000 Tripwire (R) Security Systems, Inc. Tripwire (R)
# is a registered trademark of the Purdue Research Foundation and is
# licensed exclusively to Tripwire (R) Security Systems, Inc.
#####################################################################

ЗАМЕЧАНИЕ. Файл install.cfg используются Bourne shell-скриптом при инсталляции для определения конфигурационных переменных. Они определяют места куда устанавливаются файлы и предпринимаемые действия, если подобные файлы существуют.

Шаг 2.

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

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

[root@deep tmp]# ./install.sh

Замечание. Файл install.sh это инсталляционный скрипт, который запускается для начала установки Tripwire.

Во время инсталляции Вы будете:

  1. Отвечать на некоторые вопросы, связанные с инсталляцией.
  2. Задавать две парольные фразы (pass phrases) соответственно для ключа сервера и локального ключа.

Шаг 3.

Когда Tripwire установится на Вашу систему, она скопирует файлы License.txt, README и Release_Notes в каталог /usr. Конечно, после прочтения, Вы можете спокойно удалить их следующей командой:

[root@deep /usr]# rm -f /usr/License.txt README Release_Notes
Очистка после работы.
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf License.txt README Release-Notes install.cfg \
                    install.sh pkg/Tripwire_version_for_Linux_x86_tar.gz

Команда rm, использованная выше, будет удалять все исходные коды, которые мы использовали при компиляции и инсталляции Tripwire. Она также удалит архив .tgz.

Конфигурации

Все программное обеспечение, описанное в книге, имеет определенный каталог и подкаталог в архиве floppy.tgz, включающем все конфигурационные файлы для всех программ. Если Вы скачаете этот файл, то Вам не нужно будет вручную воспроизводить файлы из книги, чтобы создать свои файлы конфигурации. Скопируйте файл из архива и измените его под свои требования. Затем поместите его в соответствующее место на сервере так, как это показано ниже. Файл с конфигурациями Вы можете скачать с адреса http://www.openna.com/books/floppy.tgz

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

Копируйте файл twpol.txt в каталог /usr/TSS/policy.

Настройка файла /usr/TSS/policy/twpol.txt

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

Шаг 1.

Вы должны редактировать файл политик, заданный по умолчанию, для получения Вашей версии. Файл policyguide.txt в каталоге /usr/TSS/policy может Вам помочь. Откройте файл twpol.txt в текстовом редакторе (vi /usr/TSS/policy/twpol.txt) и измените все, что нужно:

@@section GLOBAL
TWROOT="/usr";
TWBIN="/usr/bin";
TWPOL="/usr/TSS/policy";
TWDB="/usr/TSS/db";
TWSKEY="/usr/TSS/key";
TWLKEY="/usr/TSS/key";
TWREPORT="/usr/TSS/report";
HOSTNAME=deep.openna.com;
@@section FS
SEC_CRIT = $(IgnoreNone)-SHa;
# Критические файлы: мы не можем пропустить любые изменения.
SEC_SUID = $(IgnoreNone)-SHa;
# Исполняемые с установленными флагами SUID или SGID.
SEC_TCB = $(ReadOnly);
# Члены базы доверенных компьютеров (Trusted Computing Base).
SEC_BIN = $(ReadOnly); # Исполняемые, которые не должны изменяться
SEC_CONFIG = $(Dynamic);
# Конфигурационные файлы, которые изменяются редко, но часто читаются.
SEC_LOG = $(Growing);
# Файлы, которые растут, но которые никогда не должны
# изменять монопольное использование.
SEC_INVARIANT = +pug;
# Каталоги, которые никогда не изменяют права доступа и владельца.
SIG_LOW = 33;
# Не критичные файлы, которые имеют минимальный риск при проведении атаки.
SIG_MED = 66;
# Не критичные файлы, которые важны при ударе по безопасности.
SIG_HI = 100; # Критические файлы, которые являются важным местом уязвимости.
# Исполняемые файлы Tripwire.
(emailto = admin@openna.com, rulename = "Tripwire Binaries",
severity = $(SIG_HI))
{
$(TWBIN)/siggen -> $(ReadOnly);
$(TWBIN)/tripwire -> $(ReadOnly);
$(TWBIN)/twadmin -> $(ReadOnly);
$(TWBIN)/twprint -> $(ReadOnly);
}
# Файлы данных Tripwire: конфигурационные файлы, файлы политик, ключи,
отчеты, базы данных.
(emailto = admin@openna.com, rulename = "Tripwire Data Files",
severity = $(SIG_HI))
{
# Замечание: Удаляем атрибут inode, потому что когда Tripwire создает
# резервные копии, он переименовывает старый файл и создает новый
# (который будет иметь новый номер inode). Оставляем inode включенным
# для ключей, которые никогда не должны изменяться.
# ЗАМЕЧАНИЕ. Это правило будет срабатывать при первой проверки целостности
# после инициализации базы данных и каждый раз при проверке целостности
# позже, пока не будет выполнена модификация базы данных, так как база
# данных не будет существовать до этого момента
$(TWDB) -> $(Dynamic) -i;
$(TWPOL)/tw.pol -> $(SEC_BIN) -i;
$(TWBIN)/tw.cfg -> $(SEC_BIN) -i;
$(TWLKEY)/$(HOSTNAME)-local.key -> $(SEC_BIN) ;
$(TWSKEY)/site.key -> $(SEC_BIN) ;
# Не сканировать персональные отчеты.
$(TWREPORT) -> $(Dynamic) (recurse=0);
}
# Эти файлы критичны для корректной загрузки системы.
(emailto = admin@openna.com, rulename = "Critical system boot files",
severity = 100)
{
/boot -> $(SEC_CRIT) ;
!/boot/System.map ;
!/boot/module-info ;
}
# Эти файлы изменяют поведение логина root.
(emailto = admin@openna.com, rulename = "Root config files", severity = 100)
{
/root -> $(SEC_CRIT) ;
/root/.bash_history -> $(SEC_LOG) ;
}
# Общедоступные каталоги, которые должны оставаться статическими
# относительно владельца и группы.
(emailto = admin@openna.com, rulename = "Invariant Directories",
severity = $(SIG_MED))
{
/ -> $(SEC_INVARIANT) (recurse = 0);
/home -> $(SEC_INVARIANT) (recurse = 0);
/etc -> $(SEC_INVARIANT) (recurse = 0);
/chroot -> $(SEC_INVARIANT) (recurse = 0);
/cache -> $(SEC_INVARIANT) (recurse = 0);
}
(emailto = admin@openna.com, rulename = "Shell Binaries")
{
/bin/bsh -> $(SEC_BIN);
/bin/csh -> $(SEC_BIN);
/bin/sh -> $(SEC_BIN);
}
# Месторасположение критичных исполняемых файлов.
(emailto = admin@openna.com, rulename = "OS executables and libraries",
severity = $(SIG_HI))
{
/bin -> $(ReadOnly) ;
/lib -> $(ReadOnly) ;
}
# Локальные файлы системы.
(emailto = admin@openna.com, rulename = "User binaries",
severity = $(SIG_MED))
{
/sbin -> $(SEC_BIN) (recurse = 1);
/usr/sbin -> $(SEC_BIN) (recurse = 1);
/usr/bin -> $(SEC_BIN) (recurse = 1);
}
# Каталоги с временными файлами.
(emailto = admin@openna.com, rulename = "Temporary directories",
recurse = false, severity = $(SIG_LOW))
{
/usr/tmp -> $(SEC_INVARIANT);
/var/tmp -> $(SEC_INVARIANT);
/tmp -> $(SEC_INVARIANT);
}
# Библиотеки.
(emailto = admin@openna.com, rulename = "Libraries", severity = $(SIG_MED))
{
/usr/lib -> $(SEC_BIN);
}
# Включаемые файлы (Include).
(emailto = admin@openna.com, rulename = "OS Development Files",
severity = $(SIG_MED))
{
/usr/include -> $(SEC_BIN);
}
# Разделяемые (Shared) файлы.
(emailto = admin@openna.com, rulename = "OS Shared Files",
severity = $(SIG_MED))
{
/usr/share -> $(SEC_BIN);
}
# Заголовочные файлы ядра.
(emailto = admin@openna.com, rulename = "Kernel Headers Files",
severity = $(SIG_HI))
{
/usr/src/linux-2.2.14 -> $(SEC_BIN);
}
# setuid/setgid root-программы.
(emailto = admin@openna.com, rulename = "setuid/setgid",
severity = $(SIG_HI))
{
/bin/su -> $(SEC_SUID);
/sbin/pwdb_chkpwd -> $(SEC_SUID);
/sbin/dump -> $(SEC_SUID);
/sbin/restore -> $(SEC_SUID);
/usr/bin/at -> $(SEC_SUID);
/usr/bin/passwd -> $(SEC_SUID);
/usr/bin/suidperl -> $(SEC_SUID);
/usr/bin/crontab -> $(SEC_SUID);
/usr/sbin/sendmail -> $(SEC_SUID);
/usr/bin/man -> $(SEC_SUID);
/usr/bin/sperl5.00503 -> $(SEC_SUID);
/usr/bin/slocate -> $(SEC_SUID);
/usr/sbin/utempter -> $(SEC_SUID);
/sbin/netreport -> $(SEC_SUID);
}
(emailto = admin@openna.com, rulename = "Configuration Files")
{
/etc/hosts -> $(SEC_CONFIG);
/etc/inetd.conf -> $(SEC_CONFIG);
/etc/initlog.conf -> $(SEC_CONFIG);
/etc/inittab -> $(SEC_CONFIG);
/etc/resolv.conf -> $(SEC_CONFIG);
/etc/syslog.conf -> $(SEC_CONFIG);
}
(emailto = admin@openna.com, rulename = "Security Control")
{
/etc/group -> $(SEC_CRIT);
/etc/security/ -> $(SEC_CRIT);
/lib/security/ -> $(SEC_CRIT);
/var/spool/cron -> $(SEC_CRIT);
}
(emailto = admin@openna.com, rulename = "Login Scripts")
{
/etc/csh.login -> $(SEC_CONFIG);
/etc/profile -> $(SEC_CONFIG);
}
# Эти файлы изменяются при каждой загрузке системы.
(emailto = admin@openna.com, rulename = "System boot changes",
severity = $(SIG_HI))
{
/dev/log -> $(Dynamic) ;
/dev/cua0 -> $(Dynamic) ;
/dev/console -> $(Dynamic) ;
/dev/tty2 -> $(Dynamic) ; # tty devices
/dev/tty3 -> $(Dynamic) ; # are extremely
/dev/tty4 -> $(Dynamic) ; # variable
/dev/tty5 -> $(Dynamic) ;
/dev/tty6 -> $(Dynamic) ;
/dev/urandom -> $(Dynamic) ;
/dev/initctl -> $(Dynamic) ;
/var/lock/subsys -> $(Dynamic) ;
/var/run -> $(Dynamic) ; # daemon PIDs
/var/log -> $(Dynamic) ;
/etc/ioctl.save -> $(Dynamic) ;
/etc/.pwd.lock -> $(Dynamic) ;
/etc/mtab -> $(Dynamic) ;
/lib/modules -> $(Dynamic) ;
}
# Критические конфигурационные файлы.
(emailto = admin@openna.com, rulename = "Critical configuration files",
severity = $(SIG_HI))
{
/etc/conf.modules -> $(ReadOnly) ;
/etc/crontab -> $(ReadOnly) ;
/etc/cron.hourly -> $(ReadOnly) ;
/etc/cron.daily -> $(ReadOnly) ;
/etc/cron.weekly -> $(ReadOnly) ;
/etc/cron.monthly -> $(ReadOnly) ;
/etc/default -> $(ReadOnly) ;
/etc/fstab -> $(ReadOnly) ;
/etc/group- -> $(ReadOnly) ; # Изменения должны быть нечастыми.
/etc/host.conf -> $(ReadOnly) ;
/etc/hosts.allow -> $(ReadOnly) ;
/etc/hosts.deny -> $(ReadOnly) ;
/etc/lilo.conf -> $(ReadOnly) ;
/etc/logrotate.conf -> $(ReadOnly) ;
/etc/pwdb.conf -> $(ReadOnly) ;
/etc/securetty -> $(ReadOnly) ;
/etc/sendmail.cf -> $(ReadOnly) ;
/etc/protocols -> $(ReadOnly) ;
/etc/services -> $(ReadOnly) ;
/etc/rc.d/init.d -> $(ReadOnly) ;
/etc/rc.d -> $(ReadOnly) ;
/etc/motd -> $(ReadOnly) ;
/etc/passwd -> $(ReadOnly) ;
/etc/passwd- -> $(ReadOnly) ;
/etc/profile.d -> $(ReadOnly) ;
/etc/rpc -> $(ReadOnly) ;
/etc/sysconfig -> $(ReadOnly) ;
/etc/shells -> $(ReadOnly) ;
/etc/nsswitch.conf -> $(ReadOnly) ;
}
# Критичные устройства в системе.
(emailto = admin@openna.com, rulename = "Critical devices",
severity = $(SIG_HI), recurse = false)
{
/dev/kmem -> $(Device) ;
/dev/mem -> $(Device) ;
/dev/null -> $(Device) ;
/dev/zero -> $(Device) ;
/proc/devices -> $(Device) ;
/proc/net -> $(Device) ;
/proc/tty -> $(Device) ;
/proc/sys -> $(Device) ;
/proc/cpuinfo -> $(Device) ;
/proc/modules -> $(Device) ;
/proc/mounts -> $(Device) ;
/proc/dma -> $(Device) ;
/proc/filesystems -> $(Device) ;
/proc/ide -> $(Device) ;
/proc/interrupts -> $(Device) ;
/proc/ioports -> $(Device) ;
/proc/scsi -> $(Device) ;
/proc/kcore -> $(Device) ;
/proc/self -> $(Device) ;
/proc/kmsg -> $(Device) ;
/proc/stat -> $(Device) ;
/proc/ksyms -> $(Device) ;
/proc/loadavg -> $(Device) ;
/proc/uptime -> $(Device) ;
/proc/locks -> $(Device) ;
/proc/version -> $(Device) ;
/proc/meminfo -> $(Device) ;
/proc/cmdline -> $(Device) ;
/proc/misc -> $(Device) ;
}

ЗАМЕЧАНИЕ. Это пример файла политик, который мы Вам предоставляем, конечно, Вы должны модифицировать его под Вашу систему.

Шаг 2.

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

[root@deep /]# twadmin --create-polfile /usr/TSS/policy/twpol.txt
Please enter your site passphrase:
Wrote policy file: /usr/TSS/policy/tw.pol

Организация защиты Tripwire для Linux

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

[root@deep /]# rm -f /usr/bin/twcfg.txt

Дополнительная документация

Здесь перечислены некоторые страницы руководства (man), которые могут дать Вам дополнительную информацию.

$ siggen (8) сбор сигнатур кодов для Tripwire
$ tripwire (8) программа проверки целостности файлов UNIX-систем
$ twadmin (8) административная и инструментальная программа Tripwire
$ twconfig (4) конфигурационный файл Tripwire
$ twfiles (5) краткий обзор файлов, используемых Tripwire и процесса резервного копирования файлов
$ twintro (8) введение в Tripwire
$ twpolicy (4) файл политик Tripwire
$ twprint (8) база данных и печать отчетов Tripwire

Команды

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

Создание базы данных в первый раз

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

Синтаксис для перехода в режим инициализации базы данных:

[root@deep /]# tripwire { --init }

Инициализируем Вашу базу данных:

[root@deep /]# tripwire --init
Please enter your local passphrase:
Parsing policy file: /usr/TSS/policy/tw.pol
Generating the database...
*** Processing Unix File System ***
Wrote database file: /usr/TSS/db/deep.openna.com.twd
The database was successfully generated.

ЗАМЕЧАНИЕ. Когда команда выполнена, база данных готова, и Вы можете выполнить проверку целостности файловой системы и просматривать отчеты.

Запуск режима проверки целостности и интерактивного режима проверки.

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

Синтаксис для режима проверки целостности:

[root@deep /]# tripwire { --check}

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

[root@deep /]# tripwire --check

Tripwire может быть также запущен в режиме "интерактивный режим проверки". В этом режиме Вы можете автоматически обновлять Ваши изменения с терминала.

Для запуска интерактивного режима проверки используйте команду:

[root@deep /]# tripwire --check --interactive

В Tripwire есть опция email, которая позволяет отправлять письма. Эта опция определяет, что отчет должен быть отправлен по электронной почте адресату, определенному в файле политик.

Для запуска режима проверки целостности и отправки отчета по электронной почте, используйте команду:

[root@deep /]# tripwire --check --email-report
Обновление базы данных после проверки целостности.

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

Синтаксис режима обновления базы данных:

[root@deep /]# tripwire { --update -r}

Для обновления базы данных дайте команду:

[root@deep /]# tripwire --update -r \
                        /usr/TSS/report/deep.openna.com-200001-021854.twr

где -r читает определенный файл-отчет (deep.openna.com-200001-021854.twr). Эта опция требуется, так как переменная REPORTFILE в текущем файле конфигурации использует $(DATE).

ЗАМЕЧАНИЕ: В режиме обновления базы данных или режиме интерактивной проверки, Tripwire выводит отчет на Ваш терминал с местом для отметки напротив каждого нарушения политики. Вы можете принять изменения в файловой системе установив знак x или не обновлять базу данных убрав x. После того, как Вы вышли из редактора и ввели локальную парольную фразу, Tripwire будет обновлять и записывать изменения.

Обновление файла с политиками.

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

Синтаксис для режима обновления политик:

[root@deep /]# tripwire { --update-policy /path/to/new/policy/file}

Для обновления файла с политиками используйте команду:

[root@deep /]# tripwire --update-policy /usr/TSS/policy/newtwpol.txt

Режим обновления политик по умолчанию запускается с опцией --secure-mode high. Вы можете столкнуться с ошибкой, когда запускаете Tripwire с этой опцией, если файловая система изменилась по сравнению с последним обновлением базы данных, и если эти изменения будут причиной нарушений по новым правилам политики. После уточнения, что все отчеты о нарушениях в high security режиме санкционированы, Вы можете обновить файл с политиками в low security режиме для решения этой проблемы.

Для обновления файла политик в low security режиме используйте команду:

[root@deep /]# tripwire --update-policy --secure-mode low \
                        /usr/TSS/policy/newtwpol.txt

Проинсталлированные файлы.

> /usr/TSS
> /usr/bin
> /usr/bin/siggen
> /usr/bin/twprint
> /usr/bin/twadmin
> /usr/bin/tripwire
> /usr/bin/twcfg.txt
> /usr/bin/tw.cfg
> /usr/TSS/policy
> /usr/TSS/policy/policyguide.txt
> /usr/TSS/policy/twpol.txt
> /usr/TSS/policy/tw.pol
> /usr/TSS/policy/twpol.txt.bak
> /usr/TSS/report
> /usr/TSS/db
> /usr/TSS/key
> /usr/TSS/key/site.key
> /usr/TSS/key/deep.openna.com-local.key
> /usr/man
> /usr/man/man4
> /usr/man/man4/twconfig.4
> /usr/man/man4/twpolicy.4
> /usr/man/man5
> /usr/man/man5/twfiles.5
> /usr/man/man8
> /usr/man/man8/siggen.8
> /usr/man/man8/tripwire.8
> /usr/man/man8/twadmin.8
> /usr/man/man8/twintro.8
> /usr/man/man8/twprint.8
> /usr/README
> /usr/Release_Notes
> /usr/License.txt

Linux Tripwire ASR 1.3.1

Tripwire ASR 1.3.1 это "Academic Source Release (ASR)" программы Tripwire. Лично я предпочитаю версию 1.3.1 версии 2.2.1, так как она может быть скомпилирована и инсталлирована без каких-либо проблем с совместимостью на всех версиях Linux

В задачах Tripwire ASR написано:

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

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

Эти инструкции предполагают.
Unix-совместимые команды.
Путь к исходным кодам /var/tmp (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем root.
Tripwire версии 1.3.1-1.

Пакеты.
Домашняя страница Tripwire: http://www.tripwiresecurity.com,
Вы должны скачать: Tripwire-1.3.1-1.tar.gz.

Пакеты.

Хорошей идеей будет создать список файлов установленных в Вашей системе до инсталляции Tripwire и после, в результате, с помощью утилиты diff, Вы сможете узнать, какие файлы были установлены. Например, до инсталляции:
find /* > Tripwire1
После инсталляции:
find /* > Tripwire2
Для получения списка установленных файлов:
diff Tripwire1 Tripwire2 > Tripwire-Installed

Раскройте архив:

[root@deep /]# cp Tripwire-version.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf Tripwire-version.tar.gz

Компиляция и оптимизация

Редактируйте файл utils.c (vi +462 src/utils.c) и измените следующую строку:

else if (iscntrl(*pcin)) {
Должна читаться:
else if (!(*pcin & 0x80) && iscntrl(*pcin)) {

Редактируйте файл config.parse.c (vi +356 src/config.parse.c) и измените следующую строку:

rewind(fpout);
Должна читаться:
else
{
  rewind(fpin);
}

Редактируйте файл config.h (vi +106 include/config.h) и измените следующие строки:

#define CONFIG_PATH "/usr/local/bin/tw"
#define DATABASE_PATH "/var/tripwire"
Должны читаться:
#define CONFIG_PATH "/etc"
#define DATABASE_PATH "/var/spool/tripwire"

Редактируйте файл config.h (vi +165 include/config.h) и измените следующую строку:

#define TEMPFILE_TEMPLATE "/tmp/twzXXXXXX"
Должна читаться:
#define TEMPFILE_TEMPLATE "/var/tmp/.twzXXXXXX"

Редактируйте файл config.pre.y (vi +66 src/config.pre.y) и измените следующую строку:

#ifdef TW_LINUX
Должна читаться:
#ifdef TW_LINUX_UNDEF
Редактируйте файл Makefile (vi +13 Makefile) и измените следующие строки:
DESTDIR = /usr/local/bin/tw
Должна читаться:
DESTDIR = /usr/sbin
DATADIR = /var/tripwire
Должна читаться:
DATADIR = /var/spool/tripwire
LEX = lex
Должна читаться:
LEX = flex
CC=gcc
Должна читаться:
CC=egcs
CFLAGS = -O
Должна читаться:
CFLAGS = -O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro \
         -march=pentiumpro -fomit-frame-pointer -fno-exceptions
[root@deep tw_ASR_1.3.1_src]# make
[root@deep tw_ASR_1.3.1_src]# make install
[root@deep tw_ASR_1.3.1_src]# chmod 700 /var/spool/tripwire
[root@deep tw_ASR_1.3.1_src]# chmod 500 /usr/sbin/tripwire
[root@deep tw_ASR_1.3.1_src]# chmod 500 /usr/sbin/siggen
[root@deep tw_ASR_1.3.1_src]# rm -f /usr/sbin/tw.config

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

Команда chmod изменяет права доступа по умолчанию к каталогу tripwire на 700 (drwx------), чтение, запись и исполнение только для пользователя root. И изменяет права доступа на чтение и исполнение только пользователем root (-r-x------) для программ /usr/sbin/tripwire и /usr/sbin/siggen. Команда rm используется для удаления файла tw.config, расположенного в /usr/sbin. Нам этот файл не нужен, так как мы создадим подобный новый файл позже в каталоге /etc.

Очистка после работы.
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf tw_ASR_version/ Tripwire-version.tar.gz

Команда rm, использованная выше, будет удалять все исходные коды, которые мы использовали при компиляции и инсталляции Tripwire. Она также удалит архив .tar.gz.

Конфигурации

Все программное обеспечение, описанное в книге, имеет определенный каталог и подкаталог в архиве floppy.tgz, включающем все конфигурационные файлы для всех программ. Если Вы скачаете этот файл, то Вам не нужно будет вручную воспроизводить файлы из книги, чтобы создать свои файлы конфигурации. Скопируйте файл из архива и измените его под свои требования. Затем поместите его в соответствующее место на сервере так, как это показано ниже. Файл с конфигурациями вы можете скачать с адреса: http://www.openna.com/books/floppy.tgz.

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

Копируйте файл tw.config в /etc.
Копируйте скрипт tripwire.verify в каталог /etc/cron.daily.

Вы можете взять эти файлы из архива floppy.tgz.

Настройка файла /etc/tw.config

Файл /etc/tw.config это конфигурационный файл для Tripwire, в котором определяется, какие каталоги и файлы должны контролироваться. Обратите внимание, что при редактировании этого файла необходимы обширные испытания и опыты, прежде чем удастся получить работающие файлы отчетов. Следующий работающий пример Вы можете использовать как стартовую площадку для Ваших настроек.

Шаг 1.

Создайте файл tw.config (touch /etc/tw.config) и добавьте в него все каталоги и файлы, которые Вы хотите контролировать. Формат конфигурационного файла описан в его заголовке и на странице руководства (man) для tw.config (5):

# Gerhard Mourani: gmourani@videotron.ca
# last updated: 1999/11/12
# Первое, домашний каталог root.
/root                    R
!/root/.bash_history
/                        R
# это ядро
/boot/vmlinuz            R
# критичные файлы загрузки
/boot                    R
# Критичные каталоги и файлы
/chroot                  R
/etc                     R
/etc/inetd.conf          R
/etc/nsswitch.conf       R
/etc/rc.d                R
/etc/mtab                L
/etc/motd                L
/etc/group               R
/etc/passwd              L
# другие популярные файловые системы.
/usr                     R
/usr/local               R
/dev                     L-am
/usr/etc                 R
# исключаем home.
=/home R
# каталог var.
=/var/spool              L
/var/log                 L
/var/lib                 L
/var/spool/cron          L
!/var/lock
# особые каталоги
=/proc                   E
=/tmp
=/mnt/cdrom
=/mnt/floppy

Шаг 2.

Сейчас из соображений безопасности, изменим режим доступа к этому файлу:
[root@deep /]# chmod 600 /etc/tw.config

Конфигурирование скрипта /etc/cron.daily/tripwire.verify

Файл /etc/cron.daily/tripwire.verify это небольшой скрипт, запускаемый crond на Вашем сервере каждый день, для сканирования жесткого диска на предмет возможных изменений в файлах и каталогах и отправки результатов по электронной почте системному администратору. Этот скрипт автоматически выполнит проверку целостности файловой системы. Если Вы хотите автоматизировать эту задачу выполните шаги, описанные ниже.

Шаг 1.

Создайте скрипт tripwire.verify (touch /etc/cron.daily/tripwire.verify) и добавьте в него:

#!/bin/sh
/usr/sbin/tripwire -loosedir -q | (cat <<EOF
Это отчет о возможных изменениях в целостности файловой системы,
ввтоматически созданный программой Tripwire. Чтобы сообщить Tripwire
что файлы и содержимое каталогов верно, выполните как root следующую команду:

/usr/sbin/tripwire -update [pathname|entry]

Если Вы хотите войти в интерактивный режим проверки целостности и
контроля сессии, выполните как root:

/usr/sbin/tripwire -interactive

Измененные файлы/каталоги включают:
EOF
cat
) | /bin/mail -s "Отчет о целостности файлов" root

Шаг 2.

Сейчас сделайте скрипт исполняемым и измените режим доступа к нему на 0700 следующей командой:

[root@deep /]# chmod 700 /etc/cron.daily/tripwire.verify

Организация защиты Tripwire

Рекомендуется из соображений безопасности, переместить базы данных Tripwire (tw.db_[hostname]) в какое-либо место (например, на дискету), где они не могут быть модифицированы. Это важно, потому что данные Tripwire заслуживают такого же доверия, что и ее базы данных. Также рекомендуется сделать сразу распечатку базы данных. Если Вы начнете подозревать, что целостность базы данных нарушена, то сможете вручную проверить ее.

Дополнительная документация

Для получения большей информации Вы можете прочитать страницы руководства (man) перечисленные ниже.

$ man siggen (8) генератор сигнатур программ для Tripwire.
$ man tripwire (8) программа проверки целостности файлов для UNIX.
$ man tw.config (5) конфигурационный файл для Tripwire.

Команды

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

Запуск Tripwire в интерактивном режиме проверки.

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

Шаг 1.

Tripwire должна иметь базу данных, сравнивая с которой в дальнейшем файловую систему она сможет определить изменения. Первым нашим действием будет создание файла, называемого tw.db_[hostname] в каталоге, который Вы определили для хранения базы данных ([hostname] будет заменен на имя Вашей машины).

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

[root@deep /]# cd /var/spool/tripwire
[root@deep tripwire]# /usr/sbin/tripwire --initialize

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

Шаг 2.

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

Для запуска интерактивного режима проверки используйте команду:

[root@deep /]# cd /var/spool/tripwire/database
[root@deep database]# cp tw.db_myserverhostname /var/spool/tripwire
[root@deep database]# cd ..
[root@deep tripwire]# /usr/sbin/tripwire --interactive
Tripwire(tm) ASR (Academic Source Release) 1.3.1
File Integrity Assessment Software
(c) 1992, Purdue Research Foundation, (c) 1997, 1999 Tripwire Security
Systems, Inc. All Rights Reserved. Use Restricted to Authorized Licensees.
### Phase 1: Reading configuration file
### Phase 2: Generating file list
### Phase 3: Creating file information database
### Phase 4: Searching for inconsistencies
###
### Total files scanned: 15722
### Files added: 34
### Files deleted: 42
### Files changed: 321
###
### Total file violations: 397
###
added: -rwx------ root 22706 Dec 31 06:25:02 1999 /root/tmp/firewall
---> File: '/root/tmp/firewall'
---> Update entry? [YN(y)nh?]

ЗАМЕЧАНИЕ. В интерактивном режиме Tripwire будет сообщать обо всех добавленных, удаленных и измененных файлах, затем позволяя пользователю обновить базу данных.

Запуск Tripwire в режиме обновления базы данных.

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

[root@deep /]# tripwire -update /etc/newly.installed.file

Или, если был изменен набор файлов и каталогов, Вы можете выполнить:

[root@deep /]# tripwire -update /usr/lib/Package_Dir

В любом случае, Tripwire пересоздает элементы базы данных для каждого заданного файла. Резервная копия старой базы создается в каталоге ./databases.

Некоторые возможные места использования Tripwire

Tripwire может быть использован для:

  1. Проверки целостности файловой системы.
  2. Получения списка новых инсталлированных или удаленных файлов в Вашей системе.

Инсталлированные пакетом файлы.

> /etc/cron.daily/tripwire.verify
> /etc/tw.config
> /usr/man/man5/tw.config.5
> /usr/man/man8/siggen.8
> /usr/man/man8/tripwire.8
> /usr/sbin/tripwire
> /usr/sbin/siggen
> /var/spool/tripwire
> /var/spool/tripwire/tw.db_TEST

Альтернативы Tripwire

ViperDB
Домашняя страница ViperDB: http://www.resentment.org/projects/viperdb,
FCHECK
Домашняя страница FCHECK: http://sites.netscape.net/fcheck/fcheck.html,
Sentinel
Домашняя страница Sentinel: http://zurk.netpedia.net/zfile.html.