Аудит системных событий linux

Аудит системных вызовов в Linux

Конфигурационный файл auditd /etc/audit/auditd.conf. На каждой строке может быть определена не более чем одна директива. Название директы и значение разделяет знак равно. Большинство директив отвечают за настройку логирования и не требуют изменения. Для подробного ознакомления можно почитать man auditd.conf.

Правила аудита

Правила аудита содержатся в файле /etc/audit/audit.rules.
auditctl -l просмотреть список правил и auditctl -D для удаления всех правил

Аудит доступа к файлам

File Report
===============================================
# date time file syscall success exe auid event
===============================================
1. 16.01.2011 22:42:04 /sys/class/video4linux/video0/dev 5 yes /usr/bin/skype -1 23
2. 16.01.2011 22:42:03 /sys/devices/system/cpu 5 yes /usr/bin/skype -1 22
3. 16.01.2011 22:42:04 /sys/class/video4linux/video0/device/modalias 5 yes /usr/bin/skype -1 24
4. 16.01.2011 22:42:04 /sys/class/dmi/id/sys_vendor 5 yes /usr/bin/skype -1 25
5. 16.01.2011 22:42:04 /sys/class/dmi/id/product_name 5 yes /usr/bin/skype -1 26
6. 16.01.2011 22:42:04 /sys/class/dmi/id/product_version 5 yes /usr/bin/skype -1 27
7. 16.01.2011 22:42:04 /sys/class/dmi/id/board_vendor 5 yes /usr/bin/skype -1 28
8. 16.01.2011 22:42:04 /sys/class/dmi/id/board_name 5 yes /usr/bin/skype -1 29
9. 16.01.2011 22:42:04 /sys/class/dmi/id/board_version 5 yes /usr/bin/skype -1 30

Аудит системных вызовов
  • -a list,action и -A list,action добавляет правило action в конец(-A в начало) списка list. О доступных list можно прочитать в man auditctl. actions never не генерирует событие, а always создает событие.
  • -S [Syscall name or number|all] — наблюдаемые вызовы
  • -F [n=v | n!=v | nv | n=v | n&v | n&=v] всевозможные фильтры

Источник

Основы аудита. Настраиваем журналирование важных событий в Linux

Под­систе­ма ауди­та Linux поз­воля­ет на осно­ве пред­варитель­но нас­тро­енных пра­вил отсле­живать зна­чимую информа­цию о безопас­ности опе­раци­онной сис­темы, соз­дает записи жур­нала для даль­нейше­го рас­сле­дова­ния наруше­ний полити­ки. Сегод­ня мы пос­мотрим поб­лиже на этот важ­ный и для хакера, и для адми­на эле­мент сис­темы безопас­ности.

С помощью ауди­та мож­но реали­зовать жур­налиро­вание для сле­дующих событий:

  • дос­туп к объ­ектам фай­ловой сис­темы;
  • вы­пол­нение сис­темных вызовов;
  • за­пуск поль­зователь­ских команд;
  • ло­гины поль­зовате­лей;
  • дей­ствия с учет­ными запися­ми и при­виле­гиями.
Читайте также:  Запуск графической оболочки linux mint

В этой статье я рас­ска­жу, как устро­ена под­систе­ма ауди­та, как ей управлять, а так­же как получить жур­нал ауди­та всех инте­ресу­ющих тебя событий.

Под­систе­ма ауди­та в Linux сос­тоит из двух групп ком­понен­тов: в прос­транс­тве ядра это kauditd, а в поль­зователь­ском — auditd.

В общем виде схе­ма работы под­систе­мы ауди­та выг­лядит сле­дующим обра­зом.

Яд­ро, при­нимая сис­темные вызовы из user space, про­пус­кает их через филь­тры user , task , filesystem , exclude и exit .

  • Филь­тр user исполь­зует­ся для филь­тра­ции (исклю­чения) событий, про­исхо­дящих в поль­зователь­ском прос­транс­тве до отправ­ки в auditd. Прак­тичес­ки никог­да не исполь­зует­ся.
  • Филь­тр task при­меня­ется для сис­темных вызовов fork( ) и clone( ) .
  • Филь­тр filesystem исполь­зует­ся для исклю­чения событий для кон­крет­ной фай­ловой сис­темы.
  • Филь­тр exclude зада­ет исклю­чения для событий.
  • Филь­тр exit про­ходят все сис­темные вызовы. Обыч­но нас­тра­ивают имен­но этот филь­тр.

Че­рез netlink( 7) сооб­щения отправ­ляют­ся из kauditd в auditd. При получе­нии событий, демон auditd записы­вает их в лог (по умол­чанию / var/ log/ audit/ audit. log ).

Нас­тра­ивая филь­тры с помощью ути­литы auditctl, мы можем управлять потоком событий, который хотим получать. С помощью ути­лит ausearch, aureport, aulast удоб­но прос­матри­вать жур­нал ауди­та.

Да­вай теперь уста­новим и нас­тро­им все под­систе­мы ауди­та. Уста­нов­ка край­не прос­та и не вызыва­ет никаких слож­ностей:

Ста­тус работы под­систе­мы ауди­та мож­но получить так:

$ sudo auditctl -s
enabled 1
failure 1
pid 885
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
backlog_wait_time 60000
loginuid_immutable 0 unlocked

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

$ sudo auditctl -m helloaudit
$ sudo ausearch -m USER
—-
type=USER msg=audit(08/31/2021 19:20:11.160:330699) : pid=305708 uid=root auid=andrey ses=5 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg=’text=helloaudit exe=/usr/sbin/auditctl hostname=rhel.ipa.localdomain addr=? terminal=pts/0 res=success’

Нас­трой­ки демона auditd пред­став­лены в фай­ле / etc/ audit/ auditd. conf . Кон­фиг по умол­чанию рабочий и не тре­бует изме­нений, оставля­ем его как есть.

Читайте также:  Imax b6 mini linux

Раз­берем­ся теперь, как управлять филь­тра­ми kauditd. Все нас­трой­ки филь­тров груп­пиру­ются в фай­лы пра­вил. Фор­мат пра­вил ана­логи­чен син­такси­су кон­соль­ной прог­раммы auditctl. Демон auditd заг­ружа­ет эти пра­вила пос­ледова­тель­но при стар­те сис­темы либо вруч­ную по коман­де пользователя.

info

Важ­ный момент: что­бы наши пра­вила при­меня­лись пос­ле перезаг­рузки, необ­ходимо записать их в файл, в каталог / etc/ audit/ rules. d/ .

При­меры пра­вил ты можешь най­ти в катало­ге / usr/ share/ audit/ sample-rules/ . Пра­вила ауди­та быва­ют сле­дующих типов:

  1. Уп­равля­ющие пра­вила нас­тра­ивают сис­тему ауди­та и поведе­ние аген­та. Все воз­можные опции перечис­лены в мане auditctl( 8) .
  2. Пра­вила фай­ловой сис­темы необ­ходимы для наб­людения за фай­лом или катало­гом, дос­туп к которым мы хотим кон­тро­лиро­вать. Фор­мат пра­вила сле­дующий:

Важ­но отме­тить, что пра­вила сис­темных вызовов зна­читель­но вли­яют на про­изво­дитель­ность сис­темы в целом. Ста­рай­ся сок­ратить их количес­тво и объ­еди­няй пра­вила, где это воз­можно.

В качес­тве тре­ниров­ки соз­дадим пра­вило ауди­та для регис­тра­ции изме­нения фай­ла / etc/ passwd .

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Источник

Аудит системных событий в Linux

Jun 6, 2016 12:41 · 389 words · 2 minute read auditd

Чтобы ОС отвечала требованиям безопасности и стабильности нужно неотрывно следить за ее состоянием — этого можно достичь с помощью систем мониторинга и анализа логов.

Но порой все же нельзя обойтись без аудита системных событий — постоянного и подробного протоколирования действий, происходящих в операционной системе. Давайте разберемся!

В интернете доступно множество инструкций по установке, настройке и использованию системы аудита (раз, два и т.д.), поэтому в эту тему углубляться не будем, а рассмотрим конкретный пример.

Возникла необходимость с помощью системного аудита узнать подробности вызова процесса gs (с какими параметрами запускается, какой процесс запускает, как завершается и т.д.) .

Устанавливаем демон auditd и вспомогательные утилиты:

Посмотрим информацию о расположении файлов приложения gs :

whereis gs gs: /usr/bin/gs /usr/bin/X11/gs /usr/share/man/man1/gs.1.gz 

В конфигурационный файл /etc/audit/audit.rules добавим следующее правило:

-a exit,always -F arch=b64 -S all -F path=/usr/bin/gs 

Перезапускаем демон для применения изменений:

Для просмотра журнальных файлов, созданных демоном auditd будем использовать утилиту aureport . Для сокращения вывода будем запрашивать информацию только за определенный период времени (например 10 минут):

aureport -f --start recent File Report =============================================== # date time file syscall success exe auid event =============================================== 1. 05/11/2016 12:13:05 /usr/bin/gs 59 yes /usr/bin/gs -1 3020 

Зная номер события (последнее число в предыдущем выводе команды), можно его проанализировать более детально:

ausearch -a 3020 ---- time->Wed May 11 12:13:05 2016 type=PATH msg=audit(1462957985.049:3020): item=1 name=(null) inode=811245 dev=08:02 mode=0100755 ouid=0 ogid=0 rdev=00:00 type=PATH msg=audit(1462957985.049:3020): item=0 name="/usr/bin/gs" inode=889571 dev=08:02 mode=0100755 ouid=0 ogid=0 rdev=00:00 type=CWD msg=audit(1462957985.049:3020): cwd="/var/www/work-utf" type=EXECVE msg=audit(1462957985.049:3020): argc=17 a0="gs" a1="-q" a2="-dQUIET" a3="-dSAFER" a4="-dBATCH" a5="-dNOPAUSE" a6="-dNOPROMPT" a7="-dMaxBitmap=500000000" a8="-dAlignToPixels=0" a9="-dGridFitTT=2" a10="-sDEVICE=pngalpha" a11="-dTextAlphaBits=4" a12="-dGraphicsAlphaBits=4" a13="-r300x300" a14="-sOutputFile=/tmp/magick-mxX1zRa2-%08d" a15="-f/tmp/magick-NjsmJhEA" a16="-f/tmp/magick-CDT6PCa9" type=SYSCALL msg=audit(1462957985.049:3020): arch=c000003e syscall=59 success=yes exit=0 a0=7fff414c9094 a1=7fc6c1050a88 a2=7fff414d9578 a3=7fc6be0dd240 items=2 ppid=23481 pid=4367 auid=4294967295 uid=33 gid=33 euid=33 suid=33 fsuid=33 egid=33 sgid=33 fsgid=33 tty=(none) ses=4294967295 comm="gs" exe="/usr/bin/gs" key=(null) 

Примечание. Типы системных вызовов можно узнать здесь.

Вывести информацию в человекочитаемой форме можно при помощи опции -i или −−interpret , например:

ausearch -a 3020 -i ---- type=PATH msg=audit(05/11/2016 12:13:05.049:3020) : item=1 name=(null) inode=811245 dev=08:02 mode=file,755 ouid=root ogid=root rdev=00:00 type=PATH msg=audit(05/11/2016 12:13:05.049:3020) : item=0 name=/usr/bin/gs inode=889571 dev=08:02 mode=file,755 ouid=root ogid=root rdev=00:00 type=CWD msg=audit(05/11/2016 12:13:05.049:3020) : cwd=/var/www/work-utf type=EXECVE msg=audit(05/11/2016 12:13:05.049:3020) : argc= a0=gs a1=-q a2=-dQUIET a3=-dSAFER a4=-dBATCH a5=-dNOPAUSE a6=-dNOPROMPT a7=-dMaxBitmap=500000000 a8=-dAlignToPixels=0 a9=-dGridFitTT=2 a10=-sDEVICE=pngalpha a11=-dTextAlphaBits=4 a12=-dGraphicsAlphaBits=4 a13=-r300x300 a14=-sOutputFile=/tmp/magick-mxX1zRa2-%08d a15=-f/tmp/magick-NjsmJhEA a16=-f/tmp/magick-CDT6PCa9 type=SYSCALL msg=audit(05/11/2016 12:13:05.049:3020) : arch=x86_64 syscall=execve success=yes exit=0 a0=7fff414c9094 a1=7fc6c1050a88 a2=7fff414d9578 a3=7fc6be0dd240 items=2 ppid=23481 pid=4367 auid=unset uid=www-data gid=www-data euid=www-data suid=www-data fsuid=www-data egid=www-data sgid=www-data fsgid=www-data tty=(none) ses=4294967295 comm=gs exe=/usr/bin/gs key=(null) 

Read more

© Copyright 2023 Yevhen Lebid

Источник

Оцените статью
Adblock
detector