mirror of
https://gitlab.com/apparmor/apparmor.git
synced 2025-03-04 08:24:42 +01:00
The AppArmor user space development project.
![]() Acked-By: John Johansen (up to r2072) Acked-by: Steve Beattie <sbeattie@ubuntu.com> (including r2088) In detail, the changes are (bzr log from trunk): ------------------------------------------------------------ revno: 2088 committer: Christian Boltz <apparmor@cboltz.de> branch nick: apparmor timestamp: Tue 2013-01-01 20:15:04 +0100 message: speed up aa-decode by using a bash regex matching instead of calling egrep for each line. Acked-by: Steve Beattie <sbeattie@ubuntu.com> (Patch sent 2012-11-01, Acked-by from 2013-01-01) ------------------------------------------------------------ revno: 2072 committer: Christian Boltz <apparmor@cboltz.de> branch nick: apparmor timestamp: Tue 2012-10-16 00:19:49 +0200 message: Fix aa-decode handling of stdin Handling stdin was totally broken (= no output) with the current log format because aa-decode expected name= to be the last entry in the log line. This patch for stdin handling - fixes the pattern to match the current log format (name= is NOT the last part in the log entry) - uses bash replacement to avoid some sed calls (which also means the script now needs an explicit "#!/bin/bash") - prints decoded filenames in double instead of single quotes to be consistent with filenames that were not encoded - also prints lines that do not contain an encoded filename (instead of grepping them away) - replace tr calls by perl's uc() (also for non-stdin mode) - also handle encoded profile names (introduced by Steve) - don't fail if a file or profile name contains a ' In other words: you can pipe your audit.log through aa-decode, and the only difference to the raw audit.log is that filenames are decoded. Acked-By: Steve Beattie <sbeattie@ubuntu.com> ------------------------------------------------------------ revno: 2068 committer: Christian Boltz <apparmor@cboltz.de> branch nick: apparmor timestamp: Mon 2012-09-17 23:55:28 +0200 message: fix error handling in aa-decode Acked-By: Steve Beattie <sbeattie@ubuntu.com> Looks-Good-By: ;-) Seth Arnold <seth.arnold@gmail.com> ------------------------------------------------------------ |
||
---|---|---|
changehat | ||
common | ||
deprecated | ||
documentation | ||
kernel-patches | ||
libraries/libapparmor | ||
parser | ||
profiles | ||
tests | ||
utils | ||
.bzrignore | ||
LICENSE | ||
Makefile | ||
README |
------------ Introduction ------------ AppArmor protects systems from insecure or untrusted processes by running them in restricted confinement, while still allowing processes to share files, exercise privilege and communicate with other processes. AppArmor is a Mandatory Access Control (MAC) mechanism which uses the Linux Security Module (LSM) framework. The confinement's restrictions are mandatory and are not bound to identity, group membership, or object ownership. The protections provided are in addition to the kernel's regular access control mechanisms (including DAC) and can be used to restrict the superuser. The AppArmor kernel module and accompanying user-space tools are available under the GPL license (the exception is the libapparmor library, available under the LGPL license, which allows change_hat(2) and change_profile(2) to be used by non-GPL binaries). For more information, you can read the techdoc.pdf (available after building the parser) and by visiting the http://apparmor.net/ web site. ------------- Source Layout ------------- AppArmor consists of several different parts: changehat/ source for using changehat with Apache, PAM and Tomcat common/ common makefile rules desktop/ empty kernel-patches/ compatibility patches for various kernel versions libraries/ libapparmor source and language bindings parser/ source for parser/loader and corresponding documentation profiles/ configuration files, reference profiles and abstractions tests/ regression and stress testsuites utils/ high-level utilities for working with AppArmor -------------------------------------- Important note on AppArmor kernel code -------------------------------------- While most of the kernel AppArmor code has been accepted in the upstream Linux kernel, a few important pieces were not included. These missing pieces unfortunately are important bits for AppArmor userspace and kernel interaction; therefore we have included compatibility patches in the kernel-patches/ subdirectory, versioned by upstream kernel (2.6.37 patches should apply cleanly to 2.6.38 source). Without these patches applied to the kernel, the AppArmor userspace will not function correctly. ------------------------------------------ Building and Installing AppArmor Userspace ------------------------------------------ To build and install AppArmor userspace on your system, build and install in the following order. libapparmor: $ cd ./libraries/libapparmor $ sh ./autogen.sh $ sh ./configure --prefix=/usr --with-perl # see below $ make $ make check $ make install [optional arguments to libapparmor's configure include --with-python and --with-ruby, to generate python and ruby bindings to libapparmor, respectively.] Utilities: $ cd utils $ make $ make check $ make install parser: $ cd parser $ make $ make check $ make install Apache mod_apparmor: $ cd changehat/mod_apparmor $ make # depends on libapparmor having been built first $ make install PAM AppArmor: $ cd changehat/pam_apparmor $ make # depends on libapparmor having been built first $ make install Profiles: $ cd profiles $ make $ make check # depends on the parser having been built first $ make install [Note that for the parser and the utils, if you only with to build/use some of the locale languages, you can override the default by passing the LANGS arguments to make; e.g. make all install "LANGS=en_US fr".] ------------------- AppArmor Testsuites ------------------- A number of testsuites are in the AppArmor sources. Most have documentation on usage and how to update and add tests. Below is a quick overview of their location and how to run them. Regression tests ---------------- For details on structure and adding tests, see tests/regression/apparmor/README. To run: $ cd tests/regression/apparmor (requires root) $ make $ sudo make tests $ sudo bash open.sh -r # runs and saves the last testcase from open.sh Parser tests ------------ For details on structure and adding tests, see parser/tst/README. To run: $ cd parser/tst $ make $ make tests Libapparmor ----------- For details on structure and adding tests, see libraries/libapparmor/README. $ cd libraries/libapparmor $ make check Profile checks -------------- A basic consistency check to ensure that the parser and aa-logprof parse successfully the current set of shipped profiles. The system or other parser and logprof can be passed in by overriding the PARSER and LOGPROF variables. $ cd profiles $ make && make check Stress Tests ------------ To run AppArmor stress tests: $ make all Use these: $ ./change_hat $ ./child $ ./kill.sh $ ./open $ ./s.sh Or run all at once: $ ./stress.sh Please note that the above will stress the system so much it may end up invoking the OOM killer. To run parser stress tests (requires /usr/bin/ruby): $ ./stress.sh (see stress.sh -h for options) ----------------------------------------------- Building and Installing AppArmor Kernel Patches ----------------------------------------------- TODO