All Projects → linux-audit → Audit Userspace

linux-audit / Audit Userspace

Licence: other
Linux audit userspace repository

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Audit Userspace

Serilog.exceptions
Log exception details and custom properties that are not output in Exception.ToString().
Stars: ✭ 282 (-14.02%)
Mutual labels:  logging
Console
OS X console application.
Stars: ✭ 298 (-9.15%)
Mutual labels:  logging
Longview
Linode Longview Agent
Stars: ✭ 319 (-2.74%)
Mutual labels:  logging
Aiologger
Asynchronous logging for python and asyncio
Stars: ✭ 284 (-13.41%)
Mutual labels:  logging
Log4qt
Log4Qt - Logging for the Qt cross-platform application framework
Stars: ✭ 292 (-10.98%)
Mutual labels:  logging
Daiquiri
Python library to easily setup basic logging functionality
Stars: ✭ 308 (-6.1%)
Mutual labels:  logging
Oklog
A distributed and coördination-free log management system
Stars: ✭ 2,937 (+795.43%)
Mutual labels:  logging
Logrus
Structured, pluggable logging for Go.
Stars: ✭ 19,469 (+5835.67%)
Mutual labels:  logging
Borgert Cms
Borgert is a CMS Open Source created with Laravel Framework 5.6
Stars: ✭ 298 (-9.15%)
Mutual labels:  logging
Analog
PHP logging library that is highly extendable and simple to use.
Stars: ✭ 314 (-4.27%)
Mutual labels:  logging
Skywalking
APM, Application Performance Monitoring System
Stars: ✭ 18,341 (+5491.77%)
Mutual labels:  logging
Vortex
🌀 Discord Moderation Bot
Stars: ✭ 283 (-13.72%)
Mutual labels:  logging
Hangfire.console
Job console extension for Hangfire
Stars: ✭ 309 (-5.79%)
Mutual labels:  logging
Tofu
Functional programming toolbox
Stars: ✭ 281 (-14.33%)
Mutual labels:  logging
Aspnetcore Webapi Course
Professional REST API design with ASP.NET Core 3.1 WebAPI
Stars: ✭ 323 (-1.52%)
Mutual labels:  logging
Opentelemetry Rust
OpenTelemetry API and SDK for Rust
Stars: ✭ 280 (-14.63%)
Mutual labels:  logging
Scribe
The fastest logging library in the world. Built from scratch in Scala and programmatically configurable.
Stars: ✭ 304 (-7.32%)
Mutual labels:  logging
Whylogs
Profile and monitor your ML data pipeline end-to-end
Stars: ✭ 328 (+0%)
Mutual labels:  logging
Tslog
📝 tslog - Expressive TypeScript Logger for Node.js.
Stars: ✭ 321 (-2.13%)
Mutual labels:  logging
Laravel Log Enhancer
Make debugging easier by adding more data to your laravel logs (Laravel 5.6+)
Stars: ✭ 311 (-5.18%)
Mutual labels:  logging

This is some background information about the Linux Auditing Framework.

LICENSE

The audit daemon is released as GPL'd code. The audit daemon's libraries libaudit.* and libauparse.* are released under LGPL so that it may be linked with 3rd party software.

BUILDING

See the README-install File.

USAGE

See the man pages for audit, auditctl, audit.rules, ausearch, and aureport.

DISCUSSION

Original lkml thread(s): https://marc.info/?t=107815888100001&r=1&w=2 https://marc.info/?t=107901570800002&r=1&w=2

There is a linux audit mail list where any question whether kernel design, setup and configuration, or usage can be discussed: http://www.redhat.com/mailman/listinfo/linux-audit

DESIGN INFO (Very old)

The main goals were to provide system call auditing with 1) as low overhead as possible, and 2) without duplicating functionality that is already provided by SELinux (and/or other security infrastructures). This framework will work "stand-alone", but is not designed to provide, e.g., CAPP functionality without another security component in place.

There are two main parts, one that is always on (generic logging in audit.c) and one that you can disable at boot- or run-time (per-system-call auditing in auditsc.c). The patch includes changes to security/selinux/avc.c as an example of how system-call auditing can be integrated with other code that identifies auditable events.

Logging: 1) Uses a netlink socket for communication with user-space. All messages are logged via the netlink socket if a user-space daemon is listening. If not, the messages are logged via printk to the syslog daemon (by default). 2) Messages can be dropped (optionally) based on message rate or memory use (this isn't fully integrated into the selinux/avc.c part of the patch: the avc.c code that currently does this can be eliminated). 3) When some part of the kernel generates part of an audit record, the partial record is sent immediately to user-space, AND the system call "auditable" flag is automatically set for that call -- thereby producing extra information at syscall exit (if syscall auditing is enabled).

System-call auditing: 1) At task-creation time, an audit context is allocated and linked off the task structure. 2) At syscall entry time, if the audit context exists, information is filled in (syscall number, timestamp; but not arguments). 3) During the system call, calls to getname() and path_lookup() are intercepted. These routines are called when the kernel is actually looking up information that will be used to make the decision about whether the syscall will succeed or fail. An effort has been made to avoid copying the information that getname generates, since getname is already making a kernel-private copy of the information. [Note that storing copies of all syscall arguments requires complexity and overhead that arguably isn't needed. With this patch, for example, if chroot("foo") fails because you are not root, "foo" will not appear in the audit record because the kernel determined the syscall cannot proceed before it ever needed to look up "foo". This approach avoids storing user-supplied information that could be misleading or unreliable (e.g., due to a cooperative shared-memory attack) in favor of reporting information actually used by the kernel.] 4) At syscall exit time, if the "auditable" flag has been set (e.g., because SELinux generated an avc record; or some other part of the kernel detected an auditable event), the syscall-part of the audit record is generated, including file names and inode numbers (if available). Some of this information is currently complementary to the information that selinux/avc.c generates (e.g., file names and some inode numbers), but some is less complete (e.g., getname doesn't return a fully-qualified path, and this patch does not add the overhead of determining one). [Note that the complete audit record comes to userspace in pieces, which eliminates the need to store messages for arbitrarily long periods inside the kernel.] 5) At task-exit time, the audit context is destroyed.

At steps 1, 2, and 4, simple filtering can be done (e.g., a database
role uid might have syscall auditing disabled for performance
reasons).  The filtering is simple and could be made more complex.
However, I tried to implement as much filtering as possible without
adding significant overhead (e.g., d_path()).  In general, the audit
framework should rely on some other kernel component (e.g., SELinux)
to make the majority of the decisions about what is and is not
auditable.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].