terça-feira, 29 de março de 2016

Perfil do Apparmor para o leitor de feeds Liferea

Embora eu goste imensamente do leitor de feeds padrão do KDE, o Akregator, e até já tenha publicado aqui um perfil do apparmor para ele, o fato de que ele compartilha as configurações de rede do sistema com o Konqueror cria um problema incontornável quando se quer acessar os feeds através de um proxy como o Tor, Privoxy ou Jondo sem provocar mudanças em outras áreas do sistema, como o download de atualizações ou, até mesmo, a navegação não-privativa através dos navegadores Chromium ou Google Chrome. Assim, decidi adotar o leitor de feeds do GNOME, o Liferea, pois ele permite uma configuração de rede/proxy independente do restante do sistema e funciona (quase) tão bem quanto o Akregator no ambiente KDE.

O Liferea estava funcionando muito bem na sandbox Firejail, mas decidi "apertar" um pouco mais a configuração de segurança criando um perfil do apparmor para o Liferea que compartilho abaixo, sempre lembrando que não garanto que vá funcionar no seu sistema!

Observação: todo o conteúdo deste ponto em diante foi atualizado no dia 11/08/2018. Incluí, no perfil, alguns números com observações em destaque sob fundo amarelo, por exemplo "#2". Lembre-se de deletar essas observações antes de salvar o arquivo do apparmor em que testará este código.

ADVERTÊNCIA: o perfil abaixo está funcionando perfeitamente em meu computador com Debian 9.5 / Kernel: Linux 4.9.0-7-amd64 (x86_64) e Liferea 1.12-rc3 e ambiente desktop LXDE 9, MAS NÃO OFERECO NENHUMA GARANTIA DE QUE VÁ FUNCIONAR EM SEU COMPUTADOR. Caso deseje testar o perfil abaixo, faça-o por sua conta e risco, de preferência, tomando todas as precauções necessárias, inclusive backups de todos os arquivos relevantes.

nome do arquivo: usr.bin.liferea

# Last Modified: Sat Jul 14 17:42:29 2018
#include <tunables/global>

/usr/bin/liferea {
  #include <abstractions/audio>
  #include <abstractions/base>
  #include <abstractions/homedirs> # 1
  #include <abstractions/totem>

  /dev/shm/* rw,
  /etc/fonts/** r,
  /etc/gai.conf r,
  /etc/host.conf r,
  /etc/hosts r,
  /etc/nsswitch.conf r,
  /etc/resolv.conf r,
  /etc/services r,
  /etc/ssl/certs/ca-certificates.crt r,
  /etc/udev/udev.conf r,
  /home/*/.Xauthority r,
  /home/*/.cache/gstreamer-1.0/* rw,
  /home/*/.cache/gtk-3.0/ rw,
  /home/*/.cache/gtk-3.0/** r,
  /home/*/.cache/gtk-3.0/compose/ rw,
  /home/*/.cache/liferea/** rw,
  /home/*/.cache/webkitgtk/ w,
  /home/*/.cache/webkitgtk/* rw,
  /home/*/.config/dconf/user r,
  /home/*/.config/liferea/* rw,
  /home/*/.local/share/gsettings-data-convert r,
  /home/*/.local/share/icons/ r,
  /home/*/.local/share/icons/**/ r,
  /home/*/.local/share/liferea/ r,
  /home/*/.local/share/liferea/* rwk,
  /home/*/.local/share/mime/aliases r,
  /home/*/.local/share/mime/generic-icons r,
  /home/*/.local/share/mime/globs2 r,
  /home/*/.local/share/mime/icons r,
  /home/*/.local/share/mime/magic r,
  /home/*/.local/share/mime/mime.cache r,
  /home/*/.local/share/mime/subclasses r,
  /home/*/.local/share/webkitgtk/localstorage/ r,
  /home/*/.local/share/webkitgtk/localstorage/* rwk,
  /home/alexei/.local/share/liferea/* rw,
  /lib/x86_64-linux-gnu/ld-*.so mr,
  /opt/google/chrome/google-chrome Px,
  /proc/*/fd/ r,
  /proc/*/mounts r,
  /proc/*/status r,
  /run/connman/resolv.conf r,
  /run/user/1000/dconf/user rw,
  /sys/devices/** r,
  /usr/bin/gsettings-data-convert Px,
  /usr/bin/liferea mr,
  /usr/bin/uget-gtk Px, # 2
  /usr/lib/firefox-esr/firefox-esr Px, # 3
  /usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-plugin-scanner rix,
  /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitNetworkProcess Px,
  /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitPluginProcess Px,
  /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitWebProcess Px,
  /usr/share/fontconfig/** r,
  /usr/share/fonts/** r,
  /usr/share/icons/** r,
  /usr/share/javascript/mathjax/fonts/** r,
  /usr/share/liferea/** r,
  /usr/share/poppler/cMap/*/ r,
  /var/cache/fontconfig/* r,
  /var/lib/menu-xdg/applications/mimeinfo.cache r,
  /var/tmp/* rw,
  /{usr/,}lib{,32,64}/** mr,

}

Observações:

#1 Arquivo de abstrações personalizado com autorizações automáticas para certos subdiretórios de /home/ que não oferecem risco de segurança. Sugiro que você experimente criar suas próprias abstrações, usando uma das opções default do apparmor como modelo.
#2 Só é possível fazer downloads no navegador do Liferea usando um gerenciador de downloads. Uso o uget, mas você deve sentir-se livre para usar ou testar outras opções, não esquecendo de autorizá-las neste perfil.
#3 O Firefox-esr é meu navegador default mas, caso vocẽ defina outra opção nas configurações do Liferea, deve lembrar-se de autorizá-lo no perfil do Apparmor.

Nenhum comentário:

Postar um comentário

Este blog odeia spam, por isso o autor se reserva o direito de ler o seu comentário antes de publicá-lo.