The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Использование OpenBSM для аудита FreeBSD. (freebsd monitoring bsm)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: freebsd, monitoring, bsm,  (найти похожие документы)
From: Alex Samorukov <samm@os2.kiev.ua.> Newsgroups: email Date: Mon, 11 Jun 2007 14:31:37 +0000 (UTC) Subject: Использование OpenBSM для аудита FreeBSD. Несколько слов о OpenBSM. Одна из заявленных новинок в FreeBSD 6.2 - подсистема аудита OpenBSM, пришедшая к нам из проекта TrustedBSD. OpenBSM - это открытая реализация стандарта BSM компании Sun, который описывает множество системных вызовов и интерфейсов, необходимых для управления аудитом системы, а также формат файлов аудита. OpenBSM была расширена по сравнению с Sun BSM для поддержки аудита специфических возможностей FreeBSD и MacOSX. Реализация OpenBSM была изначально выполнена компанией McAfee Research, по заказу Apple в 2004 году (для MacOSX), после чего исходники были переданы в проект TrustedBSD для адаптации в другие BSD системы. Включение OpenBSM Включённая в FreeBSD 6.2 поддержка OpenBSM имеет эксперементальный статус , и как показали тесты - не зря. Если вы хотите использовать OpenBSM я советую обновить вашу ОС до -STABLE, так как версия включённая в 6.2 у меня работала не совсем корректно. Для того, чтобы включить поддержку OpenBSM вам потребуется добавить "options AUDIT" в файл конфигурации ядра, пересобрать его и добавить в файл /etc/rc.conf команду auditd_enable='YES' и перезагрузить ОС с новым ядром. Насколько мне известно, в FreeBSD 7.0 опция AUDIT будет присутствовать в GENERIC ядре, так что компилировать ядро и перезагружаться не потребуется. Конфигурация BSM. В сети существует множество статей по использованию Solaris BSM, которые, вобщем-то, вполне подходят и для FreeBSD. Также достаточно информации содержат соответствующие man файлы и handbook, так что я постараюсь лишь кратко описать принципы конфигурации OpenBSM. Системные события, которые могут использоваться в системе аудита перечислены в файле /etc/security/audit_event. Каждое событие аудита (audit event) может принадлежать классу или нескольким классам аудита (audit class). Это сделано для того, чтобы администратор мог легко работать с большим количеством событий. Соответствие событий и классов также задаётся в файле audit_event. У каждого класса есть свой номер и флаг, которые задаются в файле audit_class. Также определён специальный класс "all", к которому относятся все события аудита и no, пустой класс. По умолчанию в FreeBSD заданы такие классы аудита: 0x00000000:no: invalid class 0x00000001:fr:чтение файлов 0x00000002:fw:запись файлов 0x00000004:fa:доступ к атрибутам файлов 0x00000008:fm:модификация атрибутов 0x00000010:fc:создание файлов 0x00000020:fd:удаление файлов 0x00000040:cl:закрытие файлов 0x00000080:pc:процессы 0x00000100:nt:сетевая активность 0x00000200:ip:взаимодействие процессов (IPC) 0x00000400:na:прочее 0x00000800:ad:административные события 0x00001000:lo:login и logout 0x00004000:ap:приложения (пустой класс) 0x20000000:io:вызовы ioctl 0x40000000:ex:exec, exit и т.п. 0x80000000:ot:разное 0xffffffff:all:все события Для просмотра событий, принадлежащих классу удобно использовать команду вида # egrep '[:,]fa' /etc/security/audit_event Флаги могут использоваться с префиксами +(успешное выполнение), -(сбой) и ^(кроме), а также ^+ (не записывать успешное выполнение) и ^-(кроме сбоев). Так +fr относится к успешным попыткам чтения файла, -lo - ошибка в событиях login/logout, а all,^ex обозначает все события, кроме выполнения программ. Настройки общесистемного аудита находятся в файле audit_control. Ниже приведён файл настроек по умолчанию: dir:/var/audit flags:lo minfree:20 naflags:lo policy:cnt filesz:0 dir:/var/audit задаёт каталог для хранения журналов аудита. flags:lo означает, что мы хотим записывать login/logout события для всех пользователей системы. naflags содержит классы событий, которые мы хотим записывать в случае если событие не может быть отнесено к какому либо пользователю. minfree 20 - в случае, если свободного места на разделе audit`а осталось менее 20%, будет запущен скрипт для уведомления администратора. policy - специальные флаги, определяющие работу системы аудита. Например, cnt определяет, что процесс продолжит выполнение в случае если его события не могут быть записаны. Без этого флага процесс будет остановлен. И, наконец, filesz определяет максимальный размер (в байтах) файла аудита, после достижения которого журнал будет закрыт и открыт с другим именем (rotate). Важный момент - система аудита читает данные файлы при старте, поэтому в случае их изменения необходимо запустить команду 'audit -s', для того, чтобы изменения вступили в силу. Также OpenBSM позволяет настраивать запись событий для выбранных пользователей. Для этого используется файл /etc/security/audit_user. Настройки хранятся в виде: имя_пользователя:классы_событий_для_аудита:классы_исключения Например, строка root:lo:no обозначает что для пользователя root мы используем audit событий logon/logout, и не отключаем никаких дополнительных событий аудита. samm:lo:+fr обозначает, что несмотря на системные политики, мы всегда будем записывать login/logout события для пользователя samm и никогда не будем записывать событие "успешное чтение файлов". Ещё несколько замечаний - в FreeBSD 6.2p5 данный файл обрабатывался некорректно, после обновления до 6-STABLE все заработало согласно документации. Кроме того, стоит учитывать, что файл audit_user используется системой во время входа пользователя, т.е. вы не можете изменять в audit_user политику для уже зарегистрированных в системе пользователей. Просмотр журналов OpenBSM OpenBSM сохраняет свои файлы в двоичном формате, в каталоге указанном в файле audit_control. По умолчанию это /var/audit. Имена файлов соответствуют маске YYYYMMDDHHmmss.YYYYMMDDHHmmss, которые указывают на время начала аудита и время окончания аудита. Активный (открытый auditd) файл аудита имеет окончание not_terminated, например 20070712092624.not_terminated. Запуск команды audit -n принудительно закрывает активный файл журнала и открывает новый. Для просмотра файлов журналов используется утилита praudit. Например: root# praudit /var/audit/20070712092922.not_terminated header,97,10,su(1),0,Thu Jul 12 12:30:58 2007, + 523 msec subject,-1,root,samm,samm,samm,90190,90190,0,0.0.0.0 text,successful authentication return,success,0 trailer,97 Также вы можете просматривать события аудита в реальном времени используя команду praudit /dev/auditpipe. Для того, чтобы предоставить возможность выбора событий для отображения по заданным вами критериям, используется утилита auditreduce. Она позволяет задавать временной диапазон для выводимых событий, задавать классы для вывода, фильтровать по uid/gid, пути файла и т.п. Также, читая статьи о Solaris BSM я наткнулся на утилиту bsmGUI. Для её корректной работы в FreeBSD вам потребуется пропатчить auditreduce, см. PR bin/114534. Тип лицензии утилиты - CDDL, что позволяет использовать её в FreeBSD без каких либо проблем. Замеченные проблемы и особенности работы
  • Утилита auditreduce корректно работает только с полным форматом даты. Патч можно взять в PR bin/114534.
  • если используется XDM, то все события попадают под subject "-1", т.е. система не может определить пользователя-владельца события. Как я понял, требуется модификация XDM для решения данной проблемы.
  • Часть изменений требуют полного рестарта системы, login/logout, равно как и audit -s годится не для всех случаев. Уже запущенные процессы не реагируют на изменеия политики аудита. Заключение и некоторые рекомендации Несомненно, OpenBSM это мощный и полезный инструмент, который может существенно увеличить безопасность вашей системы. Впрочем, стоит и соблюдать осторожность, например, с помощью OpenBSM можно легко создать "замкнутый круг", когда реакция на какое либо событие в реальном времени порождает другое событие для мониторинга, и ваша система будет тратить все процессорное время и место в журнале на подобные записи. Также стоит продумать политику хранения журналов. Многие источники советуют выделить для них отдельный раздел, думаю, что это оправданно. Также нельзя использовать newsyslog(8) для работы с OpenBSM лог файлами. Ну и помните, что в настоящее время подсистема ещё находится в эксперементальном (хоть и вполне работоспособном) состоянии, так что возможны разные неожиданности. Уверен, что разумное использование аудита способно серьёзно повысить безопасность сервера. Как всегда, принимаются любые вопросы и пожелания. Alex Samorukov, samm@os2.kiev.ua

  • << Предыдущая ИНДЕКС Правка src / Печать Следующая >>

    Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, vital (??), 16:24, 12/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    могли бы уж сразу дать линк на хэндбук, а не копировать с него
     
     
  • 2.2, Samm (??), 18:15, 12/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Где Вы увидели копирование хендбука, умник?
     
  • 2.10, keyhell (??), 10:12, 13/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    я рекомендую Handbook.
    в статье нет ничего, кроме надерганных своими словами куском FBH.

    большая масса деталей просто пропущена.

     
     
  • 3.11, Samm (??), 10:29, 13/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Да ну. Скажите, уважаемый, в handbook есть упоминание о bsmgui, например? Или, может быть, в handbook есть инфа о некорректном парсинге audit_user в 6.2RELEASE? Или о том, каким образом воспринимает система аудита изменения политик? Статья никоим образом не отменяет чтение хендбука и манов, даже я бы сказал, что требует их, но основана она отнюдь не на статье из хендбука "своими словами", а на попытки реального применения OpenBSM в FreeBSD. В результате чего родилось как множество замечаний, не отражённых в handbook, так и http://www.freebsd.org/cgi/query-pr.cgi?pr=114534 и несколько патчей к xdm, которые отправятся в виде PR в ближайшее время.
    Ещё, если Вы не против, укажите пожалуйста статьи, которые вы написали.

    P.S. Разбирался я с OpenBSM по большей части используя бумажную версию сановской книги по SunOS и ейной security.

     

  • 1.3, atckoe (?), 19:03, 12/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вы упоминули о вашем сайте а вот ссылку на него не дали, если несложно напишите ссылку.
    Заранее премного благодарен!
     
     
  • 2.4, Samm (??), 19:59, 12/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    бага оказалось внутри auditreduce. Я отписал автору и сейчас делаю pr, я напишу в комментах когда будет готово
     
     
  • 3.6, Samm (??), 22:15, 12/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >бага оказалось внутри auditreduce. Я отписал автору и сейчас делаю pr, я
    >напишу в комментах когда будет готово
    Вот способ пофиксить проблему:
    1) Берём патч:
    --- auditreduce.c       Sat Sep 30 01:41:53 2006
    +++ auditreduce.c.patched       Thu Jul 12 19:23:06 2007
    @@ -629,6 +629,7 @@
                                    usage("d is exclusive with a and b");
                            }
                            SETOPT(opttochk, OPT_a);
    +                       bzero(&tm, sizeof(tm));
                            strptime(optarg, "%Y%m%d%H%M%S", &tm);
                            strftime(timestr, sizeof(timestr), "%Y%m%d%H%M%S",
                                &tm);
    @@ -641,6 +642,7 @@
                                    usage("d is exclusive with a and b");
                            }
                            SETOPT(opttochk, OPT_b);
    +                       bzero(&tm, sizeof(tm));
                            strptime(optarg, "%Y%m%d%H%M%S", &tm);
                            strftime(timestr, sizeof(timestr), "%Y%m%d%H%M%S",
                                &tm);
    @@ -661,6 +663,7 @@
                                OPT_a))
                                    usage("'d' is exclusive with 'a' and 'b'");
                            SETOPT(opttochk, OPT_d);
    +                       bzero(&tm, sizeof(tm));
                            strptime(optarg, "%Y%m%d", &tm);
                            strftime(timestr, sizeof(timestr), "%Y%m%d", &tm);
                            /* fprintf(stderr, "Time converted = %s\n", timestr); */

    2) В дире /usr/src/contrib/openbsm/bin/auditreduce делаем patch < diff.patch
    3)  gcc -o auditreduce auditreduce.c -I ../../ -lbsm
    Заменяем им системный auditreduce и используем bsmgui без каких либо патчей )

     

  • 1.5, stass (??), 21:27, 12/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ещё оно в jail не работает...:-(
     
     
  • 2.7, Samm (??), 22:16, 12/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >Ещё оно в jail не работает...:-(

    Да ну? Вроде должно.

     
     
  • 3.8, stass (??), 22:27, 12/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Должно, но не отлавливает он события в jail.
     
     
  • 4.9, Samm (??), 22:39, 12/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Я только что проверил - отлавливает
     
     
  • 5.12, stass (??), 10:44, 13/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    может пофиксили.
     
     
  • 6.13, Sem (??), 11:48, 17/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Полезная статья. Спасибо.
     
     
  • 7.14, Samm (??), 16:09, 17/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо за отзыв. Кстати, PR закрыли, а  в мыле объявился 1 из разработчиков, которому можно "сливать" странности с OpenBSM.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру