Bog bos tripwire принципи роботи, установка і настройка

Файли конфігурації і полісі захищаються від записи загальним ключем, а БД і звіти - локальним ключем. Для читання досить доступного публічного ключа, для запису потрібно приватний ключ, що захищається пральний фразою. Спокушатися не треба - якщо вже зломщик отримав права суперкористувача, необхідні для модифікації БД, то він також може перевстановити всі файли tripwire заново і ви будете отримувати поштою повідомлення, що все в порядку, поки не виявите, що ваша парольний фраза не дозволяє змінити БД або полісі!

Для змінених файлів створюються резервні копії з суфіксом .bak.

До складу Red Hat 7.2 входить пакет tripwire-2.3.1-5, що включає програми в / usr / sbin: siggen, tripwire, twadmin, twprint (зібраних без жодних дурниць типу поділюваних бібліотек і мають розмір більше 2 МБ кожна); файли конфігурації: twcfg.txt, twpol.txt, twinstall.sh (в / etc / tripwire); файл конфігурації для cron: /etc/cron.daily/tripwire-check; документація: /usr/share/doc/tripwire-2.3.0/, twconfig.4.gz, twpolicy.4.gz, twfiles.5.gz, siggen.8.gz, tripwire.8.gz, twadmin.8. gz, twintro.8.gz, twprint.8.gz; БД і звіти: / var / lib / tripwire. Чомусь не включено керівництво користувача.

Насамперед треба відредагувати стандартні (з комплекту поставки) файли конфігурації (/etc/tripwire/twcfg.txt) і полісі (/etc/tripwire/twpol.txt). Полісі з поставки можна розглядати тільки як приклад! Кожна конкретна система вимагає свого полісі, інакше не всі важливі саме для даної системи файли будуть перевірятися, а також будуть видаватися зайві попередження.

Запустити /etc/tripwire/twinstall.sh. який запитує парольний фразу і створює файли ключів (/etc/tripwire/site.key і / etc / tripwire / host -local.key), створює з текстових файлів і підписує файл конфігурації і полісі.

Ініціалізувати БД (запитує локальну парольний фразу, можуть бути повідомлення про помилки тому полісі розрахований на повну установку):
tripwire --init [--no-encription]

Виконати пробну перевірку (ця ж команда виконується з /etc/cron.daily/tripwire-check; всі повідомлення про помилки повторюються; д.б.н. принаймні одна зміна - додався файл з БД):
tripwire --check

Намилувавшись на повідомлення про відсутніх файлах (twpol.txt з комплекту поставки розрахований на повну установку), поміняйте /etc/tripwire/twpol.txt і запустіть
tripwire --update-policy --secure-mode low /etc/tripwire/twpol.txt

Може бути доведеться повторити процедуру кілька разів, поки не зійдеться, після чого треба зафіксувати стан системи:
tripwire --check --interactive

Подальші перевірки відбуватимуться щодня в автоматичному режимі. А якщо ви вказали GLOBALEMAIL в файлі конфігурації і додали ключ --email-report до команди запуску tripwire в /etc/cron.daily/tripwire-check, то звіти будуть надсилатися поштою.

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

Перевірка цілісності системи (текстовий звіт виводиться на stdout, якщо не заданий ключ --no-tty-output; створюється файл зі звітом, який шифрується, якщо заданий ключ --signed-report; БД не змінюється):
tripwire --check [--twrfile назва_пакунка-з-звітом] [--email-report [--email-report-level рівень]] об'єкт>

Обмежити список перевірок здійснюється за допомогою таких ключами:
  • --severity рівень (перевіряти тільки правила з вказаним рівнем серйозності або вище)
  • --rule-name ім'я (тільки вказане правило)
  • --ignore список-властивостей (через кому)
Коди повернення (можуть комбінуватися):
  • 1 - був доданий файл (и)
  • 2 - був видалений файл (и)
  • 4 - був змінений файл (и)
  • 8 - не вдалося записати звіт

Зміна БД з метою відобразити існуючий стан речей в інтерактивному режимі (те ж саме, що і tripwire --check --interactive):
tripwire --- update --twrfile назва_пакунка-з-звітом

Зміна БД з метою відобразити існуючий стан речей в автоматичному режимі:
tripwire --- update -a --twrfile назва_пакунка-з-звітом

Конфігураційний файл: /etc/tripwire/tw.cfg. зберігається в кодованому і підписаної формі. Перетворити його в текстовий формат можна командою:

а текстовий файл негайно видалити.

Обов'язкові змінні:
  • 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 (локальний ключ)

Полісі: /etc/tripwire/tw.pol. зберігається в кодованому і підписаної формі. Перетворити його в текстовий формат можна командою:

а текстовий файл негайно видалити. Після цього потрібно створити БД заново.

Якщо полісі змінюється для вже існуючої БД, то щоб перетворити базу даних і полісі за один крок необхідно замість twadmin запустити

При цьому збирається інформація про поточний стан файлової системи і в режимі безпеки high при наявності порушень старих правил, які одночасно є порушеннями нових правил виводиться їх список (на stderr), а БД не змінюється.

Базовим елементом полісі є правила (rule), які задають для системних об'єктів (файлів або директорій, файли всередині директорії успадковують вказане правило, однак, рекурсія не перетинає кордон файлової системи) набори відслідковуються властивостей (не більше одного правила для об'єкта):

Іменем об'єкта є повне ім'я файлу (директорії). Прогалини ігноруються, якщо не укласти ім'я в лапки. Лапки ігнорується, якщо не укладена в лапки і їй не передує зворотна коса риска. Всякі спеціальні символи (!<>> (),; = $ # | \ + 'І \ n, \ t) також треба брати в лапки.

Маска властивостей задає, які властивості об'єкта будуть перевірятися. Кожному властивості відповідає буква. Маска не може бути порожньою. Знак плюс перед буквою включає перевірку, знак мінус - вимикає. Якщо знака перед буквою немає, то мається на увазі попередній в даному правилі знак або знак плюс, якщо знаків не було зовсім. Якщо буква властивості відсутня, то перевірка якості вимкнена. Якщо буква властивості зустрічається кілька разів, то використовується останнє входження. Обробляються наступні властивості:
  • 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
Директиви групують правила і забезпечують умовне виконання. Ім'я директиви не може бути отримано підстановкою значення змінної. Список директив:
  • @@ section ім'я - для Unix обробляються тільки правила в першій секції з ім'ям FS; якщо секцій немає, то обробляються всі правила; в секції GLOBAL визначаються глобальні змінні
  • @@ ifhost ім'я-хоста<|| имя-хоста> - використовувати правила тільки для зазначеного хоста (хостів); умови можуть бути вкладеними
  • @@ else
  • @@ endif
  • @@ print рядок в лапках - висновок на stdout
  • @@ error рядок в лапках - висновок на stdout і завершення зі статусом 1
  • @@ end - будь-який подальший текст в файлі ігнорується; не може використовуватися всередині групи або умовного блоку
Змінні діляться на глобальні та локальні для даної секції. Локальні мають більший пріоритет. Значення змінної присвоюється командою
ім'я_змінної = значення;
Ім'я змінної може включати букви (реєстр має значення), цифри і знаки: "_ + - @:% ^.". Якщо значення містить пробіл або керуючі сиволов, то воно має бути укладена в лапки. Підстановка змінних допускається в будь-якому місці, де по синтаксису покладається рядок (в т.ч. як частина лівої частини правила) і виражається так:
$ (Ім'я_змінної)
Зумовлені змінні (не можуть бути перевизначені):
  • ReadOnly = + pinugsmtdbCM-raclSH (передбачається, що вміст файлів не змінюється)
  • Dynamic = + pinugtd-rsacmblCMHS (передбачається часта зміна вмісту файлів, наприклад / home)
  • Growing = + pinugtdl-rsacmbCMSH (наприклад, журнали)
  • IgnoreAll = -pinusgamctdrblCMSH (перевіряти лише наявність або відсутність файлу)
  • IgnoreNone = + pinusgamctdrbCMSH-l (використовується для подальшого конструювання власної маски: $ (IGnoreNone) -ar)
  • Device = + pugsdr-intlbamcCMSH (для файлів, які не можна відкривати)

Рівень 0: звіт одним рядком. З'являється також в syslog і в заголовку Subject: кожного звіту, що посилається поштою.
TWReport ім'я-хостадата-і-час V: число-порушень S: макс-рівень A: додано R: видалено C: змінено

Рівень 1: список імен пошкоджених файлів у вигляді, легко розбирається програмою відновлення і т.п. Кожен рядок складається з ключового слова (Added, Modified), двокрапки й імені файлу.

Рівень 2: сумарний звіт, список порушень із зазначенням імен правил, список доданих, змінених і віддалених файлів.

Рівень 3: сумарний звіт, список порушень із зазначенням імен правил, список доданих і віддалених файлів, очікувані і реальні властивості змінених файлів.

Рівень 4: сумарний звіт, список порушень із зазначенням імен правил, список доданих, змінених і віддалених файлів, детальний звіт по кожному доданому файлу (всі властивості), кожному зміненому файлу (все перевіряються очікувані і реальні властивості), кожному віддаленому файлу (все перевіряються очікувані властивості).

Парольная фраза змінюється тільки одночасно зі зміною ключів, тому щоб змінити парольний фразу, треба дешифрувати всі файли, згенерувати нові ключі, потім зашифрувати файли. Якщо ви забудете парольний фразу або видаліть / зашкодить / змініть файли з ключами, то зашифровані файли (конфігурація, полісі, БД (і може бути звіти) стануть недоступні). До речі, шифровка не завадить хакеру видалити будь-який файл, включаючи БД tripwire, так що використання tripwire не скасовує обов'язковість резервного копіювання.

Дізнатися який ключ використаний для шифровки файлу (і використаний взагалі):

Прибрати шифровку (запитується парольний фраза, файл залишається в довічним форматі):

Створення нового ключа: