Auditd-тің негізгі сипаттамасы және архитектурасы
1. Архитектураға шолу.
Linux Audit — Linux ядросына кіріктірілген аудит подсистемасы, ол операциялық жүйенің қауіпсіздігіне қатысты оқиғаларды тіркеуге арналған. Ол пайдаланушылар мен процестердің әрекеттерін, файлдарға қолжетімділікті, жүйелік шақырулардың орындалуын, конфигурацияның өзгеруін, артықшылықтарды қолдануды және басқа да маңызды операцияларды қадағалауға мүмкіндік береді.

Жүйенің орталық компоненті — демон auditd. Ол оқиғаларды Linux ядросынан аудит интерфейсі арқылы қабылдап, оларды өңдеп, әдетте орналасатын журналға сақтайды /var/log/audit/audit.logҚосымша ретінде оқиғалар басқа қосымшаларға немесе жинау мен талдау үшін қашықтағы жүйелерге, мысалы SIEM-ге жіберілуі мүмкін.
Linux Audit-тың негізгі компоненттері:
- Linux ядросының аудит подсистемасы — оқиғаларды қалыптастырады;
auditd— оқиғаларды қабылдайды және оларды журналға жазады;auditctl— аудит параметрлерін және жүктелген ережелерді басқару үшін пайдаланылады;augenrules— каталогтан ережелерді біріктіреді/etc/audit/rules.d/және оларды аудит подсистемасына жүктейді;ausearch— аудит журналдарындағы оқиғаларды іздейді;aureport— жинақталған есептерді құрастырады;- Оқиға диспетчерінің плагиндері — оқиғаларды қосымша өңдеу мен сыртқы жүйелерге жіберуді қамтамасыз етеді.
Оқиғаларды өңдеудің жалпы тәртібі келесідей:
- пайдаланушы, процесс немесе сенімді қосымша операциялық жүйеде әрекет жасайды.
- Linux ядросы жүктелген аудит ережелеріне сәйкес әрекетті тексереді.
- Ереже шарттары орындалған кезде ядро аудит оқиғасын қалыптастырады.
- Оқиғаға орындау контексті қосылады: пайдаланушы мен процестің идентификаторлары, уақыт белгісі, операция нәтижесі және басқа мәліметтер.
- Оқиға ядроның ішкі кезегіне орналастырылады —
backlog. - демон
auditdоқиғаны кезектен алады. - Оқиға аудит журналына жазылады және қажет болған жағдайда қосылған плагиндерге жіберіледі.
1.1. Іске қосу уақытындағы тәуелділіктер.
Жұмыс істеуі үшін auditd келесі компоненттер қажет:
coreutils;initscripts-service— ұсынылады, бірақ міндетті талап емес;- Linux ядросының нұсқасы
5.15немесе одан жоғары; systemd.
Ескерту. Алайда қарастырылып отырған іске асыру
systemdдемонды іске қосу үшін оны қолдануды қарастырады, бірақ басқа да инициализация жүйелері қолданылуы мүмкін. Мысалы, Alpine Linux-та демоны іске қосу үшін init-скрипт пайдаланыладыOpenRC.
1.2. Аудит ережелерін жүктеу.
Аудит ережелері пайдаланушы кеңістігінен ядро аудит подсистемасына келесі құрал арқылы жүктеледі auditctl.
Құрал auditctl мүмкіндік береді:
- ережелерді жасау және жүктеу;
- қолданыстағы ережелерді қарау;
- жеке ережелерді жою;
- ережелер жиынтығын тазарту;
- кезектің өлшемін баптау
backlog; - критикалық қателіктер кезінде жүйенің әрекетін анықтау;
- аудит подсистемасының ағымдағы күйін алу.
Audit 3.x үшін жеке файлдардағы ережелер әдетте біріктіріліп, бағдарламамен жүктеледі augenrulesӘдетте бастапқы файлдар келесі каталогта орналасады:
/etc/audit/rules.d/Пәрмен augenrules кеңейтімі бар файлдарды өңдейді .rules, оларды атаулар бойынша сұрыптау тәртібімен біріктіріп, қорытынды файл жасайды:
/etc/audit/audit.rulesAudit 4.x-тен бастап ережелерді жүктеуді басқару үшін қызмет қарастырылған:
audit-rules.serviceОл арқылы басқарылады systemctl и также использует auditctl ережелерді ядроға жіберу үшін.
Ескерту. Ережелерді жүктеу механизмі, файлдардың орналасуы және қызметтердің атаулары Linux дистрибутивіне және Audit пакеті нұсқасына байланысты әр түрлі болуы мүмкін. Баптауды бастамас бұрын орнатылған жүйенің нақты конфигурациясын тексеру қажет.
1.3. Сенімді қосымшалар арқылы оқиғаларды қалыптастыру.
Барлық аудит оқиғалары тек жүйелік шақырулар ережелерінің іске қосылуынан ғана пайда болмайды. Кейбір сенімді қосымшалар өздері аудит подсистемасына хабарламалар жібереді.
Осындай қосымшаларға, мысалы, компоненттер жатады shadow-utils, жергілікті пайдаланушылар мен топтарды басқару үшін қолданылатын.
Мұндай хабарлама алынған кезде ядро оқиға көздері туралы мәліметтерді, уақыт таңбасын және басқа контексттік ақпаратты қосады, содан кейін оқиғаны демонға жіберу үшін кезекке қояды auditd.
Осылайша, Linux Audit-тың оқиғаларының көздері мыналар болуы мүмкін:
- жүйелік шақырулардың аудит ережелері;
- файлдар мен каталогтарды бақылау ережелері;
- Linux ядросының ішкі жүйелері;
- аутентификация механизмдері;
- сенімді қосымшалар;
- Linux Audit интерфейсін пайдаланатын қызметтер.
2. auditd демонының жұмысының ерекшеліктері.
Баптау кезінде auditd дискілік кеңістіктің толуын, қызметті қорғаудың ерекшеліктерін systemdсондай-ақ демонды іске қосу, тоқтату және қайта іске қосу тәртібінің дұрыстығын ескеру қажет.
space_left_action
admin_space_left_actionsystemd-analyze security auditd.servicesystemctl daemon-reload
systemctl status auditd
auditctl -s
auditctl -lПользователь → systemctl → D-Bus → systemd → auditdauid=4294967295auid=-1RefuseManualStop=yessystemctl stop auditdservice auditd restart
service auditd reload
service auditd rotate
service auditd resume
service auditd state/usr/libexec/initscripts/legacy-actions/auditctl <SIGNAL>find /usr/libexec/initscripts/legacy-actions/ -maxdepth 2 -type f
service auditd status10 - Конфигурация ядра и auditctl
20 - Правила, которые могли бы соответствовать общим правилам,
но для которых требуется другое соответствие (override)
30 - Основные правила
40 - Необязательные правила
50 - Правила, специфичные для сервера
70 - Локальные системные правила
90 - Завершение настройки (immutable)10-base_description.rules
20-exceptions.rules
25-denied.rules
30-base_rules.rules
40-extended_rules.rules
45-containers.rules
50-web-servers.rules
55-databases.rules
60-middleware.rules
65-monitoring.rules
70-devops.rules
75-network-services.rules
80-virtualization.rules
90-custom.rules
99-finalize.rules###############################################################################
# БАЗОВАЯ КОНФИГУРАЦИЯ
###############################################################################
# Удалить все ранее загруженные правила (должно быть ПЕРВОЙ директивой).
-D
# Размер очереди событий ядра.
# Увеличено до 32768: набор включает аудит execve для всех
# атрибутируемых процессов, при всплесках 8192 приводит к сообщениям
# "audit: backlog limit exceeded" и БЕЗВОЗВРАТНОЙ потере событий.
# при включении логирования при загрузке ОС, 8192 не хватало
-b 32768
# Реакция на сбой подсистемы аудита: 1 = сообщение в kernel log.
-f 1
# КРИТИЧНО. Продолжать обработку файла при ошибке в отдельном правиле.
# Без этой директивы auditctl ПРЕКРАЩАЕТ обработку файла на первой ошибке,
# и все последующие правила молча не применяются.
# Ошибку вызывает watch на отсутствующий КАТАЛОГ (watch на отсутствующий файл
# ошибкой не является). В гетерогенном парке такие каталоги неизбежны.
# ОБЯЗАТЕЛЬНОЕ ДОПОЛНЕНИЕ: -i маскирует ошибки, поэтому после установки
# ОБЯЗАТЕЛЬНО выполняется проверка полноты загрузки активных правил.
-i
# Время ожидания при переполнении очереди. По умолчанию задача блокируется,
# что при всплеске может подтормаживать нагруженный сервер.
# Значение 0 = не ждать (события отбрасываются вместо блокировки).
# Включать ТОЛЬКО вместе с мониторингом счётчика lost
# и по результатам пилота.
#--backlog_wait_time 0
# в centos 10 по-умолчанию 60000###############################################################################
# Linux Audit Policy — ИСКЛЮЧЕНИЯ
#
# Назначение : безопасное снижение избыточных служебных событий.
# Размещение : /etc/audit/rules.d/20-exceptions.rules (root:root, 640)
#
# ВАЖНО:
# Исключения допускаются ТОЛЬКО если они не создают слепых зон
# по субъекту или контексту выполнения. Исключения вида
# "-a never,exit -F subj_type=crond_t" или "-F exe=<путь>" ЗАПРЕЩЕНЫ:
# они полностью выключают аудит для целого класса процессов.
#
# EPS: правило снижает объём событий; новых событий не создаёт.
###############################################################################
# Подавление парных служебных записей о конце события.
# Данные не теряются, объём снижается.
-a always,exclude -F msgtype=EOE
# ЗАПРЕЩЕНО исключать msgtype=CWD — теряется рабочий каталог процесса,
# относительные пути становятся неинтерпретируемыми.
# ЗАПРЕЩЕНО исключать msgtype=AVC — теряются срабатывания SELinux.###############################################################################
# Linux Audit Policy — ФИНАЛИЗАЦИЯ
#
# -e 1 — аудит включён, правила изменяемы (требуется для штатной эксплуатации).
# -e 2 — правила неизменяемы до перезагрузки; если этот режим утверждён,
# директива задаётся здесь и применяется ПОСЛЕДНЕЙ.
#
# ВАЖНО: изменение -e 1 на -e 2 меняет эксплуатационный режим и выполняется
# только после проверки совместимости с обновлением и сопровождением системы.
# EPS: не генерирует дополнительный поток событий.
###############################################################################
-e 1augenrules --check
augenrules --load
auditctl -l
auditctl -s-e 2type=<something> msg=audit(1679598373.352:1256072):type=<something>msg=audit(1679598373.352:1256072)1679598373.352:1256072key=valuetype=SYSCALL msg=audit(1679598373.352:1256072):
type=EXECVE msg=audit(1679598373.352:1256072):
type=CWD msg=audit(1679598373.352:1256072):
type=PATH msg=audit(1679598373.352:1256072):
type=PROCTITLE msg=audit(1679598373.352:1256072):audit(1679598373.352:1256072)6. Іздеу және есептер дайындау.
Аудит оқиғаларын қараудың көзделген тәсілі — бағдарламаны пайдалану ausearch.
Күрделі оқиғалардың жазбалары аралас түрінде келуі мүмкін. Утилиталар ausearch, aureport және кітапхана auparse оқиғаның аяқталуына дейін жазбаларды топтастырып, содан кейін оларды ретті түрде ұсынады.
Пайдаланып ausearch оқиғаларды іздеуге болады:
- белгілі бір түрдегі;
- белгілі бір процесс бойынша;
- нақты файл бойынша;
- белгілі бір қолданушы бойынша;
- нақты жүйелік шақыру бойынша;
- ереженің кілті бойынша;
- операция нәтижесі бойынша;
- көрсетілген уақыт аралығына;
Ескерту. Бұл командалардың операциялық жүйеде тікелей орындалатынын ескеру қажет.
Ескерту. Ескерту: бұл командалардың операциялық жүйеде тікелей орындалатынын ескеру қажет.
6.1. ausearch қолданудың мысалдары.
Сәтсіз кірулерді іздеу:
ausearch -m USER_LOGIN --success no -iФайл оқиғаларын іздеу shadow ағымдағы күн үшін:
ausearch --start today -f shadow -iПайдаланушы үшін файлдарды сәтсіз ашу оқиғаларын іздеу loginuid=1000:
ausearch -m PATH --success no --syscall open --loginuid 1000 -iЕреже кілті бойынша оқиғаларды іздеу:
ausearch -k identity_change -iБелгілі бір бағдарламаның орындалу оқиғаларын іздеу:
ausearch -x /usr/bin/passwd -iОқиғаларды ағымдағы күн үшін іздеу:
ausearch --start today -iОқиғаларды берілген уақыт аралығы үшін іздеу:
ausearch --start 08/28/2026 10:00:00 --end 08/28/2026 12:00:00 -iПараметр -i идентификаторлардың, жүйелік шақырулардың және басқа өрістердің сандық мәндерін оқуға ыңғайлы, интерпретацияланған түріне айналдырады.
Машинамен өңдеу үшін -iжоқ бастапқы форматты қолдану ұсынылады.
6.2. aureport көмегімен есептер құру.
Жиынтық ақпарат алу үшін aureportбағдарламасы пайдаланылады. Ол аудит оқиғаларының өрістерін топтастыруға және қосуға мүмкіндік береді.
Ай сайынғы жиынтық есеп:
aureport --start this-month --summaryБүгін қол жетімді болған файлдарға қатысты қысқаша мәлімет:
aureport --start today --file --summaryКілт бойынша топталған жүйелік шақыру оқиғалары:
aureport --start today --key --summaryАғымдағы айдағы барлық аккаунт өзгерістері:
aureport --start this-month --mods -iБарлық аудит журнал файлдары және олардағы уақыт аралықтары туралы есеп:
aureport -t6.3. ausearch пен aureport-ты бірге пайдалану.
Кейде стандартты есеп aureport тым көп дерек қамтиды. Мұндай жағдайда алдымен оқиғаларды ausearchкөмегімен сүзгіден өткізіп, нәтижені кейін aureport-ке беру болады.
Осы үшін ausearch шығуын rawформатында ұсыну қажет.
Пайдаланушы auid=1000үшін қатынаған файлдардың жиынтығы:
ausearch --start today --auid 1000 --raw | aureport --file --summaryРедактор viқатынаған файлдардың жиынтығы:
ausearch --start this-week -x vi --raw | aureport --file --summaryКілтпен байланысты оқиғаларға қатысы бар бағдарламалардың жиынтығы unsuccessful-access:
ausearch --start this-month --key unsuccessful-access --raw |
aureport -x --summary -iПайдаланушылар жүйеге кірген хосттардың жиынтығы:
ausearch --start this-week -m USER_LOGIN --raw |
aureport --host --summary6.4. ausearch шығару форматтары.
Параметр --format нәтижелерді көрсету форматын өзгертуге мүмкіндік береді.
CSV форматында шығару үшін команда қолданылады:
ausearch --start today --format csvОқиғаларды мәтіндік сипаттамаға айналдыру үшін пайдаланылады:
ausearch --start today --format textБұл формат оқиғалардың мәнін сипаттайтын қарапайым сөйлемдер құрайды.
Жаңа типтегі оқиғалар үшін сәйкес мәтіндік сипаттама болмауы мүмкін. Осындай жағдайда дұрыс интерпретация Audit бағдарламалық жасақтамасын жаңартқаннан кейін пайда болуы мүмкін.
7. Өнімділік және мониторинг.
Аудит жүйесі оның күйі мен өнімділігін бағалауға мүмкіндік беретін ақпарат ұсынады.
Ішкі жүйені тексерудің негізгі командасы:
auditctl -sКоманда көрсетеді:
- ішкі жүйенің жұмыс режимі;
- конфигурацияның құлыпталу күйі;
- жоғалған оқиғалар саны;
- ядро кезегінің ағымдағы көлемі;
- кезектің шекті көлемі;
- қателер туындағанда әрекет ету параметрлері.
Шығарылым мысалы:
enabled 1
failure 1
pid 842
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
backlog_wait_time 60000
backlog_wait_time_actual 0
loginuid_immutable 0 unlocked7.1. backlog кезегі.
Кезегі backlog — бұл ядро демонға жіберу күткен жазбаларды ұстап тұратын кезек auditd.
Негізгі көрсеткіштер:
backlog_limit— кезектегі рұқсат етілген ең көп жазбалар саны;backlog— жіберуді күтіп тұрған ағымдағы жазбалар саны;lost— жоғалған жазбалар саны;backlog_wait_time— кезекте орын босауын күту уақыты.
Аудит белсенді қолданылатын жүйе үшін мәнін backlog_limit шамамен 8192 немесе жоғары қою ұсынылады. Нақты мән шынайы жүктеме негізінде анықталуы тиіс.
Ағымдағы мән backlog әдетте аз болуы тиіс. Жоғары белсенділік кезінде кезектің қысқа мерзімді өсуі рұқсат етіледі, бірақ тұрақты түрде backlog_limit -ке жақындау мәселенің белгісі.
Арнайы бақылауды талап ететін өріс lostболып табылады. Қалыпты жағдайда оның мәні нөлге тең болуы керек. Мәннің өсуі оқиғалардың бір бөлігі демонға берілмей, аудит журналына түспегенін білдіреді.
auditdМәселелі

жұмысының мысалы. lost 421 Мәні ядроның 421 audit жазбаларын жоғалтқанын білдіреді auditd — олар толып кетуден dolayı берілмеген/өңделмеген kernel audit backlog. Бұл әрекет операциялық жүйе жүктелген кезде тіркелді. Мәні backlog 0 яғни қазір кезек бос екенін білдіреді. Бірақ жүктеу кезінде оқиғалар саны көбейіп, 421 жазба жоғалған.
7.2. auditd ішкі күйін алу.
Демонның ішкі көрсеткіштерін алу үшін келесі команда қолданылады:
auditctl --signal stateОны орындағаннан кейін демон өзінің күйі туралы ақпаратты мына файлға жазады:
/run/audit/auditd.stateФайлды мына командамен қарауға болады:
cat /run/audit/auditd.stateМазмұнының мысалы:
audit version = 4.0.5
current time = 06/02/25 20:21:31
process priority = -4
writing to logs = yes
current log size = 2423 KiB
max log size = 8192 KiB
logs detected last rotate/shift = 0
space left on partition = yes
Logging partition free space 45565 MiB
space_left setting 75 MiB
admin_space_left setting 50 MiB
logging suspended = no
file system space action performed = no
admin space action performed = no
disk error detected = no
Number of active plugins = 1
current plugin queue depth = 0
max plugin queue depth used = 5
plugin queue size = 2000
plugin queue overflow detected = no
plugin queueing suspended = no
listening for network connections = no
glibc arena (total memory) is: 388 KiB, was: 388 KiB
glibc uordblks (in use memory) is: 92 KiB, was: 90 KiB
glibc fordblks (total free space) is: 295 KiB, was: 297 KiBОсы деректер бойынша бағалауға болады:
- журналға жазу жүргізіліп жатыр ма;
- журналдау уақытша тоқтатылған ба;
- журналдың ағымдағы және максималды көлемі;
- бос орынның болуы;
- орын таусылған жағдайда орындалатын әрекеттер;
- файлдық жүйе қателері бар ма;
- қосылған плагиндер саны;
- плагиндер кезегінің ағымдағы және максималды толуы;
- кезектің артық толуы бар ма;
- процесс жадыны қанша қолданады.
Бастап audit-4.0.5 сіз файл күйін периодтық жаңарту параметрін report_interval арқылы /etc/audit/auditd.confконфигурациялай аласыз. Бұл файлды мониторинг көрсеткіштерін тұрақты жинауға пайдалануға мүмкіндік береді.
7.3. Бақылаудың негізгі көрсеткіштері.
Аудит жүйесін мониторинг жасағанда келесі мәндерге назар аудару қажет:
| Көрсеткіш | Мақсаты | Қалыпты күй |
|---|---|---|
enabled | Аудит жүйесінің жұмыс режимі | 1 немесе 2 |
lost | Жоғалған жазбалар саны | 0 |
backlog | Ядро кезегіндегі ағымдағы жазбалар саны | Айтарлықтай аз backlog_limit |
backlog_limit | Кезектің шекті көлемі | Жүктемеге сәйкес келеді |
writing to logs | Журналға жазу жүргізіле ме | yes |
logging suspended | Жазу уақытша тоқтатылған ба | no |
disk error detected | Жазу қатесі анықталған ба | no |
plugin queue overflow detected | Плагиндер кезегінің толып қалғаны анықталды ма | no |
plugin queueing suspended | Плагиндерге жіберу тоқтатылды ма | no |
Мәні enabled келесі түрде түсіндіріледі:
0— аудит өшірулі;1— аудит қосылған, конфигурацияны өзгертуге болады;2— аудит өзгертілмейтін режимде қосылған; ережелерді өзгерту тек жүйені қайта жүктегеннен кейін мүмкін.
7.4. Негізгі жұмыс қабілетін тексеру.
Негізгі тексеруді келесі командалармен орындауға болады:
systemctl status auditd --no-pager
auditctl -s
auditctl -l
ausearch -m DAEMON_START,DAEMON_END,DAEMON_ABORT,DAEMON_CONFIG -i
df -h /var/log/auditҚосымша түрде журналдың соңғы жазбаларын тексеруге болады:
tail -n 50 /var/log/audit/audit.logТексеру сәтті деп саналады, егер:
- демон
auditdжұмыс істейді; - аудит подсистемаcы қосылған;
- ережелер жүктелген;
- мәні
lostөсіп жатқан жоқ; - кезегі
backlogжақындап жатқан жоқbacklog_limit; - журнал жазбасы тоқтатылмаған;
- дисктік қателіктер жоқ;
- плагиндер кезектері толып кеткен жоқ;
- файл жүйесінде жеткілікті бос орын бар.
8. Қорытынды тексеру сұлбасы
Орнату немесе конфигурацияны өзгерткеннен кейін келесі ретпен тексеру ұсынылады:
- қызметтің күйі
auditd; - ядро аудит подсистемасының күйі;
- жүктелген ережелер тізімі;
- тест оқиға жасау;
- оқиға пайда болуы
/var/log/audit/audit.log; - оқиғаны арқылы іздеу
ausearch; - оқиғалардың жоғалмауы;
- диск кеңістігінің жағдайы;
- ядро кезегінің жағдайы;
- плагиндер кезектерінің жағдайы.
Маңызды. Ережелер тізімі
auditd, фактілер бойынша ядроға жүктелген және қазіргі уақытта қолданылып жатқанын шығару үшін пәрмен арқылы алуға боладыauditctl -l.Жүктелген ережелер тізімі ережелер файлдарының мазмұнынан әртүрлі болуы мүмкін екенін ескеру керек
auditd. Мысалы, жалпылама ережелер жинағында тек белгілі бір операциялық жүйелерге, дистрибутивтерге немесе конфигурацияларға арналған ережелер болуы мүмкін. Қатысты файлдар, каталогтар, жүйелік шақырылулар немесе басқа объектілер нақты жүйеде жоқ болса, мұндай ережелер жүктеу кезінде қате аяқталуы мүмкін.Қате туындағанда жүріс-тұрысты параметр анықтайды
-f(failure mode) ережелердің басында.-f 1пайдаланғанда жеке ережені жүктеу қатесі тіркеледі, бірақ кейінгі ережелер өңделеді. Осылайша, қолдамайтын немесе қолданылмайтын ереже өткізілуі мүмкін, ал қалған дұрыс ережелер жүктеледі.Егер режим
-f 1орнатылмаса және ережелерді жүктеу құралы қате шыққанда өңдеуді тоқтатса, қате ережеден кейін орналасқан ережелер жүктелмей қалуы мүмкін. Сондықтан ережелер жинағын жүктегеннен кейін нақты қолданылған конфигурацияны тексеру ұсыныладыauditctl -lарқылы.
Тестілеу оқиғаcын жасау және іздеу мысалы:
touch /tmp/audit-test-file
auditctl -w /tmp/audit-test-file -p wa -k audit_test
echo test >> /tmp/audit-test-file
ausearch -k audit_test -i
auditctl -W /tmp/audit-test-file -k audit_test
rm /tmp/audit-test-fileКүтілетін нәтиже:
- ереже қосу командасы қатесіз аяқталады;
- файл өзгерісі аудит оқиғасын жасайды;
ausearchоқиға кілтімен табадыaudit_test;- оқиғада пайдаланушы, процесс және өзгертілген файл туралы мәліметтер бар;
- уақытша ереже тексеру аяқталғаннан кейін сәтті жойылады.
Ескерту. Уақытша ереже, арқылы қосылған
auditctl, оның қолмен жойылғанына, жүйені қайта жүктегенге немесе тұрақты ережелер жинағы қайта жүктелгенге дейін әрекет етеді.
Сілтемелер:
GitHub - linux-audit/audit-userspace: Linux audit userspace repository · GitHub