Проверка целостности системы с помощью tripwire

Проверка целостности системы с помощью tripwire

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

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

tripwire(8): используется для создания базы данных tripwire, и проверки целостности файловой системы.

twadmin(8): используется для создания, шифрования и ведения политик tripwire, конфигурационных файлов и файлов ключей.

twfiles(5): предлагает просмотр различных файлов, созданных tripwire, включая путь к файлу и настройки.

twconfig(4): описывает файл конфигураций

twpolicy(4): описывает файл политик и указывает файлы и директории, а также метод сканирования.

В процессе инсталляции по умолчанию будет создана база данных в /var/db/tripwire. В ней будут хранится файлы:

$ file /var/db/tripwire/*
/var/db/tripwire/hostname.twd:  data/var/db/tripwire/report: irectory

Имя базы данных будет соответствовать имения вашего компьютера. Заметьте, что файл с расширением twd не является ASCII файлом. Для просмотра файла необходимо использовать специальные утилиты, поставляемые с tripwire. Директория report, будет пустой по умолчанию.

Следует уточнить, что база данных инициализируется, используя параметры из файла политик. Во время инициализации, tripwire делает «снимок» всех файлов системы. При периодической проверке целостности системы, существует возможность отследить, какие файлы были изменены, и почему.

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

$ tripwire --check

tripwire сделает проверку системы и сравнит ее со снимком, содержащемся в базе данных. При обнаружении каких либо изменений, данные будут выведены на монитор. Файл формата hostname-date-time.twr будет размещен в /var/db/tripwire/report. И снова же, этот файл не будет записан в кодировке ASCII. Для его просмотра следует воспользоваться утилитами:

$ cd /var/db/tripwire/report
$ twprint --print-report -r hostname-20030309-104231.twr | more

Имя файла отчета будет зависеть от имени хоста и даты создания отчета.

Так выглядит отчет tripwire:

 
*****

Note: Report is not encrypted.
Tripwire(R) 2.3.0 Integrity Check Report

Report generated by:          root
Report created on:            Sun Mar  9 10:42:31 2003
Database last updated on:     Never

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

Host name:                    hostname
Host IP address:              1.2.3.4
Host ID:                      None
Policy file used:             /usr/local/etc/tripwire/tw.pol
Configuration file used:      /usr/local/etc/tripwire/tw.cfg
Database file used:           /var/db/tripwire/hostname.twd
Command line used:            tripwire --check 

===============================================================================
Rule Summary: 
===============================================================================

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

  Rule Name                       Severity Level    Added    Removed  Modified 
  ---------                       --------------    -----    -------  -------- 
  Invariant Directories           66                0        0        0        
  Sources                         100               0        0        0        
  Temporary directories           33                0        0        0        
* Tripwire Data Files             100               1        0        0        
  Local files                     66                0        0        0        
  Tripwire Binaries               100               0        0        0        
  Libraries, include files, and other system files
                                  100               0        0        0        
  System Administration Programs  100               0        0        0        
  User Utilities                  100               0        0        0        
  X11R6                           100               0        0        0        
  NIS                             100               0        0        0        
  (/var/yp)
  /etc                            100               0        0        0        
  Security Control                100               0        0        0        
* Root's home                     100               0        0        1        
  FreeBSD Kernel                  100               0        0        0        
  FreeBSD Modules                 100               0        0        0        
  /dev                            100               0        0        0        
  Linux Compatibility             100               0        0        0        
  (/compat)

Total objects scanned:  102111
Total violations found:  2

*****

Отчет дает краткое описание о количестве новых, удаленных и измененных файлов со времени последней проверки системы. В данном случае был добавлен файл tripwire и изменен файл в директории root`а. Далее следует отчет о измененных файлах:

===============================================================================
Object Detail: 
===============================================================================
  ----------------------------------------
  Added Objects: 1
  ----------------------------------------

Added object name:  /var/db/tripwire/dhcp-17-14.kico2.on.cogeco.ca.twd.bak

-------------------------------------------------------------------------------
  ----------------------------------------
  Modified Objects: 1
  ----------------------------------------

Modified object name:  /root

  Property:            Expected                    Observed                    
  -------------        -----------                 -----------                 
* Modify Time          Sun Mar  9 09:54:01 2003    Sun Mar  9 10:42:34 2003    
* Change Time          Sun Mar  9 09:54:01 2003    Sun Mar  9 10:42:34 2003

В конце рапорта будет дан список всех ошибок. В этом случае – это ошибки Kerberos, с которыми пришлось столкнуться при установке tripwire.

Приведенный выше рапорт является образцом, и не показывает какие либо аномалии. Мы повторили проверку еще раз, предварительно:

  • Создав нового пользователя в системе
  • Удалив бинарный файл tip

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

  Rule Name                       Severity Level    Added    Removed  Modified 
  ---------                       --------------    -----    -------  -------- 
* Tripwire Data Files             100               1        0        0        
* User Utilities                  100               0        1        1        
* /etc                            100               0        0        6        
* Root's home                     100               0        0        1        

===============================================================================
Object Detail: 
===============================================================================
  ----------------------------------------
  Removed Objects: 1
  ----------------------------------------

Removed object name:  /usr/bin/tip

  ----------------------------------------
  Modified Objects: 1
  ----------------------------------------

Modified object name:  /usr/bin

  Property:            Expected                    Observed                    
  -------------        -----------                 -----------                 
* Modify Time          Tue Mar  4 19:36:47 2003    Sun Mar  9 16:11:57 2003    
* Change Time          Tue Mar  4 19:36:47 2003    Sun Mar  9 16:11:57 2003
Здесь ничего неожиданного, сообщается, что /usr/bin/tip был удален 6 марта в 16:11:57 
-------------------------------------------------------------------------------
  ----------------------------------------
  Modified Objects: 6
  ----------------------------------------

Modified object name:  /etc

  Property:            Expected                    Observed                    
  -------------        -----------                 -----------                 
* Modify Time          Sat Feb 15 10:48:13 2003    Sun Mar  9 16:02:39 2003    
* Change Time          Sat Feb 15 10:48:13 2003    Sun Mar  9 16:02:39 2003    


Modified object name:  /etc/group.bak

  Property:            Expected                    Observed                    
  -------------        -----------                 -----------                 
* Inode Number         961                         1297                        
* Size                 404                         461                         
* Modify Time          Wed Sep 25 13:28:27 2002    Sun Feb  9 13:07:19 2003    
* Change Time          Sat Nov  9 14:35:21 2002    Sun Mar  9 16:02:39 2003    
* CRC32                A676qQ                      CqOlUf                      
* MD5                  DyxBdqQBLU5dTDXG4sGHwl      BRoZrUEyVXd6aCYc0TsG/M      


Modified object name:  /etc/master.passwd

  Property:            Expected                    Observed                    
  -------------        -----------                 -----------                 
* Size                 2042                        2150                        
* Modify Time          Sat Feb 15 10:48:13 2003    Sun Mar  9 16:02:39 2003    
* Change Time          Sat Feb 15 10:48:13 2003    Sun Mar  9 16:02:39 2003    
* Blocks               4                           8                           
* CRC32                DDJ4Ig                      BF6+V2                      
* MD5                  DuVzv0gdyUQffuRQnHbKrC      CxQW2V/pqjJ1ep5vzunMG5      


Modified object name:  /etc/passwd

  Property:            Expected                    Observed                    
  -------------        -----------                 -----------                 
* Inode Number         1956                        1953                        
* Size                 1499                        1543                        
* Modify Time          Sat Feb 15 10:48:13 2003    Sun Mar  9 16:02:39 2003    
* Change Time          Sat Feb 15 10:48:13 2003    Sun Mar  9 16:02:39 2003    
* CRC32                AEOtzi                      CF+noG                      
* MD5                  DTYQyRBwdY/bsHG3TzCDS0      A35b+lMv45SAzp25IoUmVW      


Modified object name:  /etc/pwd.db

  Property:            Expected                    Observed                    
  -------------        -----------                 -----------                 
* Inode Number         1906                        1012                        
* Modify Time          Sat Feb 15 10:48:13 2003    Sun Mar  9 16:02:39 2003    
* Change Time          Sat Feb 15 10:48:13 2003    Sun Mar  9 16:02:39 2003    
* CRC32                B4ufr3                      Du5vQF                      
* MD5                  A5cw0I8QyfWE76jhIupjbx      Aw92gyYFa0DPEx+eGFG1MM      


Modified object name:  /etc/spwd.db

  Property:            Expected                    Observed                    
  -------------        -----------                 -----------                 
* Inode Number         1955                        1837                        
* Modify Time          Sat Feb 15 10:48:13 2003    Sun Mar  9 16:02:39 2003    
* Change Time          Sat Feb 15 10:48:13 2003    Sun Mar  9 16:02:39 2003    
* CRC32                B1+c6t                      BnB5nm                      
* MD5                  BeDTKuET4SYQH9UgLdsv5i      BCU119GuWEYDvMd00+8LnP      



-------------------------------------------------------------------------------
Rule Name: Security Control (/etc/group)
Severity Level: 100
-------------------------------------------------------------------------------
  ----------------------------------------
  Modified Objects: 1
  ----------------------------------------

Modified object name:  /etc/group

  Property:            Expected                    Observed                    
  -------------        -----------                 -----------                 
* Inode Number         1297                        961                         
* Size                 461                         475                         
* Modify Time          Sun Feb  9 13:07:19 2003    Sun Mar  9 16:02:39 2003    
* Change Time          Sun Feb  9 13:07:19 2003    Sun Mar  9 16:02:39 2003    
* CRC32                CqOlUf                      AdqVt7                      
* MD5                  BRoZrUEyVXd6aCYc0TsG/M      AFcDFbm7SEtHIYfQ7jy+KS

Заметьте, как много событий произошло в системе, когда был добавлен пользователь. Сделаны изменения в файлах passwd и master.passwd, в group database и ее копии, в базах данных pwd.db и spwd.db.

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

Заметьте, что tripwire также содержит данные прошлого отчета. В данном случае, все еще есть записи о создании одного файла и изменении другого в директории root`а. Обычно, после проверки отчета, данные о изменениях комментируются администратором, во избежания повторного их просмотра. Для этого следует сделать следующее:

$ tripwire --update -r hostname-date-time.twr

Через некоторое время будет открыт отчет в редакторе vi по умолчанию. Ближе к окончанию находятся следующий строки:

Remove the "x" from the adjacent box to prevent updating the database with 
the new values for this object.
 Removed:[x] "/usr/bin/tip"

По умолчанию, все изменения обозначаются как x. Это означает, что изменения не будут повторяться, когда будет создан новый отчет.

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

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

При утстановке tripwire, файл политик по умолчанию был создан в /usr/local/etc/tripwire/tw.pol. Этот файл используется tripwire во время проверки в базе. Его невозможно непосредственно редактировать, так как файл зашифрован и подписан, хотя существует текстовый файл в /usr/local/etc/tripwire/twpol.txt. Следует вносить все изменения именно в этот текстовый файл, а затем с помощью утилиты внести изменения в файл политик.

Начнем с изучения содержания этого файла /usr/local/etc/tripwire:

 
$ cd /usr/local/etc/tripwire && file *
hostname-local.key: 			 data
site.key:                                data
tw.cfg:                                  data
tw.pol:                                  data
twcfg.txt:                               ASCII text
twpol.txt:                               ASCII English text
twpol.txt.bak:                           ASCII English text

Заметим, что файл политик (tw.pol) и файл конфигураций (tw.cfg) являются типа data. Каждый из них имеет свой эквивалент в виде текстового файла (копия файла политик - twpol.txt.bak).

С первого взгляда, файл политик может показаться отнюдь не привлекательным из-за ужасного синтаксиса. Но это не так страшно. Порт во FreeBSD создает файл политик, который должен включать в себя все, что касается инсталляции системы. Заметьте, что некоторые строки начинаются с знака #. Это означает, что строка закомментирована. Если есть потребность в проверке данной директории, необходимо просто стереть этот знак. Также, если нет необходимости проверять какую-то директорию, можно закомментировать соответствующую строку, используя #.

В данном случае, мы комментируем все записи, связанные с Kerberos в файле twpol.txt. После сохранения изменений в текстовом файле, необходимо обновить зашифрованные файл политик:

$ tripwire --update-policy twpol.txt
Parsing policy file /usr/local/etc/tripwire/twpol.txt
Please enter your local passphrase:
Please enter your site passphrase:

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

Наличие комментариев – это самый легкий путь для контроля мониторинга файлов с помощью tripwire. Дополнительную информацию о файле политик можно получить посредством команды man twpolicy.

Файл конфигураций выглядит более дружественно. Информацию о нем можно получить с помощью man twconfig. Также существует возможность выбора редактора. По умолчанию прописан редактор vi. Все, что нужно – указать в следующей строчке путь к редактору.

EDITOR        =/usr/bin/vi
Для обновления зашифрованного файла конфигураций сделайте следующее:
$ twadmin --create-cfgfile -S site.key twcfg.txt
Please enter your site passphrase:

Может возникнуть ошибка синтаксиса, если отсутствует параметр -S site.key.

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

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

Дополнительную информацию о создании файла политик можно найти сдесь: http://www.cert.org/security-improvement/implementations/i002.02.html

Хотя статья и посвящена установке tripwire на Solaris, из нее можно извлечь некоторые ценные советы по использованию данной утилиты.

Домашний Wi-Fi – ваша крепость или картонный домик?

Узнайте, как построить неприступную стену