Giter VIP home page Giter VIP logo

apparmor-profiles's Introduction

apparmor-profiles

AppArmor profiles I use for binary or potentially complex/dangerous/exposed apps like browsers, random electron and wine stuff, proprietary things, etc.

Repository URLs:

On the desktop, even confined to user's uid, such apps still get unwanted access to a lot of things in $HOME and can read a lot of poorly-secured files on the system (like /etc/passwd or some non-chmodded config), which is obviously undesirable, and what AppArmor can help to fix.

Some profiles and abstractions are reused from upstreams like ubuntu, suse and various misc other repos, but often found them too lax or bloated for specific system (currently Arch Linux), allowing stuff like @{HOME}/** r, so prefer to use them just for reference, copying only obvious and safe access lines from there, getting (or confirming) the rest from audit logs.

Main doc on rule syntax: https://gitlab.com/apparmor/apparmor/wikis/AppArmor_Core_Policy_Reference

I use apparmor_init script (under "scripts" dir) to load these profiles with some caching and "--override-policy-abi" option to avoid needing boilerplate for it in every file - they are intended to always work together anyway.

Important note

This is more of a "my configuration" repository, and profiles here are mostly written in an ad-hoc fashion for my system, not to be generic fit for any linux (or even app usage scenario) out there.

Plus I'm no security expert, so can - and do - miss some things, only making sure that the most obvious bad things can't happen (or will trigger a warning), not trying to build super-secure system or anything, thinking of it more like basic hygeine than hardening against a dedicated attacker.

Therefore it might be wise to only use these profiles for reference (e.g. to get the general idea where app needs access), and not as a drop-in config.

Some paths in profiles like @{HOME_GIT} and @{SYS_GIT} are specific to my systems (configuration git repos), and can/should be removed or updated to some other local paths.

See also

  • Flatpak, Snap, AppImage, Docker/Podman - one of the goals of these containers is security and isolation too, but usually it's not the primary one, but LSMs like AppArmor/SELinux can be added there too, to help with that.
  • Landlock LSM - relatively new (2021) unprivileged-sandboxing LSM, kinda like AppArmor except you load profile in a wrapper or when starting the app itself, without needing uid=root or any fancy capabilities for it.

apparmor-profiles's People

Contributors

mk-fg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apparmor-profiles's Issues

steam apparmor profile unable to enforce

I use lubuntu 14.04 64Bit and I can not use this profile.

any hints?

thanks

sudo aa-enforce /etc/apparmor.d/usr.bin.steam 
Traceback (most recent call last):
  File "/usr/sbin/aa-enforce", line 30, in <module>
    tool.cmd_enforce()
  File "/usr/lib/python3/dist-packages/apparmor/tools.py", line 139, in cmd_enforce
    apparmor.read_profiles()
  File "/usr/lib/python3/dist-packages/apparmor/aa.py", line 2594, in read_profiles
    read_profile(profile_dir + '/' + file, True)
  File "/usr/lib/python3/dist-packages/apparmor/aa.py", line 2620, in read_profile
    profile_data = parse_profile_data(data, file, 0)
  File "/usr/lib/python3/dist-packages/apparmor/aa.py", line 2961, in parse_profile_data
    load_include(include_name)
  File "/usr/lib/python3/dist-packages/apparmor/aa.py", line 4464, in load_include
    raise AppArmorException("Include file %s not found" % (profile_dir + '/' + incfile) )
apparmor.common.AppArmorException: 'Include file /etc/apparmor.d/abstractions/site/base not found'
$ sudo rm usr.bin.steam 
$ sudo aa-enforce /etc/apparmor.d/*
Profile for /etc/apparmor.d/abstractions not found, skipping
Profile for /etc/apparmor.d/apache2.d not found, skipping
Setting /etc/apparmor.d/bin.ping to enforce mode.
Profile for /etc/apparmor.d/cache not found, skipping
Profile for /etc/apparmor.d/disable not found, skipping
Profile for /etc/apparmor.d/force-complain not found, skipping
Setting /etc/apparmor.d/lightdm-guest-session to enforce mode.
Profile for /etc/apparmor.d/local not found, skipping
Profile for /etc/apparmor.d/program-chunks not found, skipping
Setting /etc/apparmor.d/sbin.dhclient to enforce mode.
Setting /etc/apparmor.d/sbin.klogd to enforce mode.
Setting /etc/apparmor.d/sbin.syslogd to enforce mode.
Setting /etc/apparmor.d/sbin.syslog-ng to enforce mode.
Profile for /etc/apparmor.d/tunables not found, skipping
Setting /etc/apparmor.d/usr.bin.chromium-browser to enforce mode.
Setting /etc/apparmor.d/usr.bin.evince to enforce mode.
Setting /etc/apparmor.d/usr.bin.firefox to enforce mode.
Profile for /etc/apparmor.d/usr.bin.firefox.dpkg-old not found, skipping
Setting /etc/apparmor.d/usr.lib.dovecot.deliver to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.dovecot-auth to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.imap to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.imap-login to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.managesieve-login to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.pop3 to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.pop3-login to enforce mode.
Setting /etc/apparmor.d/usr.sbin.avahi-daemon to enforce mode.
Setting /etc/apparmor.d/usr.sbin.cupsd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.dnsmasq to enforce mode.
Setting /etc/apparmor.d/usr.sbin.dovecot to enforce mode.
Setting /etc/apparmor.d/usr.sbin.identd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.mdnsd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.nmbd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.nscd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.ntpd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.rsyslogd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.smbd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.tcpdump to enforce mode.
Setting /etc/apparmor.d/usr.sbin.traceroute to enforce mode.
$ dpkg -l | grep apparmor
ii  apparmor                              2.8.95~2430-0ubuntu5.2                  amd64        User-space parser utility for AppArmor
ii  apparmor-profiles                     2.8.95~2430-0ubuntu5.2                  all          Profiles for AppArmor Security policies
ii  apparmor-utils                        2.8.95~2430-0ubuntu5.2                  amd64        Utilities for controlling AppArmor
ii  libapparmor-perl                      2.8.95~2430-0ubuntu5.2                  amd64        AppArmor library Perl bindings
ii  libapparmor1:amd64                    2.8.95~2430-0ubuntu5.2                  amd64        changehat AppArmor library
ii  python3-apparmor                      2.8.95~2430-0ubuntu5.2                  amd64        AppArmor Python3 utility library
ii  python3-libapparmor                   2.8.95~2430-0ubuntu5.2                  amd64        AppArmor library Python3 bindings

Usage of steam profile

Your steam profile confines the steam executable located in /usr/bin/steam. I'm using Debian and I'm a bit confused where to look for the actual executable. I tried to name it usr.games.steam, but when I started steam, with aa-status I saw that the profile was in enforce mode, but not the process.

It seems that the actual steam binary is located in ~/.steam/ubuntu12_32/steam. Should I change the profile to match that?

Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.