feat(profile): add protonmail-bridge

This commit is contained in:
Alexandre Pujol 2024-06-11 23:16:19 +01:00
parent 6d549b7c70
commit ca9a8d47f8
Failed to generate hash of commit
2 changed files with 109 additions and 58 deletions

View file

@ -2,80 +2,46 @@
# Copyright (C) 2023-2024 Alexandre Pujol <alexandre@pujol.io> # Copyright (C) 2023-2024 Alexandre Pujol <alexandre@pujol.io>
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
# Warning: only the protonmail-bridge CLI and service are supported, NOT the GUI.
abi <abi/3.0>, abi <abi/3.0>,
include <tunables/global> include <tunables/global>
@{exec_path} = @{bin}/protonmail-bridge @{config_dirs} = @{user_config_dirs}/protonmail/bridge-v3
profile protonmail-bridge @{exec_path} { @{cache_dirs} = @{user_cache_dirs}/protonmail/bridge-v3 "@{user_cache_dirs}/Proton AG/Proton Mail Bridge"
include <abstractions/base> @{share_dirs} = @{user_share_dirs}/protonmail/bridge-v3
include <abstractions/nameservice-strict>
network inet dgram, @{exec_path} = @{lib}/protonmail/bridge/bridge-gui
network inet6 dgram, profile protonmail-bridge @{exec_path} {
include <abstractions/base>
include <abstractions/dconf-write>
include <abstractions/desktop>
include <abstractions/graphics>
include <abstractions/nameservice-strict>
include <abstractions/qt5-shader-cache>
# network inet dgram,
# network inet6 dgram,
network inet stream, network inet stream,
network inet6 stream, network inet6 stream,
network netlink raw, # network netlink raw,
@{exec_path} mr, @{exec_path} mr,
@{bin}/pass rCx -> pass, @{lib}/protonmail/bridge/bridge rPx,
@{open_path} rPx -> child-open-strict,
/etc/lsb-release r,
/etc/machine-id r, /etc/machine-id r,
owner /var/tmp/etilqs_@{hex} rw, owner @{config_dirs}/ rw,
owner @{config_dirs}/** rwlk -> @{config_dirs}/**,
owner @{user_password_store_dirs}/docker-credential-helpers/{,**} r, owner @{cache_dirs}/ rw,
owner @{user_password_store_dirs}/protonmail-credentials/{,**} r, owner @{cache_dirs}/** rwlk -> @{cache_dirs}/**,
owner @{user_cache_dirs}/protonmail/{,**} rwk, owner @{share_dirs}/ rw,
owner @{user_config_dirs}/protonmail/{,**} rwk, owner @{share_dirs}/** rwlk -> @{share_dirs}/**,
owner @{user_share_dirs}/protonmail/{,**} rwk,
@{PROC}/sys/net/core/somaxconn r, owner @{PROC}/@{pid}/cmdline r,
@{PROC}/@{pid}/cgroup r,
# Force the use of the Gnome Keyring or Kwallet secret-service.
# Comment these lines and add the commented lines in your local/protonmail-bridge
# to allow the use of pass as secret-service.
# of pass as secret store
# deny @{bin}/pass rmx,
# deny owner @{user_password_store_dirs}/** r,
profile pass {
include <abstractions/base>
include <abstractions/nameservice-strict>
@{bin}/pass mr,
@{sh_path} rix,
@{bin}/base64 rix,
@{bin}/dirname rix,
@{bin}/env rix,
@{bin}/getopt rix,
@{bin}/git rPx -> pass//git,
@{bin}/gpg{,2} rPx -> pass//gpg,
@{bin}/mkdir rix,
@{bin}/rm rix,
@{bin}/rmdir rix,
@{bin}/sed rix,
@{bin}/tail rix,
@{bin}/tree rix,
@{bin}/tty rix,
@{bin}/which rix,
owner @{user_password_store_dirs}/ r,
owner @{user_password_store_dirs}/.gpg-id r,
owner @{user_password_store_dirs}/protonmail-credentials/{,**} rw,
deny owner @{user_password_store_dirs}/**/ r,
/dev/tty rw,
include if exists <local/protonmail-bridge_pass>
}
include if exists <local/protonmail-bridge> include if exists <local/protonmail-bridge>
} }

View file

@ -0,0 +1,85 @@
# apparmor.d - Full set of apparmor profiles
# Copyright (C) 2023-2024 Alexandre Pujol <alexandre@pujol.io>
# SPDX-License-Identifier: GPL-2.0-only
# To force the use of the Gnome Keyring or Kwallet secret-service, add the
# following lines in your local/protonmail-bridge-core file:
# deny @{bin}/pass x,
# deny owner @{user_password_store_dirs}/** r,
abi <abi/3.0>,
include <tunables/global>
@{exec_path} = @{lib}/protonmail/bridge/bridge
profile protonmail-bridge-core @{exec_path} {
include <abstractions/base>
include <abstractions/nameservice-strict>
network inet dgram,
network inet6 dgram,
network inet stream,
network inet6 stream,
network netlink raw,
@{exec_path} mr,
@{bin}/pass rCx -> pass,
/etc/lsb-release r,
/etc/machine-id r,
owner @{user_password_store_dirs}/docker-credential-helpers/{,**} r,
owner @{user_password_store_dirs}/protonmail-credentials/{,**} r,
owner @{user_cache_dirs}/protonmail/{,**} rwk,
owner @{user_config_dirs}/protonmail/{,**} rwk,
owner @{user_share_dirs}/protonmail/{,**} rwk,
owner "@{user_config_dirs}/autostart/Proton Mail Bridge.desktop" rw,
owner @{tmp}/bridge@{int} rw,
owner @{tmp}/user/@{uid}/etilqs_@{hex} rw,
owner /var/tmp/etilqs_@{hex} rw,
@{PROC}/ r,
@{PROC}/sys/net/core/somaxconn r,
@{PROC}/@{pid}/cgroup r,
deny @{bin}/pass x,
deny owner @{user_password_store_dirs}/** r,
profile pass {
include <abstractions/base>
include <abstractions/nameservice-strict>
@{bin}/pass mr,
@{sh_path} rix,
@{bin}/base64 rix,
@{bin}/dirname rix,
@{bin}/env rix,
@{bin}/getopt rix,
@{bin}/git rpx -> pass//git,
@{bin}/gpg{,2} rpx -> pass//gpg,
@{bin}/mkdir rix,
@{bin}/rm rix,
@{bin}/rmdir rix,
@{bin}/sed rix,
@{bin}/tail rix,
@{bin}/tree rix,
@{bin}/tty rix,
@{bin}/which rix,
owner @{user_password_store_dirs}/ r,
owner @{user_password_store_dirs}/.gpg-id r,
owner @{user_password_store_dirs}/protonmail-credentials/{,**} rw,
deny owner @{user_password_store_dirs}/**/ r,
/dev/tty rw,
include if exists <local/protonmail-bridge-core_pass>
}
include if exists <local/protonmail-bridge-core>
}