Debian vollständig absichern

Debian absichern

In diesem Beitrag geht es darum Debian GNU/Linux so gut wie möglich abzusichern, im Grunde sollte dieser Artikel auch auf Debian basierenden Systemen wie Ubuntu, Linux Mint und so weiter anwendbar sein - aber zu 100 Prozent ist dieser Artikel eben auf Debian zugeschnitten. Auf die Idee für diesen Artikel hat mich ein Leser der Linux Bibel gebracht, haben Sie ebenso Fragen oder Ideen zu Software, für Artikel, ich bitte darum - robert.goedl76@gmail.com oder auch im Forum der Linux Bibel haben Sie die Möglichkeit dazu.

Dieser Beitrag wird immer weiter ausgebaut, bei Interesse sehen Sie also immer wieder mal vorbei.

Grundlagen

Jede mögliche Prozedur zum absichern oder auch abhärten bringt nichts wenn das System, die Software nicht aktuell ist, je mehr Software desto mehr anfällig ist das System. Deshalb gilt:

  • Regelmäßig Updates installieren
  • Nur wirklich Software installieren die man auch wirklich braucht

Gerade Debian GNU/Linux ist in Dingen Sicherheit hervorragend, hier kommen während einer Debian-Version keine neuen Funktionen hinzu, es gibt wirklich nur Updates zur Sicherheit, wenn man sich im Gegensatz Ubuntu oder Linux Mint ansieht kommen hier beinahe wöchentlich Updates herein, warum ist dies nicht unter Debian der Fall? Distributionen wie Ubuntu (deren Derivate) beziehen ihre Software zwar von Debian, passen diese jedoch an ihre Gegebenheiten an, deshalb gibt es hier auch viel mehr Fehler und Lücken, bei Linux Mint das wiederum seine Software von Ubuntu bezieht ist dies noch viel schlimmer.

Debian ist deshalb schon von Grund auf sicherer als darauf basierende Systeme weil das System sowie die darauf angepasste Software lange Zeit vor dem Release der stabilen Version getestet und entwickelt wird. Mehr dazu finden Sie in folgendem Artikel.

sudo oder root?

Unter Linux hat der Administrator alle Rechte, er kann wenn er will auch das System mit einem einzigen Befehl komplett unbrauchbar machen. Will ein Angreifer in das System eindringen ist es seine erste Aufgabe administrative Rechte zu erlangen. Die sudo-Geschichte wurde als erstes von den Ubuntu-Entwicklern angenommen, der Nutzer sollte damit einfacher zu administrativen Rechten kommen, weil er 'sudo' beim nächsten Befehl wieder anwenden muss kann er nicht so viel unbedachten Schaden anrichten. Hat es ein Angreifer jedoch geschafft den sudo-Nutzer zu hacken hat er auch das Passwort des Administrators.

Debian geht hier zwei Wege, standardmäßig gibt es den normalen root-Account bei dem er mit dem Befehl su dauerhaft zum Administrator wird (sich aber trotzdem nicht als Administrator am Desktop anmelden kann) und man kann wenn gewünscht 'sudo' nutzen - beides zugleich funktioniert nicht, dies wählt man bei der Installation des Systems. Nutzt man den Standard von Debian müsste ein Angreifer also zusätzlich noch das Passwort des Administrators kennen.

SSH

Hat man den SSH-Server aktiviert (standardmäßig ist dies unter Debian nicht der Fall) sollte man diesen auch absichern, die einfachste Variante und aus sehr wirksam ist es über die Paket-Verwaltung das Paket "fail2ban" zu installieren. Die Software sperrt automatisch den Zugang für die IP-Adresse mit der das Passwort mehrmals falsch angegeben wurde für längere Zeit. Dies ist jedoch nur in Verbindung mit aktiver Firewall möglich ➡

Firewall

Die Firewall ist unter Debian automatisch nicht aktiv, der Grund dafür ist das Debian in der Grund-Installation keine aktiven Dienste nutzt die eine Angriffsfläche aus dem Netz bietet. Installiert man jedoch einen Server jeglicher Art sollte man die Firewall schon davor installieren. Mehr dazu finden Sie auf der Linux Bibel in den Artikeln Iptables, Nftables und GUFW.

Rootkits

Rootkits wurden so gesehen zwar unter und für Linux geschaffen und sind inzwischen hauptsächlich - besser gesagt zu 99% unter Windows beheimatet und die wenigen die unter Linux von Hackern genutzt werden zielen auf Server ab, als Systeme die dauerhaft am oder im Netz sind. Also Webserver, Mail-Server, FTP-Server und so weiter und so fort, dort geht es darum an Informationen von tausenden Nutzern zu kommen und Malware weiter zu verbreiten die wiederum auf Windows abzielt.

Rootkits sind wenn sie einmal installiert sind nur sehr schwer zu erkennen - außer man nutzt die richtige Software, solche die speziell nach bekannten Techniken von Rootkits sucht, eine solche unter Linux ist nun Rkhunter, diese wird ganz einfach über die Paket-Verwaltung durch das Paket 'rkhunter' installiert. Die Software arbeitet automatisch, was jedoch noch fehlt ist eine E-Mail-Adresse an die die Software Berichte schicken kann. Öffnen Sie dazu als Administrator etwa auf dem Terminal die Datei "/etc/rkhunter.conf":

nano /etc/rkhunter.conf

und suchen nun die Zeile:

MAIL-ON-WARNING="user@domain.tld"

Hier ersetzen Sie nun den Eintrag "user@domain.tld" durch Ihre E-Mail-Adresse speichern und schließen die Datei nun mit Strg + o und Strg + x. Einen ersten Test starten Sie nun einfach als Administrator auf dem Terminal mit dem Befehl:

rkhunter --check

Wie kommen Rooktits ins System auch unter Linux? Durch Administratoren die ihr System nicht regelmäßig aktualisieren.

Finger

Finger (über die Paket-Verwaltung durch das Paket "finger" zu installieren) ist zwar eine nette Geschichte für Administratoren in einem abgeschotteten Netzwerk um Informationen über andere Rechner abzufragen aber ein absolutes No Go wenn es um Dinge wie Sicherheit geht. Es verrät zu viele Dinge über Rechner und Nutzer, deshalb wenn nicht wirklich benötigt einfach nicht installieren.

Erweitert

Nun wollen wir einmal annehmen jemand will in Ihr System eindringen, dieses übernehmen, er braucht dazu gewisse Informationen. Wie erhält er solche? Es kommt ganz darauf an auf wen ein Angreifer abzielt, allgemein auf jeden Nutzer im Internet - so wird dieser vermutlich einfach einen Server im Internet infiltrieren und dort eine Malware im HTML-Code einer Webseite hinterlassen oder den Code einfach so verändert das dieser Daten in einer Datei speichert, er kommt darüber entweder direkt über eine Lücke des Systems in das System oder sammelt erst einmal Daten mit denen er etwas anfangen kann.

Hat es der Angreifer direkt auf Sie abgesehen ist alles was dieser benötigt Ihre IP-Adresse, an diese kommt dieser etwa über direkten Kontakt via Messenger, wie schon beschrieben über eine Webseite oder sonstigem Weg, über diese IP-Adresse wird dieser einen Portscan durch führen um mehr über offene Ports und Betriebssystem zu erhalten.

Informationsfluss unterbinden

Ein Angreifer braucht also erst mal vor allem Informationen über Ihr Betriebssystem und eingesetzte Software, eben um zu erfahren wie er in Ihr System eindringen kann um weiteren Schaden anrichten zu können, an Ihre Daten zu kommen.

Das erste was wir hier unternehmen können ist es die Browser-Kennung zu ändern, wenn Sie eine Webseite öffnen besuchen Sie so gesehen einen Webserver auf dem diese gespeichert wurde, der Webserver speichert alle Daten von Ihnen die er über Ihren Webbrowser erhält, zu diesen Informationen gehören Ihre IP-Adresse, der eingesetzte Webbrowser und dessen Version sowie installierte PlugIns (Flash, PDF, Codecs), die Bildschirm-Auflösung, Betriebssystem und dessen Version, wann Sie welche Seiten besucht haben, wie lange sie diese angesehen haben, von welcher Webseite Sie auf diese Seite gekommen sind wenn dies über einen Link geschehen ist, auf welche Links Sie klicken, nach was Sie gesucht haben, aus welchem Land Sie stammen und welcher Stadt, die Zeitzone, ob Sie die Seite schon einmal besucht haben und wann, wie oft, ob und nach was Sie auf der Seite suchen, ...

Mit der Browser-Kennung können wir schon einiges ändern, unter Firefox kann man dies mit entsprechenden PlugIns ändern wie etwa dem User Agent Switcher, Auch über die internen Einstellungen indem Sie im Browser die Adresse 'about:config' eingeben und nach dem Begriff 'general.useragent' suchen lässt sich dies anpassen. Zusätzliche AddOns wie uBlock Origin verhindern nicht nur Werbung sondern auch gewisse Tracker und einige sonstige Spielereien mit denen Daten gesammelt werden, NoScript verhindert das Scripte die auf einer Webseite ausgeführt werden - für manche Webseiten wie etwa Online-Banking sollte man hier Ausnahmen machen da solche Seiten dann überhaupt nicht richtig funktionieren. Surfen Sie mit Tor ist es einem Angreifer so gut wie unmöglich an Ihre Daten zu kommen, hier wird nahezu alles verschleiert.

Die selbe Geschichte beim Mail-Klienten, Thunderbird (wie auch alle anderen Mail-Klients) versenden neben dem eigentlichen Text der E-Mail auch Daten zum Klienten selbst, dessen Version, das Betriebssystem und noch mehr, Angreifer die eine solche E-Mail abfangen könnten solche Daten nutzen um Ihr System anzugreifen. Unter Thunderbird können Sie sich beispielsweise zu einer markierten E-Mail über das Menü "Ansicht / Kopfzeilen / Alle" schon einige Informationen anzeigen lassen, über "Ansicht / Nachrichten-Quelltext" erhalten Sie Zugriff zu jeglicher Information. Mit dem AddOn User Agent Switcher lässt sich auch unter Thunderbird dies ändern.

Sobald ein Angreifer Ihre IP-Adresse hat und Ihr System übernehmen will wird er als erstes einen Portscan durch führen, dies bedeutet er sucht nach offenen Ports die in Ihr Netzwerk / System führen, findet er solche wird er den Router sowie darüber wieder Ihre Rechner übernehmen wollen indem er deren Sicherheitslücken ausnutzt. Leider nehmen Hersteller billiger Router ihre Aufgabe nicht sonderlich ernst und bringen für ihre Hardware selten Firmware-Updates, so bleiben Lücken im Router oft offen und sind das erste Ziel für einen Angreifer, hier hilft wenn man die originale Firmware durch eine freie Alternative wie OpenWRT ersetzt, diese gibt es selbst schon für den Raspberry Pi.

Um Portscans zu unterbinden gibt es unter auf Debian basierenden Systemen erst einmal über die Paket-Verwaltung das Paket "portsentry" zu installieren, ohne weitere Konfiguration speichert die Software nur einen Log-Eintrag in die System-Logs, wir wollen jedoch das die Software Portscans unbrauchbar macht, dazu öffnen wir als Administrator mit einem beliebigen Texteditor die Datei "/etc/portsentry/portsentry.conf". Eine nette Beschreibung der möglichen Optionen finden Sie bereits hier.

Zugriff auf Daten unterbinden

Selbst wenn der Administrator eines Systems das System aktuell hält, die Firewall perfekt anpasst kann Software noch immer Lücken haben die die Hersteller der Software noch nicht kennen oder behoben haben. Unter Windows sieht man dies täglich, Malware, Schadsoftware, Erpressungstrojaner, Bundestrojaner und Co kommen nicht nur durch die Dummheit von Nutzern in das System sondern oftmals auch durch Lücken in Software, man braucht nur die entsprechende Seite etwa im Webbrowser aufzurufen und schon ist das Zeug ohne Zutun des Nutzers im System installiert. Ganz so einfach ist dies unter Linux zwar nicht da hier strikt zwischen Administrator und Nutzer unterschieden wird aber auch Software unter Linux hat Lücken die erst mit der Zeit erkannt und behoben werden, bösartige Hacker könnten solche früher entdecken und dann hat man den Mist.

Ausgeklügelte Malware nutzt vor allem Lücken in massenhaft verwendeter Software die vor allem mit dem Internet in Kontakt kommt, unter Linux wären solche Anwendungen etwa Firefox, Thunderbird, Google Chrome. Software die vermehrt verwendet wird bietet eher die Chance Malware ins System zu bringen als Software die eh schon von wenigen genutzt wird.

Um Solche Geschichten viel mehr zu erschweren bis gar unmöglich zu machen nutzt man im besten Fall Sandboxen, so wird Software bezeichnet mit der man Software in einen Käfig sperrt aus denen sie nicht raus kommen, also etwa in ein Verzeichnis in dem alles was die Software benötig virtuell erstellt wird - aus dem Verzeichnis heraus kommt diese jedoch nicht. Sie hat nur Zugriff auf die Daten die in diesem Verzeichnis liegen, kann nichts ins reale System installieren oder Daten abgreifen die außerhalb dieses Verzeichnisses liegen. Die passende Software unter Linux nennt sich Firejail, einen passenden Beitrag dazu finden Sie bereits hier auf der Linux Bibel.

Apparmor - Anwendungen beschränken

Gerade unter Windows hat man immer wieder die Probleme das eine Anwendung mit einer Sicherheitslücke angegriffen wird und dadurch wieder das System infiziert, theoretisch kann dies auch unter Linux passieren. Flash war so eine Geschichte die so lückenhaft war das man wenn ausgenutzt auch problemlos unter Linux damit Schaden anrichten könnte.

Nun - unter Linux hat man wieder einmal vor gesorgt, Apparmor ist eine Technologie in Dingen Sicherheit mit der man eine Anwendung in ihren Rechten beschränkt, öffnet man beispielsweise mit einer Software die zum abspielen von Musik-Dateien vor gesehen ist eine verseuchte MP3-Datei könnte diese damit das System infizieren. Apparmor greift genau hier ein, eine Software hat auf keine weiteren Dateien Zugriff zu haben als solche die sie wirklich benötigt, also auf diverse Multimedia-Bibliotheken - eben Codecs und auf die Dateien die sie abspielen soll, auf ihre eigenen Dateien zur Konfiguration natürlich noch. Auf etwas anderes braucht diese Software nicht zugreifen können - die Technologie dahinter nennt man Mandatory Access Control.

Apparmor setzt man am besten auf einem frisch installierten System auf, unter Debian 10 Buster ist diese Technologie bereits aktiv, man braucht den Dienst nur noch mit passenden Regeln für die jeweilige Anwendung versorgen. Als erstes sieht man am besten über Synaptic nach ob die beiden Pakete "apparmor apparmor-utils apparmor-notify" installiert sind, wenn nicht einfach über die Paket-Verwaltung installieren. Mit den Paketen "apparmor-profiles apparmor-profiles-extra" installiert man sich gleich einmal passende Regeln um viele Anwendungen und Dienste auf ihre Aufgaben einzuschränken, ein Neustart des Systems und diese sind aktiv.

Nun wollen wir uns Apparmor etwas näher ansehen, alle Befehle werden direkt als Administrator auf dem Terminal ausgeführt, mit:

aa-status

lassen wir uns anzeigen ob der Dienst aktiv ist, lassen wir den Befehl:

aa-notify

nebenher auf dem Terminal laufen bekommen wir angezeigt wenn eine Anwendung gegen ihre Regeln verstoßen möchte. Um Konfigurationen vorzunehmen, also weitere Regeln einzufügen, anzupassen gilt es den Dienst neu zu starten:

systemctl restart apparmor.service 

Die Profile - also die Berechtigungen und Verbote liegen in einfachen Textdateien unter "/etc/apparmor.d/" in Kombination mit dem Namen der Anwendung / des Dienstes, möchte ich nun einfach alle laden, also aktiv schalten würde der Befehl:

aa-enforce /etc/apparmor.d/*

genügen, mit:

aa-enforce Dateiname

ein einzelnes Profil, hier kann man auch mehrere hintereinander von einem Leerzeichen getrennt angeben. Um Profile selbst zu erstellen, etwa für Google Chrome:

aa-genprof /usr/bin/google-chrome-stable

Man gibt also den Befehl "aa-genprof" an und dann den kompletten Pfad zur ausführbaren Datei. Mit:

which befehl

kann man sich den kompletten Pfad anzeigen lassen. Hat man den Befehl gestartet wird man folgende Meldung erhalten:

Connecting to repository.....
Writing updated profile for /usr/bin/google-chrome-stable.
Setting /usr/bin/google-chrome-stable to complain mode.

Please start the application to be profiled in
another window and exercise its functionality now.

Once completed, select the "Scan" button below in
order to scan the system logs for AppArmor events.

For each AppArmor event, you will be given the
opportunity to choose whether the access should be
allowed or denied.

Profiling: /usr/bin/google-chrome-stable

[(S)can system log for SubDomain events] / (F)inish

Man wird also aufgefordert das zu profilierende Programm oder den Dienst zu starten, in diesem Fall eben Google Chrome, ob dies nun am Terminal, über den Schnellstarter (Alt + F2) oder über ein weiteres Terminal geschieht ist dabei komplett egal. Nutzen Sie nun die Software so wie sie diese normal nutzen würden, öffnen Sie Webseiten, laden Sie Dateien herunter, laden Sie beispielsweise keine Datei aus dem Verzeichnis Dokumente hoch wird Chrome später auch keinen Zugriff auf dieses Verzeichnis haben, speichern Sie keine Datei unter Downloads kann Chrome hier später keine Dateien speichern. Alles was Sie während der Generierung des Profiles machen darf die Software später auch, alles was Sie unterlassen wird verboten. Haben Sie alles gemacht was Sie der Software erlauben wollen schließen Sie die Software und drücken im Terminal in dem das Erstellen des Profils gestartet wurde die Taste s.

Apparmor liest nun die Logs aus was Sie mit der Software gemacht haben und stellt Ihnen zwei Fragen ähnlich dieser:

Profile:  /usr/bin/google-chrome-stable
Execute:  /usr/bin/thunderbird
Severity: unknown

[(I)nherit] / (P)rofile / (U)nconfined / (D)eny / Abo(r)t / (F)inish

Hier wird beispielsweise gefragt ob Chrome Thunderbird starten darf weil Sie etwa auf einer Webseite auf eine E-Mail-Adresse geklickt haben, weiters etwa:

Profile:  /usr/bin/google-chrome-stable
Path:     /etc/fonts/conf.avail/20-fix-globaladvance.conf
Mode:     r
Severity: unknown

  1 - #include <abstractions/fonts>
  2 - #include <abstractions/gnome>
  3 - #include <abstractions/kde>
  4 - /etc/fonts/conf.avail/20-fix-globaladvance.conf
 [5 - /etc/fonts/**]
  6 - /home/robert/Downloads/

[(A)llow] / (D)eny / (G)lob / Glob w/(E)xt / (N)ew / Abo(r)t / (F)inish

Hier geht es wieder darum ob Sie es erlauben wollen das die Software auf die beschriebenen Dateien und Verzeichnisse zulassen wollen. Wir sehen uns nun die Bedeutung und Antworten der einzelnen Fragen an:

apparmor

Sie finden in jeder Möglichkeit einen Buchstaben in Klammer:

[(A)llow] / (D)eny / (G)lob / Glob w/(E)xt / (N)ew / Abo(r)t / (F)inish

Drücken Sie den jeweiligen Buchstaben klein geschrieben um zur nächsten Frage zu kommen, stellt Apparmor keine Fragen mehr drücken Sie wieder die Taste s um die Regeln zu speichern, mit f verlassen Sie dann das Erstellen der Regeln.

Mittels:

systemctl restart apparmor.service

starten Sie den Dienst nun neu und die Regeln sind aktiv. Haben Sie etwas vergessen, beispielsweise den Zugriff auf ein bestimmtes Verzeichnis das doch wichtig ist oder Sie eben ein bestimmtes doch nicht mehr erlauben wollen starten Sie den Befehl:

aa-logprof

Ihnen wird gezeigt was verboten oder erlaubt wurde - die selben Fragen zu diesem Programm werden Ihnen wie oben genau dazu noch einmal gestellt.