Стаття написана для журналу
Хостової система виявлення атак OSSEC-HIDS, дозволяє захистити комп'ютери працюють під управлінням різних ОС.
Сьогодні в Unix використовується велика кількість систем захисту (logcheck, tripware, tiger, chkrootkit, rkhunter) використовують різні принципи - контроль цілісності файлів, аналіз журналів, пошук сигнатур і так далі. Окремо кожен з цих продуктів має цілком достатні можливості дозволяють захистити довірену систему, які після установки можуть працювати автономно, лише сповіщаючи адміністратора про що з'явилися проблеми. Але при розгортанні їх на великій кількості систем в мережі, адміністраторові доводиться шукати оптимальний метод розгортання і головне отримання і аналізу звітів.
OSSEC-HIDS () (Open Source Host-based Intrusion Detection System) -хостовая система виявлення атак в якій для визначення атак використовується кілька методів - аналіз журналів систем і сервісів, перевірка цілісності файлів і реєстру Windows, виявлення rootkit, що має функціональність SIM (Security Information Management, Управління інформацією безпеки). Власне OSSEC і з'явився як рішення адаптоване на перевірку великої кількості систем. Перша версія називалася Syscheck була написана Даніелем Сідом (Daniel B.Cid) і оприлюднено в 2004 році. Через деякий час до Syscheck додався Rootcheck, який дозволяв управляти виявленням руткит з централізованої консолі. І, нарешті, в 2005 році вийшов OSSEC в який об'єднав функції Syscheck і Rootcheck. Сьогодні проект підтримують велику кількість сторонніх розробників, які вносять зміни в код, створюють правила, беруть участь в перекладі інтерфейсу. Але основна робота виконується Даніелем. У червні 2008 року права були передані корпорації Third Brigade, Inc., яка взяла на себе зобов'язання продовжити розробку і комерційну підтримку. У травні 2009 права перейшли до Trend Micro, яка також взяла на себе зобов'язання зберегти його безкоштовним і продовжувати розробку по OpenSource ліцензії. В даний час OSSEC-HIDS поширюється по ліцензії GNU GPL v3.
OSSEC складається з трьох компонентів:
- базового програми - встановлюється в Unix системах, забезпечує основну функціональність, тобто сервер для збору та аналізу даних, і агента (для Unix систем);
- агента Windows;
- веб-інтерфейсу - дозволяє переглянути оповіщення в зручному вигляді.
Для збору інформації на віддалених системах використовуються агенти, хоча можлива робота і без агента (наприклад на деяких маршрутизаторах). В даний час агенти реалізовані для Linux, Solaris, * BSD, Mac і Windows 2000 / XP / 2003 / Vista / 2008. Для зв'язку агентів з сервером використовується 1514 UDP порт, підключення проводиться по зашифрованому SSH каналу. Веб-інтерфейс встановлюється на Linux, Solaris, * BSD і Mac. Кількість підтримуваних OSSEC форматів журналів досить великий - Asterisk, Apache, IIS, Postfix, Courier, ProFTPd, Pure-FTPd, PostgreSQL, MySQL Checkpoint, Sonicwall, VMware ESX і багато інших. Отримані дані обробляються на сервері на підставі правил в форматі XML, і в разі виявлення спроб модифікації важливих файлів (аналізуються MD5 і SHA1, права доступу) і реєстру, і інших потенційно небезпечних дій видає сповіщення, а при високому рівні реагує на спробу злому.
Типове правило (в поточній версії їх 896) укладено в теги rule і складається з опису (description), контрольованого параметра і його значення (url, same_source_ip, regex, match), групу (group), дія (action), рівень серйозності (level ) і має свій унікальний номер (id). Наприклад, опис одного з правил з файлу web_rules.xml.
31100% 3Cscript |% 2Fscript | script> | script% 3E | SRC = javascript | IMG% 20 |% 20ONLOAD = | INPUT% 20 | iframe% 20XSS (Cross Site Scripting) attempt.attack,
За допомогою одні правила можуть використовувати умови з інших правил і на їх основі встановлювати свої дії. Наприклад, кілька записів з id 31105 з різних IP-адрес свідчить про розподіленої XSS атаки. У правилах можливе використання регулярних виразів, тому при певних навичках можна описати практично будь-яку ситуацію. Адміністратор може легко вказати на події, які його цікавлять, і отримувати сповіщення через сервіси SMTP, SMS і Syslog, а також налаштувати реакцію заблокувавши віддалений вузол через /etc/host.deny або за допомогою пакетного фільтра - iptables (Linux), ipfilter ( FreeBSD, NetBSD, Solaris). При активації за замовчуванням проводиться блокування всіх віддалених джерел з рівнем небезпеки починаючи від 6. Передбачено виконання і довільних команд користувача, хоча щоб реалізувати таку можливість потрібно вже деякий досвід.
Щоб зменшити ймовірність випадкової блокування своїх ресурсів в разі помилки OSSEC, розробники пропонують готові сценарії, використовуються білі списки і тайм-аут, після якого ресурс буде розблоковано. Висновок може бути направлений в Prelude IDS () (зараз вона позиціонується теж як SIM), оповіщення за замовчуванням зберігаються в текстових файлах, але для цієї мети можна підключити базу даних MySQL.
установка OSSEC
Однією з пріоритетних завдань при розробці OSSEC була і є простота в установці. Дійсно багато відгуки зводяться до одного - OSSEC дуже простий не тільки в інсталяції, але і в роботі. В даний час ведуться роботи над універсальному скриптом, який дозволить ще більше полегшити завдання розгортання системи контролю на комп'ютерах працюють під управлінням різних версій ОС.
Актуальною на момент написання статті була версія 2.1.1, про яку ми і будемо надалі говорити. Вихід наступної версії OSSEC 2.2 очікується найближчим часом, правда точної дати поки невідомо. У статті буде описана установка основного додатки і веб-інтерфейсу на Ubuntu Server 8.04.1 LTS, а також агента працюючого в Windows XP. В інших системах процес практично аналогічний.
На сторінці закачки є три види пакетів, які реалізують компоненти описані вище. З огляду на, що OSSEC є вузловою системою, агент повинен бути встановлений в ідеальному випадку на кожному комп'ютері в мережі. Основний пакет (ossec-hids) реалізує як серверну частину (server), так і клієнтську частину (agent) для Unix, потрібний тип установки необхідно буде вибрати вже процесі. Якщо OSSEC буде використовуватися на єдиною Unix системі в мережі, можна використовувати локальну (local) установку.
Для установки OSSIM знадобиться компілятор.
$ Sudo apt-get install build-essentials
Серед файлів на сторінці закачки є ossec-hids-latest.tar.gz, але він вказував на версію 2.1, хоча вже доступна 2.1.1. Викачуємо файл, перевіряємо контрольну суму, розпаковуємо.
$ Wget -c http://www.ossec.net/files/ossec-hids-2.1.1.tar.gz $ wget -c http://www.ossec.net/files/ossec-hids-2.1.1_checksum .txt $ cat ossec-hids-2.1.1_checksum.txt $ md5sum ossec-hids-2.1.1.tar.gz $ sha1sum ossec-hids-2.1.1.tar.gz $ tar xzvf ossec-hids-2.1.1. tar.gz
Запускаємо інсталяційний скрипт знаходиться всередині архіву.
$ Cd ossec-hids-2.1.1 / $ sudo ./install.sh
Скрипт пропонує вибрати мову установки, в списку є і російська. Вводимо "ru". Далі виводяться дані по системі, перевіряємо і натискаємо Enter. Вибираємо тип установки, ввівши за підказкою - сервер, агент або локальний (російською), вказуємо куди встановити OSSEC (по умолчаніію / var / ossec). Третім пунктом йдуть настройки OSSEC, в яких підтверджується:
- активація повідомлення по електронній пошті - вводимо поштову адресу двічі, вказуємо SMTP сервер;
- запуск сервісу перевірки цілісності;
- запуск сервісу виявлення руткітів;
- активація системи активного реагування - дозволяємо використання пакетного фільтра (блокування з level> = 6), вказуємо "білі" адреси;
- збереження журналів на віддаленому syslog;
Робота скрипта установки OSSIM
Установчий скрипт автоматично заносить в білий список локальну систему і DNS сервера. Рекомендую відразу ж вказати і адреса системи, з якої виробляється дистанційне керування сервером, так як після запуску OSSIM запросто може заблокувати доступ. $ Sudo cat /var/ossec/logs/active-responses.log ... Птн Авг 28 4:24:00 MSD 2009 /var/ossec/active-response/bin/host-deny.sh add - 192.168.1.58 1251419040.1029 40101 Птн Авг 28 4:24:00 MSD 2009 /var/ossec/active-response/bin/firewall-drop.sh add - 192.168.1.58 1251419040.1029 40101
Далі скрипт автоматично заносить в список контрольованих, журнали встановлених сервісів. Надалі файл журналу можна легко додати, відредагувавши параметр localfile в файлі конфігурації /var/ossec/etc/ossec.conf, який і створюється згодом інсталяційний скриптом на основі отриманих відповідей. Далі відбувається компіляція компонентів OSSEC.
В процесі буде створений init скрипт /etc/init.d/ossec, який можна використовувати для запуску сервісу. Як варіант вказати скрипт безпосередньо:
/ Var / ossec / bin / ossec-control start | stop
Про зміну власника говорить і відповідний напис при завантаженні.
Starting OSSEC HIDS v2.1 (by Trend Micro Inc.) ...
Оновлення відбувається аналогічним чином, скрипт виявляє встановлений OSSEC і пропонує оновити установку.
Файл ossec.conf представляє звичайний XML файл, розібратися в його структурі досить просто. Наприклад, каталоги в яких перевіряється цілісність файлів описуються наступним чином:
79200 / etc, / usr / bin, / usr / sbin /etc/hosts.deny
рівні оповіщення
1 // запис в журнал 7 // відправка поштового повідомлення
Установлення відповіді
host-denylocal6600
Сервер вже контролюється, переглянути оповіщення можна в журналі:
$ Sudo tail -f /var/ossec/logs/ossec.log
Додавання агентів
Кожен агент для отримання доступу до сервера повинен вказати свій унікальний ключ. Для створення такого ключа або видалення агента, на сервері використовується менеджер агентів.
$ Sudo / var / ossec / bin / manage_agents **************************************** * OSSEC HIDS v2.1 Agent manager. * * The following options are available: * **************************************** ( A) dd an agent (A). (E) xtract key for an agent (E). (L) ist already added agents (L). (R) emove an agent (R). (Q) uit. Choose your action: A, E, L, R or Q:
Далі натискаємо кнопку відповідну нашого завдання:
A - додати агента; E - отримати ключ для агента; L - переглянути список відомих агентів; R - видалити агента.
Натискаємо "A", вводимо по запиту ім'я агента (від 2 до 32 знаків), IP-адреса системи на якій буде встановлено агент, потім ID агента (скрипт запропонує автоматично наступний номер, по порядку починаючи від 001). Підтверджуємо установки. Тепер вибираємо "E", менеджер виведе список агентів, вказуємо ID агента, ключ якого необхідно отримати.
Choose your action: A, E, L, R or Q: E Available agents: ID: 001, Name: agent1, IP: 192.168.1.58 Provide the ID of the agent to extract the key (or '\ q' to quit) : 001 Agent key information for '001' is: MDAxIG5vb ......... ..2I4ZjNiMWJh
Запускаємо установку ossec-hids-2.1.1, як показано вище (для Unix систем) вибравши варіант "агент", по закінченню установки також запускаємо manage_agents, в якому вибирається імпорт ключа сервера - "I".
При установці агента для Windows, додатково можна активувати сканування журналів IIS і перевірку цілісності. На останньому етапі, в вікні "OSSEC Agent Manager" вводимо IP-адресу сервера і ключ доступу.
Підключення Windows агента і інтерфейс OSSEC Agent Manager
Після підключення до сервера в журналі агента повинна з'явитися відповідний запис. 2009/08/29 9:13:59 ossec-agent: INFO: Trying to connect to server (192.168.1.203:1514). 2009/08/29 9:14:09 ossec-agent (4102): INFO: Connected to the server (192.168.1.203:1514).
Надалі управління роботи агентів проводиться для Unix систем стандартним способом, через init скрипт, в Windows за допомогою графічного "OSSEC Agent Manager". Конфігураційний файл агента також називається ossec.conf і за своєю структурою практично повністю аналогічний ossec.conf сервера, про який говорилося вище.
У версії 2.1 з'явилася можливість віддаленого управління агентами. Для цього, після підключення агента, на сервера створюється єдиний конфігураційний файл /var/ossec/etc/shared/agent.conf в якому описуються настройки для конкретного агента
Або в залежності від ОС.
Потім за допомогою команди agent_control із зазначенням ID агента, файл відправляється на віддалену систему.
$ Sudo / var / ossec / bin / agent_control -i 001
У підкаталозі contrib архіву з вихідними текстами знаходиться ряд скриптів, що дозволяють спростити роботу з OSSIM або розширити його можливості. Наприклад "ossec-batch-manager.pl" призначений для спрощеного підключення агентів. У рядку запуску можна вказати відразу кілька систем:
$ Sudo ./ossec-batch-manager.pl -a --ip 192.168.1.1 -n agent_1 -a --ip 192.168.1.2 -n agent_1
Потім отримуємо ключ і підключаємо агентів.
Всі повідомлення про тривоги будуть зібрані в підкаталозі / var / ossec / logs / alerts в окремому файлі. Наприклад, для 28 серпня 2009 року цю буде /var/ossec/logs/alerts/2009/Aug/ossec-alerts-28.log.
$ Cat /var/ossec/logs/alerts/2009/Aug/ossec-alerts-28.log ** Alert 1251464430.42143: - syslog, sudo 2009 Aug 28 17:00:30 ubuntu -> / var / log / auth.log Rule: 5402 (level 3) -> 'Successful sudo to ROOT executed' Src IP: (none) User: user Aug 28 17:00:28 ubuntu sudo: user: TTY = pts / 1; PWD = / home / user /; USER = root; COMMAND = / bin / ls /var/ossec/logs/alerts/2009/Aug/ossec-alerts-28.log
Скрипт "ossectop.pl" дозволяє побачити список найактивніших тривог за поточний день. Єдиний мінус - для визначення поточної дати використовується код:
my $ datepath = `date" +% Y /% b / ossec-alerts-% d.log "`; my $ LOG = '/ var / ossec / logs / alerts /'. $ Datepath;
При включеній російської локалі скрипт буде шукати файл зовсім в іншому місці:
/var/ossec/logs/alerts/2009/Авг/ossec-alerts-28.log
Виправити можна різними способами. Наприклад, так:
$ Sudo env LC_ALL = POSIX ./ossectop.pl
Скрипт "ossec_report_contrib.pl" дозволяє отримувати відформатовані звіти.
$ Sudo cat ossec-alerts-28.log | ./ossec_report_contrib.pl -s | mail root -s 'OSSEC summary report'
Або через cron:
00 01 * * * (cat ossec-alerts-28.log | ./ossec_report_contrib.pl -s)
І, нарешті, використовуючи набір файлів ossec2mysql. * Дозволяє підключити висновок OSSEC в MySQL. Процес досить простий. Створюємо нову базу даних, і потім таблиці за допомогою шаблону ossec2mysql.sql, копіюємо contrib / ossec2mysql.conf в /etc/ossec2mysql.conf з 0600 правами. Редагуємо файл, вказавши параметри доступу до бази даних.
Установка веб-інтерфейсу
Веб-інтерфейс написаний на PHP. Для його роботи розробники рекомендують Apache з підтримкою PHP (> = 4.1 або> = 5.0) або Lighttpd з FastCGI (php4-cgi, php5-cgi). При їх наявності процес установки досить простий.
$ Wget -c http://www.ossec.net/files/ui/ossec-wui-0.3.tar.gz $ tar xzvf ossec-wui-0.3.tar.gz $ sudo mv ossec-wui-0.3 / var / www / ossec-wui
Далі можна створити потрібні налаштування вручну скориставшись інструкціями на сайті, але простіше запустити інсталяційний скрипт.
$ / Var / www / ossec-wui $ sudo chmod 770 / var / www / ossec-wui / tmp $ sudo chgrp www-data / var / www / ossec-wui / tmp $ sudo ./setup.sh
Скрипт запросить ім'я користувача та пароль для доступу до веб-інтерфейсу (створюється за допомогою htdigest), в результаті його роботи отримаємо файл .htaccess. Робимо обліковий запис, від імені якої працює веб-сервер, членом групи ossim.
$ Sudo vi / etc / group ossec: x: 1001 www-data
Якщо використовується Apache, це все. Для Lighttpd налаштувань трохи більше, всі вони розписані на Wiki проекту. Тепер можна заходити за адресою http: // server / ossec-wui, де будуть доступні останні події, список змінених файлів, дані про агентів.
Веб-інтерфейс OSSEC-WUI
Реалізовано пошук, для кожної події можна переглянути правило, яке активовано подією.
Перегляд правила на Wiki проекту
***
OSSIM дозволяє контролювати системи в мережі, при цьому досить простий в установці і управлінні. При певних навичках можна самостійно конфігурувати правила і змінити настройки для будь-яких умов. За додатковою інформацією звертайтесь до документації проекту, також проект має свою групу Google ().