Перед установкою та налаштуванням Tripwire ми створюємо зразок сценарію, який виконує аналогічну функцію. Цей сценарій допоможе краще зрозуміти, як працюють Tripwire та подібні інструменти.
Сценарій значною мірою покладається на програму md5sum. Програма md5sum використовується для обчислення 128-бітної контрольної суми (або «відбитка») для вказаного ФАЙЛУ.
Функції сценарію, як описано нижче:
Відразу після встановлення базової системи вона створить резервні копії деяких файлів конфігурації системи в каталозі /etc у каталозі etc.bak у кореневому каталозі.
Зокрема, він створить резервні копії всіх файлів у /etc із суфіксом «*.conf»
Він робить це, коли виконується з параметром ініціалізації ( -- initialization| -i)
Потім сценарій отримає контрольні суми md5 відомих придатних файлів (незабруднених файлів).
Список сум MD5 зберігатиметься у файлі під назвою «md5_good».
Коли сценарій виконується в режимі перевірки, програма md5sum буде викликана з опцією «- -check», щоб перевірити поточні суми MD5 за вказаним списком (файл md5_good).
Сценарій роздрукує вихідні дані перевірки у стандартний вихідний файл і надішле копію результату електронною поштою суперкористувачу.
Кожного разу, коли вносяться зміни (законні чи незаконні) до конфігураційних файлів у /etc, сценарій можна викликати за допомогою --rebuild| -r параметр для затвердження змін і перебудови базової псевдобази даних.
Ви можете періодично запускати сценарій вручну або створити завдання cron для автоматичного запуску сценарію.
Наведений нижче сценарій можна точно налаштувати та масштабувати, щоб робити набагато більше, ніж він робить. Вам і вашій уяві залишається зробити все, що ви хочете.
Якщо вам потрібен швидкий і брудний спосіб виконати роботу, сценарію буде достатньо, але для всього іншого є Tripwire.
Увійдіть як root і запустіть обраний текстовий редактор. Введіть текст нижче:
#!/bin/sh# This script checks for changes in the MD5 sums of files named "/etc/*.conf"case$1in-i|--initialize)# This section will run if the script is run in an initialization mode# Delete old directory, make directory, backup good files, and change directory to /root/etc.bakrm-rf/root/etc.bak
mkdir/root/etc.bak
cp/etc/*.conf/root/etc.bak
cd/root/etc.bak
# Create our baseline file containing a list of good MD5 sumsforiin/etc/*.conf;domd5sum$i>>md5_good
doneecho-e"\nUntainted baseline file (~/etc.bak/md5_good) has been created !!\n";;-v|--verify)# This section will run if the script is called in a verify modecd/root/etc.bak
# Check if there is any file containing output from a previous runif[-fmd5_diffs];thenrm-fmd5_diffs# if it exists we delete itfi# We re-create the file with a pretty sub-heading and some adviceecho-e"\n **** Possibly tainted File(s) ****\n">md5_diffs
# Run the md5sum program against a known good list i.e. "md5_good" filemd5sum-cmd5_good2>/dev/null|grepFAILED>>md5_diffs
if[$?-ge1];thenecho"Nothing wrong here."else# Append some helpful text to the md5_diffs fileecho-e"\nUpdate the baseline file if you approve of the changes to the file(s) above \n">>md5_diffs
echo-e"Re-run the script with the re-build option (e.g. ./check.sh --rebuild) to approve \n">>md5_diffs
catmd5_diffs# print the md5_diffs file to the displayif[-x/usr/bin/mail];thenmail-s"Changed Files"root<md5_diffs# also e-mail the md5_diffs file to rootfifi;;-r|--rebuild)# This section is for re-building the Baseline file just in case# the changes to the configuration files are legal and sanctionedcd/root/etc.bak/
mvmd5_goodmd5_good.bak# make a backup copy of the current untainted baseline fileforjin/etc/*.conf;domd5sum$j>>md5_good
doneecho-e"\nBaseline file updated with approved changes !!!\n";;*)echo"This script accepts: only ( -i|--initialize or -v|--verify or -r|--rebuild ) parameters";;esac
Збережіть наведений вище текст у текстовому файлі та назвіть файл "check.sh"
Використовуйте команду ls для перегляду вмісту домашнього каталогу root. У ньому має бути новий каталог під назвою etc.bak. Використовуйте команду cat, щоб переглянути файл /root/etc.bak/md5_good.
Запустіть сценарій за допомогою параметра перевірки. Впишіть:
Згідно з наведеним вище попередженням, вам слід додатково дослідити, чи відповідає змінений файл вашому схваленню. Якщо так, ви можете запустити сценарій із параметром --rebuild. Щоб переглянути лише відмінності між «заплямованим» та «незаплямованим» файлом, ви можете ввести:
Однією з перших речей, які ви повинні зробити після створення будь-якої нової системи, є отримання знімка завідомо доброго стану системи до того, як система буде «заражена» або перед розгортанням системи у виробництві.
Для цього існує кілька інструментів. Одним з таких інструментів є Tripwire. Tripwire — це вдосконалений інструмент, тож підготуйтеся до багатьох параметрів, синтаксису, особливостей і перемикачів.
Tripwire можна розглядати як форму системи виявлення вторгнень на основі хоста (IDS). Він виконує функції виявлення вторгнень, роблячи знімок «справної системи», а потім порівнюючи цей працездатний стан з будь-якими іншими підозрілими станами. Він надає засоби дізнатися/відстежити, чи певні конфіденційні файли були змінені незаконним шляхом. Звичайно, системний адміністратор вирішує, які файли слід контролювати.
Автори Tripwire описують його як програмне забезпечення безпеки з відкритим вихідним кодом, виявлення вторгнень, оцінки збитків і відновлення та криміналістику.
Tripwire порівнює новий підпис файлу з підписом, отриманим під час створення бази даних.
Кроки, пов’язані зі встановленням і налаштуванням Tripwire, перераховані нижче:
Встановіть програмне забезпечення з вихідного або двійкового файлу
Запустіть сценарій налаштування: (twinstall.sh). Цей сценарій використовується для: a) Створення ключа сайту та локального ключа і запиту парольних фраз для обох b) Підпису файлу політики та файлу конфігурації ключем сайту.
Утиліта twadmin виконує адміністративні функції, пов’язані з файлами tripwire та параметрами конфігурації. Зокрема, twadmin дозволяє кодувати, декодувати, підписувати та перевіряти файли Tripwire і надає засоби для створення та зміни локальних ключів і ключів сайту.
Налаштування Tripwire включає (за потреби) налаштування файлу конфігурації Tripwire і файлу політики, а потім запуск сценарію налаштування. Сценарій запропонує вам ввести парольну фразу, яка використовуватиметься для підпису/захисту файлу конфігурації, файлу політики та файлу бази даних.
Змініть свій pwd на робочий каталог Tripwire. Введіть наступне:
[root@localhostroot]# cd /etc/tripwire/
Перелічіть вміст каталогу
Використовуйте будь-який пейджер або текстовий редактор для перегляду/вивчення файлів у каталозі.
Ми приймемо налаштування, які постачаються з конфігурацією за замовчуванням. файл (twcfg.txt) і наданий файл політики за замовчуванням (twpol.txt).
Запустіть утиліту налаштування Tripwire як root. Вам буде запропоновано (двічі) ввести парольну фразу файлу ключа сайту. Виберіть будь-яку парольну фразу, яку ви НЕ забудете (ключ сайту призначений для файлів twcfg.txt і twpol.txt). Введіть:
Далі вам буде запропоновано ввести локальний ключ. Знову виберіть інший пароль, ЯКИЙ ВИ не забудете. (Локальний ключ підписує файли бази даних tripwire і файли звітів)
Після вибору ваших парольних фраз програма tripwire-setup-keyfiles продовжить фактичне створення/підписання зашифрованих версій оригінальних простих текстових файлів (тобто буде створено tw.cfg і tw.pol відповідно). Вам знову буде запропоновано ввести парольні фрази, які ви вибрали раніше. На цьому етапі просто дотримуйтесь підказок, доки сценарій не завершить роботу.
Відповідно до попередження, яке ви отримали під час роботи утиліти tripwire-setup-keyfiles, тепер ви перемістите звичайні текстові версії файлу конфігурації та файлів політики з локальної системи. Ви можете зберегти їх на зовнішньому носії видалення або зашифрувати на місці (використовуючи, наприклад, такий інструмент, як GPG), АБО повністю видалити їх, якщо ви відчуваєте себе особливо сміливим. Впишіть:
Може бути корисно зберігати версії з простим текстом у безпечному місці, якщо ви забудете свої парольні фрази. Тоді ви завжди можете повторно запустити tripwire-setup-keyfiles на основі конфігурацій і політик, які ви налаштували з часом.
Ініціалізація бази даних — це термінологія Tripwire для створення початкового «незаплямованого» знімка файлів, які ви вирішили контролювати (на основі файлу політики). Це створює базу даних, а також підписує базу даних локальним ключем. База даних служить основою для всіх майбутніх перевірок цілісності.
Коли буде запропоновано, введіть локальну парольну фразу. Створення бази даних завершиться, і ви повинні отримати результат, подібний до наведеного нижче:
Базу даних успішно створено.
Використовуйте команду ls, щоб переконатися, що базу даних було створено у вказаному місці. Впишіть:
[root@localhosttripwire]# ls -lh /var/lib/tripwire/$(hostname).twd
-rw-r--r--.1rootroot3.3MSep2718:35/var/lib/tripwire/localhost.twd
Запуск Tripwire у цьому режимі (режим перевірки цілісності) порівнює поточні об’єкти файлової системи з їхніми властивостями в базі даних tripwire. Розбіжності між базою даних і поточними об’єктами файлової системи виводяться на стандартний вихід, поки Tripwire працює в цьому режимі. Після завершення перевірки Tripwire також створює файл звіту в каталозі, зазначеному у файлі twcfg.txt (/var/lib/tripwire/report/).
Виконайте перевірку цілісності. Впишіть:
[root@localhosttripwire]# tripwire --check
Під час цієї перевірки ви побачите [очікуваний] потік попереджень.
Перевірте в каталозі /var/lib/tripwire/report, щоб побачити, чи там також створено звіт для вас.
Лабораторне завдання:
Запишіть назву створеного файлу звіту.
FILE_NAME =
Знову запустіть перевірку цілісності, але вручну вкажіть ім’я файлу звіту. Впишіть:
[root@localhosttripwire]# tripwire -m c -r /root/tripwire_report.twr
Переконайтеся, що для вас створено новий файл у кореневому каталозі. Впишіть:
[root@localhosttripwire]# ls -l /root/tripwire_report.twr
Файли звітів Tripwire — це набір порушень правил, виявлених під час перевірки цілісності.
Є кілька способів переглянути файл звіту Tripwire:
під час перевірки цілісності
у вигляді електронного листа, автоматично надісланого вам
за допомогою команди twprint, що надається разом із пакетом Tripwire
Примітка
Ви, мабуть, помітили під час попередньої вправи, що tripwire за замовчуванням використовує комбінацію імені FQDN системи, дати та часу для іменування файлів звіту.
Спочатку перейдіть до каталогу звіту за замовчуванням і перегляньте звіт за замовчуванням, створений для вас у кроці 1 вище (FILE_NAME). Впишіть:
[root@localhostreport]# cd /var/lib/tripwire/report && twprint --print-report -r <FILE_NAME>
Замініть вище значенням, яке ви зазначили раніше.
Щоб використати коротку форму наведеної вище команди, введіть:
[root@localhostreport]# twprint -m r -r <FILE_NAME> | less
Ми перенаправляємо вихід до команди less, оскільки звіт швидко прокручується.
Тепер перегляньте інший звіт, який ви створили вручну, у домашньому каталозі root. Впишіть:
[root@localhostroot]# cd && twprint --print-report -r /root/tripwire_report.twr | less
Уважно вивчіть вихід файлу звіту.
Ви повинні були знову помітити, що Tripwire створив двійкові форми/форми даних для файлів звітів. Створіть лише текстову версію файлу звіту в кореневому домашньому каталозі. Впишіть:
Тут ви перевірите роботу електронної пошти Tripwire. Система сповіщень електронною поштою Tripwire використовує налаштування, указані у файлі конфігурації Tripwire. (twcfg.txt).
Спочатку перегляньте файл конфігурації та запам’ятайте змінну(-и), яка керує системою сповіщень електронною поштою Tripwire. Щоб переглянути тип файлу конфігурації:
[root@localhostreport]# twadmin -m f | less
Лабораторне завдання:
Запишіть відповідну(і) змінну(и).
Далі переконайтеся, що ваша локальна поштова система запущена та працює, перевіривши стан Postfix. Впишіть:
[root@localhostreport]# systemctl -n 0 status postfix
.......
Active:active(running)sinceThu2023-08-3116:21:26UTC;3weeks6daysago
.......
Ваш результат має бути подібним до наведеного вище. Якщо ваша система розсилки не працює, спочатку усуньте її та запустіть її, перш ніж продовжувати.
Після інсталяції Tripwire, створення знімка системи та запуску першої перевірки цілісності вам, швидше за все, знадобиться точно налаштувати tripwire відповідно до потреб вашого конкретного середовища. Це здебільшого тому, що файл конфігурації та політики за замовчуванням, який постачається разом із tripwire, може не зовсім відповідати вашим потребам або не відображати фактичні об’єкти у вашій файловій системі.
Вам потрібно з’ясувати, чи є порушення файлової системи, про які повідомляється у файлі звіту під час перевірки цілісності, фактичними порушеннями чи законними/авторизованими змінами об’єктів вашої файлової системи. Знову ж таки, Tripwire пропонує кілька способів зробити це.
Використовуючи цей метод, ви зміните або точно налаштуєте те, що tripwire вважає порушенням об’єктів вашої файлової системи, змінивши правила у файлі політики. Потім базу даних можна оновити без повної повторної ініціалізації. Це економить час і зберігає безпеку, зберігаючи файл політики синхронізованим із базою даних, яку він використовує.
Ви будете використовувати файл звіту, який ви створили раніше ( /root/tripwire_report.txt ), щоб точно налаштувати файл політики, спочатку заборонивши tripwire повідомляти про відсутність файлів, які ніколи не були у файловій системі.
Це допоможе значно скоротити довжину файлу звіту, яким потрібно керувати.
Використовуйте команду grep, щоб відфільтрувати всі рядки у файлі звіту, які посилаються на відсутні файли (тобто Рядки, що містять слово «Ім’я файлу»). Перенаправте вихід в інший файл - tripwire_diffs.txt. Впишіть:
Перегляньте вміст файлу, який ви створили вище. Впишіть:
[root@localhostroot]# less tripwire_diffs.txt207:Filename:/proc/scsi
210:Filename:/root/.esd_auth
213:Filename:/root/.gnome_private
216:Filename:/sbin/fsck.minix
219:Filename:/sbin/mkfs.bfs
..................................
Тепер вам потрібно відредагувати файл політики tripwire і закоментувати або видалити записи у файлі, яких там не повинно бути. Наприклад, деякі файли відсутні у вашій системі, а також файли, які, ймовірно, ніколи не будуть у вашій системі. Наприклад, одним із файлів, які файл політики намагається контролювати, є файл /proc/scsi. Якщо у вашій системі немає пристрою SCSI, то немає сенсу контролювати цей файл.
Іншим спірним прикладом того, що контролювати чи ні контролювати, є різні файли блокувань у каталозі /var/lock/subsys/. Вибір моніторингу цих файлів має бути особистим рішенням.
Повторно створіть текстову версію файлу політики - на випадок, якщо ви видалили його (як рекомендовано) з локальної системи. Впишіть:
Відредагуйте створений вище текстовий файл за допомогою будь-якого текстового редактора. Закоментуйте посилання на об’єкти, які ви не хочете контролювати. Ви можете використовувати створений раніше файл tripwire_diffs.txt як орієнтир. Впишіть:
[root@localhostroot]# vi twpol.txt
Збережіть зміни у файлі та закрийте його.
Запустіть tripwire у режимі оновлення файлу політики. Впишіть:
Коли з’явиться відповідний запит, введіть ваші локальні та сайтові парольні фрази.
Новий підписаний і зашифрований файл політики буде створено для вас у каталозі /etc/tripwire/.
Видаліть або видаліть текстову версію файлу політики з локальної системи.
Виконання команди на кроці 5 вище також створить для вас файл звіту в каталозі /var/lib/tripwire/report directory.
Лабораторне завдання:
Запишіть назву останнього файлу звіту.
Повторно запустіть перевірку цілісності системи, доки не переконаєтеся, що у вас є хороша базова лінія системи, на основі якої можна приймати майбутні рішення.
Запуск tripwire у режимі оновлення бази даних після перевірки цілісності забезпечує швидкий і брудний спосіб точного налаштування Tripwire. Це пояснюється тим, що режим оновлення бази даних дозволяє узгодити будь-які відмінності між базою даних і поточною системою. Це дозволить запобігти відображенню порушень у майбутніх звітах.
Цей процес оновлення економить час, дозволяючи оновлювати базу даних без необхідності її повторно ініціалізувати.
Замініть назвою файлу звіту, яку ви зазначили раніше.
Наведена вище команда також запустить текстовий редактор за замовчуванням (наприклад, vi), який надасть вам так звані «оновлені скриньки для голосування». Можливо, знадобиться прокрутити файл.
Записи, позначені «[x]», означають, що базу даних слід оновити цим конкретним об’єктом.
Видаліть «x» із урни «[ ]», щоб запобігти оновленню бази даних новими значеннями для цього об’єкта.
Використовуйте звичайні натискання клавіш текстового редактора, щоб зберегти та вийти з редактора.
Далі спробуйте використати режим оновлення бази даних у неінтерактивний спосіб. тобто ви погодитеся, що всі записи у файлі звіту будуть прийняті без запиту. Впишіть:
[root@localhostreport]# tripwire --update -Z low -a -r <LATEST_REPORT>
Ви почнете ці вправи, спочатку налаштувавши файл конфігурації. У попередній вправі вам порадили видалити або видалити всі версії відкритого тексту файлу Tripwire із вашої системи. Ви створите трохи безпечнішу установку Tripwire, відредагувавши деякі змінні у файлі конфігурації Tripwire. Ви вкажете, що Tripwire має завжди шукати двійкові версії політики та конфігураційного файлу на знімному носії, такому як дискета або компакт-диск.
Змініть свій pwd на каталог /etc/tripwire.
Згенеруйте версію конфігураційного файлу в відкритому вигляді. Впишіть:
Перевірте своє нове налаштування. Від’єднайте USB-накопичувач і вийміть його.
Спробуйте запустити одну з команд tripwire, для якої потрібні файли, збережені на дисководі. Впишіть:
[root@localhosttripwire]# twadmin --print-polfile### Error: File could not be opened.### Filename: /mnt/usbdrive/tw.pol### No such file or directory###### Unable to print policy file.### Exiting...
Ви повинні отримати помилку, подібну до наведеної вище.
Підключіть носій, де зберігаються ваші файли Tripwire, і повторіть команду вище.
Питання
Команда виконана успішно цього разу?
Знайдіть і видаліть усі звичайні текстові версії конфігураційних файлів Tripwire, які ви створили на даний момент у своїй системі.
Необхідність монтувати та демонтувати знімний носій кожного разу, коли ви хочете адмініструвати аспект tripwire, може бути ускладненням, але винагородою може бути додаткова безпека. Ви точно захочете зберегти незайману версію бази даних tripwire на носії лише для читання, такому як DVD.