2021-04-02 19:13:03 +02:00
[< img src = "https://gitlab.com/uploads/-/system/project/avatar/25600351/logo.png" align = "right" height = "110" / > ][project]
2021-11-30 19:36:04 +01:00
# apparmor.d
2023-01-29 23:13:58 +01:00
[![][workflow]][action] [![][build]][project] [![][quality]][goreportcard]
2021-04-02 19:13:03 +02:00
2021-05-09 16:08:26 +02:00
**Full set of AppArmor profiles**
2021-04-02 19:13:03 +02:00
2023-01-29 23:13:58 +01:00
> **Warning**: This project is still in its early development. Help is very
2023-01-31 22:13:35 +01:00
> welcome; see the [documentation website](https://apparmor.pujol.io/) including
2023-01-29 23:13:58 +01:00
> its [development](https://apparmor.pujol.io/development) section.
2021-05-09 01:50:07 +02:00
2023-01-29 23:13:58 +01:00
## Description
2021-05-09 16:08:26 +02:00
2023-01-31 22:13:35 +01:00
**AppArmor.d** is a set of over 1400 AppArmor profiles whose aim is to confine
most Linux based applications and processes.
2021-05-09 16:08:26 +02:00
2023-01-29 23:13:58 +01:00
**Purpose**
2021-05-09 16:08:26 +02:00
2023-01-29 23:13:58 +01:00
- Confine all root processes such as all `systemd` tools, `bluetooth` , `dbus` ,
2023-01-31 22:13:35 +01:00
`polkit` , `NetworkManager` , `OpenVPN` , `GDM` , `rtkit` , `colord`
2023-01-29 23:13:58 +01:00
- Confine all Desktop environments
- Confine all user services such as `Pipewire` , `Gvfsd` , `dbus` , `xdg` , `xwayland`
- Confine some *"special"* user applications: web browser, file browser...
- Should not break a normal usage of the confined software
2021-05-09 16:08:26 +02:00
2023-01-29 23:13:58 +01:00
**Goals**
2021-05-09 01:50:07 +02:00
2023-01-31 22:13:35 +01:00
- Target both desktops and servers
2023-01-29 23:13:58 +01:00
- Support all distributions that support AppArmor:
2023-02-05 01:22:21 +01:00
* Archlinux
* Ubuntu 22.04
* Debian 11
* OpenSUSE Tumbleweed
2023-01-29 23:13:58 +01:00
- Support all major desktop environments:
* Currently only Gnome
2023-01-31 22:13:35 +01:00
- Fully tested (Work in progress)
2021-04-02 19:13:03 +02:00
2022-09-13 19:14:58 +02:00
2023-01-29 23:13:58 +01:00
> This project is originaly based on the work from [Morfikov][upstream] and aims
> to extend it to more Linux distributions and desktop environements.
2021-04-02 19:13:03 +02:00
2023-01-29 23:13:58 +01:00
## Concepts
2021-04-02 19:13:03 +02:00
2023-01-29 23:13:58 +01:00
*One profile a day keeps the hacker away*
2021-04-02 19:13:03 +02:00
2023-01-29 23:13:58 +01:00
There are over 50000 Linux packages and even more applications. It is simply not
possible to write an AppArmor profile for all of them. Therefore, a question arises:
2022-09-13 19:28:27 +02:00
2023-01-29 23:13:58 +01:00
**What to confine and why?**
2022-02-08 22:13:31 +01:00
2023-01-29 23:13:58 +01:00
We take inspiration from the [Android/ChromeOS Security Model][android_model] and
2023-01-31 22:13:35 +01:00
we apply it to the Linux world. Modern [Linux security distributions][clipos] usually
consider an immutable core base image with a carefully selected set of applications.
2023-01-29 23:13:58 +01:00
Everything else should be sandboxed. Therefore, this project tries to confine all
the *core* applications you will usually find in a Linux system: all systemd services,
xwayland, network, bluetooth, your desktop environment... Non-core user applications
are out of scope as they should be sandboxed using a dedicated tool (minijail,
bubblewrap, toolbox...).
2021-04-02 19:13:03 +02:00
2023-01-31 22:13:35 +01:00
This is fundamentally different from how AppArmor is usually used on Linux servers
2023-01-29 23:13:58 +01:00
as it is common to only confine the applications that face the internet and/or the users.
2021-04-02 19:13:03 +02:00
2023-06-13 18:11:30 +02:00
**Presentation**
- [Building the largest working set of AppArmor profiles ](https://www.youtube.com/watch?v=OzyalrOzxE8 ) *[Linux Security Summit North America (LSS-NA 2023)](https://events.linuxfoundation.org/linux-security-summit-north-america/)* ([Slide](https://lssna2023.sched.com/event/1K7bI/building-the-largest-working-set-of-apparmor-profiles-alexandre-pujol-the-collaboratory-tudublin))
2021-12-05 20:17:53 +01:00
2023-01-29 23:13:58 +01:00
## Installation
2022-10-17 23:43:36 +02:00
2023-01-29 23:13:58 +01:00
Please see [apparmor.pujol.io/install ](https://apparmor.pujol.io/install )
2023-01-28 23:29:33 +01:00
2023-01-29 23:13:58 +01:00
## Configuration
2021-12-05 20:17:53 +01:00
2023-01-29 23:13:58 +01:00
Please see [apparmor.pujol.io/configuration ](https://apparmor.pujol.io/configuration )
2021-12-05 20:17:53 +01:00
2021-08-02 12:54:58 +02:00
## Usage
2023-01-29 23:13:58 +01:00
Please see [apparmor.pujol.io/usage ](https://apparmor.pujol.io/usage )
2021-08-02 12:54:58 +02:00
2021-05-09 01:50:07 +02:00
## Contribution
2023-01-29 23:36:16 +01:00
Feedbacks, contributors, pull requests are all very welcome. Please read
[apparmor.pujol.io/development ](https://apparmor.pujol.io/development )
for more details on the contribution process.
2021-05-09 01:50:07 +02:00
## License
2023-01-29 23:13:58 +01:00
This Project was initially based on Mikhail Morfikov's [apparmor profiles project][upstream]
and thus has the same license (GPL2).
2021-05-09 01:50:07 +02:00
[upstream]: https://gitlab.com/morfikov/apparmemall
[project]: https://gitlab.com/roddhjav/apparmor.d
2023-01-29 23:13:58 +01:00
[build]: https://gitlab.com/roddhjav/apparmor.d/badges/main/pipeline.svg?style=flat-square
2023-01-29 23:36:16 +01:00
[workflow]: https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Froddhjav%2Fapparmor.d%2Fbadge%3Fref%3Dmain& style=flat-square
[action]: https://actions-badge.atrox.dev/roddhjav/apparmor.d/goto?ref=main
2021-11-30 19:36:04 +01:00
[quality]: https://img.shields.io/badge/go%20report-A+-brightgreen.svg?style=flat-square
[goreportcard]: https://goreportcard.com/report/github.com/roddhjav/apparmor.d
2021-05-09 16:08:26 +02:00
[android_model]: https://arxiv.org/pdf/1904.05572
[clipos]: https://clip-os.org/en/
2022-07-03 19:55:21 +02:00
[write xor execute]: https://en.wikipedia.org/wiki/W%5EX