Debian Linux mit Firejail absichern!

Für Debian Linux gibt es hier im Blog bereits eine extrem interessanten Artikel zum Bau eines Debian basierten InHouse NAS mit verschlüsseltem Software-Raid (https://kmj.at/2018-06-14-inhouse-nas-mit-verschluesseltem-software-raid-teil-1). Teil 2 wird hier bald erscheinen.

Zusätzlich finden sich hier im Blog viele Artikel über den Einsatz von Linux und Open Source bei Unternehmen und Privatpersonen. Stöbern Sie einfach durch das https://kmj.at/inhaltsverzeichnis/ und lesen Sie weitere Artikel. Am besten starten Sie hier https://kmj.at/erfahrungsbericht-nach-vollst%C3%A4ndiger-umstellung-des-betriebes-auf-open-source-software/

Für spezielle Anwendungsfälle gibt es im https://digitalbooks24.com/ Buchshop verschiedene E-Books.

Sollte Ihnen das Blog gefallen, freue ich mich, wenn Sie für das EURAFRI Non-Profit Projekt eine kleine Spende erübrigen können. https://eurafri.com/contactanddonate/

Ein kritischer Punkt in der Absicherung von IT Systemen, insbesondere von Arbeitsplätzen auf denen Benutzer ohne IT Kenntnisse arbeiten, sind sogenannte Zero-Day Exploits (https://de.wikipedia.org/wiki/Exploit) und Software die offen, oder auch versteckt über Webseiten, E-Mail, Messenger und ähnliches an Benutzer übermittelt wird.

Es gibt einige wenige Exploits wo der Benutzer gar nichts machen muss und dieser Schadcode ausgeführt wird. In den meisten Fällen klickt aber der Benutzer in einer durch ein kommerzielles Betriebssystem sehr verbreiteten - Weiter, Weiter, Ja, Ja, OK - Mentalität auf Fragen und führt damit den Schadcode mit seinen Berechtigungen selbst aus. Dabei wurde niemand gehackt, sondern ein Benutzer hat einfach jegliche Sorgfaltspflicht ignoriert und das System und eventuell auch Daten am Server vorsätzlich vernichtet.

Die Aufgabe verantwortungsvolle Administratoren und Benutzer ist es nun die System bestmöglich gegen diese Benutzerfehler abzusichern, ohne die Möglichkeit zu arbeiten zu weit einzuschränken. Generell gilt aber, Sicherheit geht vor technisch unqualifizierten Aussagen und Wünschen der Anwender. Wir haben hier alle Arbeitsplätze auf Debian Linux umgestellt, aber Firejail sollte auch für jedes andere Linux gleich funktionieren.

Bei Debian is Firejail in den offiziellen Packages, d.h. ein

sudo apt-get install firejail

erledigt die Installation in kürzester Zeit.

Nun sollten wir alle Programme, welche Daten im Internet zeigen, bzw. austauschen so absichern, dass kein Zugriff auf interne Ordner und Dateien möglich ist. Nur ein minimaler Zugriff über Download Ordner solle gegeben sein. Zusätzlich sollen gewisse Bereiche nicht ausführbar markiert sein, damit das Programm in der Firejail Sandbox keinen Schaden anrichten kann.

Firejail hat eine riesige Liste an Standardprogrammen, für welche bereits sehr gute Profile mitgeliefert werden. Da es immer wieder lokale Abänderungen gibt, wurde folgende Art der Einrichtung gewählt:

# Einrichtung eines Firejail Config-Ordners im Home Verzeichnis
mkdir ~/.config/firejail/
cd ~/.config/firejail/
# Erstellen eines Benutzer Profiles, welche Standard Einstellungen beinhaltet
touch 0_KMJ_block.profile
# Als erstes geben wir Firefox in eine Firejail Sandbox
touch firefox.profile

Nun setzen wir im Benutzer spezifischen Konfigurationsdatei die gewünschten Einstellungen, die je nach Benutzer unterschiedlich sein können. Ich habe z.B. folgende Einstellungen gesetzt:

Dazu editieren wir: 0_KMJ_block.profile

blacklist /opt
blacklist ~/VirtualBox*
blacklist ~/OwnCloud*
blacklist ~/.Private
blacklist ~/Private
blacklist ~/.thunderbird
blacklist ~/Software
blacklist ~/.mozilla
blacklist ~/.ssh
blacklist ~/.putty
blacklist ~/.xca
blacklist ~/.vnc
blacklist ~/.remmina
blacklist ~/.thinclient*
blacklist ~/.android
blacklist ~/.joplin
blacklist ~/TEMP
blacklist ~/.scribus
blacklist ~/.FBReader

Diese Einstellungen sind aber abhängig von den Ordnern im Benutzer Home Verzeichnis.

Nun wollen wir den Firefox so einschränken, dass ein eventuell angerichteter Schaden möglichst gering ist. Dazu editieren wir: firefox.profile

## firefox Profile
## KMJ (https://kmj.at)
## 20200719
## Version 1.00

## you are able to test with:
## /usr/bin/firejail --profile=~/.config/firejail/firefox.profile  /bin/bash
## or start Firefox with (1 line!, Usinge Firefox ESR here)
## /usr/bin/firejail --profile=~/.config/firejail/firefox.profile  /usr/lib/firefox-esr/firefox-esr %u

###################################################################
## we include package firefox.profile and our standard config
## blacklist a additional folder too
###################################################################

include /etc/firejail/firefox.profile
include ~/.config/firejail/0_KMJ_block.profile
blacklist ~/Bilder*

Neue Konfigurationen sollten immer getestet werden. Dazu startet man firejail mit der bash:

/usr/bin/firejail --profile=~/.config/firejail/firefox.profile  /bin/bash
Reading profile /home/user/.config/firejail/firefox.profile
Reading profile /etc/firejail/firefox.profile
Reading profile /etc/firejail/whitelist-usr-share-common.inc
Reading profile /etc/firejail/firefox-common.profile
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-devel.inc
Reading profile /etc/firejail/disable-exec.inc
Reading profile /etc/firejail/disable-interpreters.inc
Reading profile /etc/firejail/disable-programs.inc
Reading profile /etc/firejail/whitelist-common.inc
Reading profile /etc/firejail/whitelist-var-common.inc
Warning: networking feature is disabled in Firejail configuration file
Reading profile /home/user/.config/firejail/0_KMJ_block.profile
Parent pid 13973, child pid 13974
Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set.
Post-exec seccomp protector enabled
Seccomp list in: !chroot, check list: @default-keep, prelist: unknown,
Child process initialized in 116.44 ms
bash: /usr/share/bash-completion/bash_completion: Datei oder Verzeichnis nicht gefunden
$

Nun ist der Zugriff auf Dateien massiv eingeschränkt. Das Firefox Standard Profil lässt nur den Download Ordner im Home Verzeichnis zu und schützt damit andere Dateien vor einem Befall durch Ransom, Trojaner und Viren. Weiters darf in dieser Sandbox im Download kein Programm ausgeführt werden. Das erhöht den Schutz zusätzlich.

Wenn dementsprechend getestet, dann stellen Sie alle Starter in der Leiste, bzw. am Desktop auf:

/usr/bin/firejail --profile=~/.config/firejail/firefox.profile  /usr/lib/firefox-esr/firefox-esr %u

um. Theoretisch können Sie auch im /usr/local/bin eine Datei firefox-esr (755) mit diesem Inhalt anlegen.

Das funktioniert aber nur, wenn sichergestellt ist, dass /usr/local/bin vor /usr/bin im Path zieht:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Sicherer ist es die Starter zu ändern und zu wissen, wo Firefox in der Sandbox gestartet wird. Andernfalls kann bei Änderung des Path die Firejail Wirkung ohne Warnhinweis verloren gehen.

Nach dem Start von Firefox gehen Sie unter Datei->Öffnen und prüfen im Datei Browser noch einmal, dass alles gesperrt ist. Damit haben wir die Sicherheit beim Browsen im Internet dramatisch erhöht und insbesondere die Gefahr eine Ransom Verschlüsselung des Dateisystems ist nun extrem reduziert.

Nachdem das mit Firefox so gut funktioniert, stellen wir weitere Programme in eine Sandbox. Insbesondere bei der Verwendung von AppImages empfiehlt sich die Verwendung von Firejail.

Deltachat Appimage

Dazu laden wir das AppImage, hier das Deltachat AppImage in ein Verzeichnis im

# Download nach:
/opt/Firejail/deltachat/Software/DeltaChat.AppImage
chown ihrbenutzer:ihregruppe /opt/Firejail/deltachat/Software/DeltaChat.AppImage
chmod 750 /opt/Firejail/deltachat/Software/DeltaChat.AppImage

Danach erstellen wir das Profil:

Hilfe findet man hier:

https://man7.org/linux/man-pages/man5/firejail-profile.5.html

oder in der Shell mit dem

man firejail-profile

Kommando.

Erstellen der Datei: deltachat.profile

## Deltachat Profile
## KMJ (https://kmj.at)
## 20200719
## Version 1.00

## you are able to test with:
## /usr/bin/firejail --profile=~/.config/firejail/deltachat.profile  /bin/bash
## or start with (1Line!)
## /usr/bin/firejail --profile=~/.config/firejail/deltachat.profile  --appimage /opt/Firejail/deltachat/Software/DeltaChat.AppImage

###################################################################
## NOTES:
## you must d/l the appimage to /opt/Firejail/deltachat/Software
###################################################################

noblacklist ${HOME}/.config/DeltaChat
noblacklist ${HOME}/.cache

noblacklist /opt/Firejail/deltachat
blacklist   /opt

## Disable access
include /etc/firejail/disable-common.inc
include /etc/firejail/disable-programs.inc
include /etc/firejail/disable-passwdmgr.inc
include /etc/firejail/disable-devel.inc
include /etc/firejail/disable-exec.inc
include /etc/firejail/disable-interpreters.inc
include /etc/firejail/disable-programs.inc

## Security filters
caps.drop all
netfilter
nodvd
nonewprivs
noroot
protocol unix,inet,inet6
nogroups
shell none

## Filesystem
disable-mnt
private-cache
private-tmp
private-dev
private-etc resolv.conf

private-bin bash,sh,grep,tail,env,gpg,id,readlink,dirname,test,mkdir,ln,sed,cp,rm,getconf

private /opt/Firejail/deltachat

# Blacklist
blacklist /boot
blacklist /mnt
blacklist /media
blacklist /root
blacklist /srv


RIOT.im / Element.io / Matrix.org

Danach mit der bash wieder testen und dann den Starter von Deltachat ändern. Natürlich sollen auch Electrum, Linphone, Midori, Thunderbird, vlc und andere in eine Sandbox.

Da immer mehr Unternehmen und Benutzer auf Element/Riot umsteigen und proprietäre Datensammel-Messenger verbieten will ich hier aber noch zeigen, wie man den von Millionen benutzten, extrem beliebten, sicheren, kostenlosen, Open Source Messenger Riot.im (seit July 2020 jetzt Element.io) in eine Sandbox gibt.

Der Element Matrix Client installiert sich unter /opt/Element. Für unsere Profile benötigen wir noch:

mkdir -p /opt/Firejail/element/.cache
mkdir -p /opt/Firejail/element/.config
mkdir -p /opt/Firejail/element/.local
mkdir -p /opt/Firejail/element/Transfer

Wir reichten es so ein, dass der Messenger nur auf das Transfer Verzeichnis zugreifen darf. Bilder die hochgeladen werden müssen vorher dort hinein kopiert werden. Speichern geht nur in dieses Verzeichnis. Danach weg kopieren, wo auch immer der endgültige Speicherort ist.

HINWEIS: Sollte der Element Matrix Client bereit installiert sein, einfach stoppen und die Verzeichnisse ~/.config/Element* nach /opt/Firejail/element/.config verschieben.

Danach das element.profil anlegen:

## Element Profile
## KMJ (https://kmj.at)
## 20200719
## Version 1.00

## you are able to test with:
## /usr/bin/firejail --profile=~/.config/firejail/element.profile  /bin/bash
## or start with
## /usr/bin/firejail --profile=~/.config/firejail/element.profile  /opt/Element/element-desktop --profile=MultiProfileName
##  --profile=MultiProfileName is optional

###################################################################
## NOTES:
## home is /opt/Firejail/element
###################################################################

noblacklist ${HOME}/.cache/element
noblacklist ${HOME}/.config/element
noblacklist ${HOME}/.local/share/element

noblacklist /opt/Firejail/element
blacklist /opt/Firejail

## Disable access
include /etc/firejail/disable-common.inc
include /etc/firejail/disable-programs.inc
include /etc/firejail/disable-passwdmgr.inc
include /etc/firejail/disable-devel.inc
include /etc/firejail/disable-exec.inc
include /etc/firejail/disable-interpreters.inc
include /etc/firejail/disable-programs.inc

## Security filters
caps.drop all
netfilter
nodvd
nonewprivs
noroot
protocol unix,inet,inet6
nogroups
shell none

## Filesystem
disable-mnt
private-cache
#otherwise we have no icon in taskbar
#private-tmp
private-dev
private-etc resolv.conf,localtime

private-bin bash,sh,grep,tail,env,gpg,id,readlink,dirname,test,mkdir,ln,sed,cp,rm,getconf

private /opt/Firejail/element

# Blacklist
blacklist /boot
blacklist /mnt
blacklist /media
blacklist /root
blacklist /srv

Und auch hier wieder testen, testen, testen und danach erst den Starter ändern.

Dieser Beitrag zeigt, dass es mit sehr geringem Aufwand möglich ist die Sicherheit massiv zu erhöhen. Bei einem Rollout für verschieden Systeme und mehrere Benutzer bietet sich eine Verteilung über NFS oder SMB basierte Home-Verzeichnisse, bzw. eine Verteilung über Owncloud (https://kmj.at/professionelle-zusammenarbeit-einfachstes-handling-und-gesch%C3%BCtzter-austausch-von-dateien-mit-owncloud/) an.

Damit ist es Administratoren möglich die Verwaltung zentral durchzuführen und den Aufwand zu reduzieren.

Natürlich ist mehr Sicherheit im Vorfeld etwas mehr Aufwand und das Warum sollte auch den Benutzern in einer Schulung erklärt werden. Wenn Benutzer das “Warum” verstehen wird mit der sicheren Lösung gerne gearbeitet.

Und ein Befall mit Verschlüsselungs- / Crypto- / Ransom-Software erzeugt einen Aufwand der brutal höher ist.

Sind Sie sicher, dass Sie ein ausgelagertes Backup haben, mit welchen Sie vom Stand 0 Ihre IT wieder herstellen können?

Sie sehen, der geringe Aufwand für mehr Sicherheit steht in keiner Relation zu einem Befall.


Infos & Support

Riot.im Räume:

Ich habe in der Matrix (kostenlos, Open Source) einen Raum eingerichtet in dem ich mich mit Freunden und netten Menschen austausche. Freundliche Menschen mit netten Umgangsformen, deutsch oder englisch sprechend, sind dort gerne willkommen.

  • Public room KMJ & friends (EN/DE) in der Matrix: #kmj:matrix.ctseuro.com
  • Eintreten durch Eingabe von /join #kmj:matrix.ctseuro.com in Ihrem Element Matrix Client (Riot).

Element.io / Riot.IM Info

INFO Im July 2020 wurde Riot.im in Element https://element.io/ umbenannt. Es handelt sich um eine reine Namensänderung bei gleichbleibenden Funktionen des Matrix Clients.

Anleitung:

https://kmj.at/riot-im-messenger-kurzanleitung-fuer-benutze-updated/

Profi Support

  • Professionelle Hilfe bei Open-Source Lösungen bietet seit 1985 die CTS GMBH https://cts-solutions.at (professionelle IT Lösungen seit 1985!)