Wie könnt ihr eure Linux Workstations absichern?
Zielgruppe
Dieses Dokument richtet sich an Sysadmin-Teams, die Linux-Workstations verwenden, um in ihrem Projekt auf IT-Infrastruktur zuzugreifen und diese zu verwalten.
Ihr könnt diese Richtlinien verwenden, um sicherzustellen, dass eure Arbeitsplätze grundlegenden Sicherheitsanforderungen entsprechen, die das Risiko, ein Angriffsvektor gegen die gesamte IT-Infrastruktur zu sein, reduzieren.
Einschränkungen
Dies ist kein umfassendes Dokument zum Härten von Workstations, sondern der Versuch, mit einer Reihe von Empfehlungen die krassesten Sicherheitsfehler zu vermeiden, ohne zu viele Unannehmlichkeiten einzuführen. Manche werden dieses Dokument lesen und denken, wir sind paranoid; während wir für andere kaum an der Oberfläche kratzen. Diese Richtlinien sollen lediglich eine Reihe grundlegender Fehler vermeiden helfen, ohne ein Ersatz für Erfahrung, Wachsamkeit und gesunden Menschenverstand zu sein.
Wir teilen dieses Dokument, um die Vorteile von Open-Source auf die Dokumentation von IT-Richtlinien zu übertragen. Gerne könnt ihr dieses Dokument für eure Organisation kopieren und uns eure Verbesserungen mitteilen.
1. Die Wahl der richtigen Hardware
SecureBoot
Obwohl umstritten, beugt SecureBoot gut gegen viele Angriffe auf Workstations vor, wie z.B. gegen Rootkits, Evil Maid und andere Bootkits etc. Es wird keinen hinreichenden Schutz vor versierten Angreifern und staatlichen Sicherheitsbehörden bieten, es ist jedoch besser als gar nichts.
Alternativ könnt ihr auch Anti Evil Maid einrichten, das einen besseren Schutz gegen diese Art von Angriffen bietet. Es erfordert jedoch einen höheren Aufwand bei der Einrichtung und Pflege.
Firewire, Thunderbolt und ExpressCard-Ports
Firewire ist ein Standard, der vom Design her in jeder Verbindungseinrichtung direkten Speicherzugriff (DMA) auf Ihr System ermöglicht.
Für Thunderbolt und ExpressCard gilt das Gleiche, obwohl einige spätere Implementierungen von Thunderbolt den Versuch unternehmen, den Umfang des Speicherzugriffs zu begrenzen. Am besten ist es, wenn die Hardware keine dieser Ports bereitstellt, alternativ können diese jedoch üblicherweise via UEFI deaktiviert oder im Kernel selbst ausgeschaltet werden.
Trusted Platform Module (TPM)-Chip
Das Trusted Platform Module (TPM) ist ein Kryptochip, der mit dem Motherboard verbunden, jedoch getrennt vom Core-Prozessor ist. Er soll für zusätzliche Sicherheit dienen (wie die Speicherung der Schlüssel für die Festplattenverschlüsselung). Sofern kein besonderer Bedarf besteht, ist der Chip wünschenswert, jedoch nicht unbedingt erforderlich, um die Sicherheit einer Workstation zu erhöhen.
2. Vor dem Booten
UEFI und SecureBoot
UEFI bietet eine Menge Vorteile, die ein älterer BIOS nicht bietet. Die meisten modernen Systeme haben einen aktivierten UEFI-Modus.
Stellt sicher, dass ein starkes Passwort verwendet wird, um den UEFI- Konfigurationsmodus aufzurufen. Beachtet, dass manche Hersteller stillschweigend die Länge des Passworts begrenzen, sodass ihr gezwungen sein könntet, kürzere Passwörter mit hoher Entropie zu verwenden (s.u. für weitere Informationen über Passphrasen).
Je nach verwendeter Linux-Distribution ist es unterschiedlich aufwändig, in die Distribution einen SecureBoot-Schlüssel zu importieren, der dann erst das Booten der Distribution erlaubt. Viele Distributionen sind eine Partnerschaft mit Microsoft eingegangen, um ihre Kernel mit einem Schlüssel zu signieren, der von den meisten Systemherstellern erkannt wird. Dies erspart euch dann die Mühe, sich selbst mit dem Schlüsselimport zu beschäftigen.
Als zusätzliche Maßnahme kann ein Passwort für den Zugriff auf die Boot-Partition vergeben werden. Dieses Passwort sollte sich von Ihrem UEFI-Management- Passwort unterscheiden, um shoulder-surfing zu verhindern. Wenn ihr eure Workstation häufiger bootet, könnt ihr auch eine LUKS-Passphrase wählen, die zusätzliche Eingaben überflüssig macht.
3. Wahl der Distribution
Vermutlich werdet ihr bei einer der weit verbreiteten Distributionen wie Fedora Ubuntu, Arch, Debian, oder einer ihrer Ableger landen. In jedem Fall solltet ihr das Folgende beachten, bevor ihr euch für eine Distribution entscheidet.
SELinux, AppArmor und grsecurity/PaX
Mandatory Access Control (MAC) oder Role Based Access Controls (RBAC) sind Erweiterungen des grundlegenden Benutzer-Gruppen-Sicherheitsmechanismus von POSIX-Systemen. Die meisten aktuellen Distributionen kommen entweder bereits mit einer MAC/RBAC-Implementierung (Fedora, Ubuntu) oder stellen einen anderen Mechanismus bereit, um sie in einem späteren Schritt hinzufügen zu können (Gentoo, Arch, Debian).
Von Distributionen, die keine MAC/RBAC-Mechanismen vorsehen, wird dringend abgeraten, da die übliche POSIX-Benutzer- und Gruppenbasierten Sicherheitsmechanismen heutzutage nicht mehr ausreichend sind. Wenn ihr mit MAC/RBAC beginnen möchtet, so sind AppArmor und grsecurity/PaX in der Regel leichter zu erlernen als SELinux. Zudem dürfte auf einer Workstation mit keinen oder wenigen auf öffentlichen Ports lauschenden Daemons die Ausführung von Benutzer- Anwendungen das höchste Risiko darstellen und damit grsecurity/PaX mehr Sicherheit bieten als SELinux.
Sicherheitsmitteilungen der Distribution
Die meisten der weit verbreiteten Distributionen teilen ihren Nutzern zuverlässig sicherheitsrelevante Informationen mit. Bei etwas exotischeren Installationen sollte jedoch überprüft werden, ob die Distribution hierfür eine zuverlässige Alarmierung der Benutzer über Sicherheitslücken und Patches umgesetzt hat. Fehlt ein solcher Mechanismus, ist das ein wichtiges Warnsignal, dass die Distribution noch nicht ausgereift ist.
Rechtzeitige und vertrauenswürdige Sicherheits-Updates
Die meisten der weit verbreiteten Distributionen liefern regelmäßige Sicherheits-Updates. Sie unterscheiden sich jedoch deutlich in der Art und Weise, wie diese Pakete bereitgestellt werden. Vermeidet daher Ableger und Community Rebuilds, da sich dort üblicherweise die Sicherheitsupdates verzögern.
Die meisten Distributionen signieren auch ihre Pakete und Metadaten.
UEFI- und SecureBoot-Unterstützung
Überprüft, ob die Distribution UEFI und SecureBoot unterstützt. Findet heraus, ob zusätzliche Schlüssel importiert werden müssen oder ob die Distribution den Kernel mit einem Schlüssel signiert, dem die Systemhersteller (z.B. über eine Vereinbarung mit Microsoft) vertrauen. Einige Distributionen nutzen nicht UEFI/SecureBoot, sondern verwenden manipulationssicherere Boot-Umgebungen. So nutzt z.B. Qubes-OS das oben bereits erwähnte Anti Evil Maid. Unterstützt eine Distribution jedoch weder SecureBoot, noch einen anderen Mechanismus, der Angriffe auf den Boot-Prozess verhindert, so solltet ihr euch eine andere Distribution suchen.
Festplattenverschlüsselung
Festplattenverschlüsselung ist eine Voraussetzung, um gespeicherte Daten zu sichern, und sie wird von den meisten Distributionen unterstützt. Als Alternative können selbstverschlüsselnde Festplatten verwendet werden, die dies in der Regel über den On-Board-TPM-Chip implementieren. Sie bieten ein vergleichbares Sicherheitsniveau bei schnellerem Betrieb, jedoch auch bei höheren Kosten.
4. Installation
Alle Distributionen sind unterschiedlich, aber hier sind allgemeine Richtlinien:
Festplattenverschlüsselung
Vorausgesetzt Sie verwenden keine selbstverschlüsselnden Festplatten, müsst ihr euer Installationsprogramm so konfigurieren, dass es vollständig alle Laufwerke verschlüsselt, die für die Speicherung Ihrer Daten und Systemdateien verwendet werden sollen. Es ist nicht hinreichend, einfach nur das Benutzerverzeichnis über auto-mounting cryptfs loop-Dateien zu verschlüsseln, wie dies z.B. bei älteren Versionen von Ubuntu der Fall war. Dies bietet keinen Schutz der Systemdateien und des Swap, die eine ganze Reihe sensibler Daten enthalten. Wir empfehlen die LVM-Laufwerke zu verschlüsseln. so dass nur ein Passwort während des Bootvorgangs erforderlich ist.
Die /boot-Partition wird in der Regel unverschlüsselt bleiben, da der Bootloader den Kernel vor dem Aufruf von LUKS/dm-crypt booten muss. Einige Distributionen unterstützen die Verschlüsselung der /boot-Partition (z.B. Arch), und es ist auch möglich, dies auf andere Distributionen zu übertragen, jedoch voraussichtlich auf Kosten der Komplexität von System-Updates. Es erscheint uns nicht erforderlich, die /boot-Partition zu verschlüsseln, wenn eure Distribution dies nicht nativ unterstützt, da das Kernel-Image selbst keine privaten Daten enthält und gegen Manipulation mit einer SecureBoot-Signatur geschützt wird.
Die Wahl guter Passphrasen
Moderne Linux-Systeme haben keine Begrenzung der Passwort/Passphrasen- Länge, so dass die einzige wirkliche Einschränkung Ihr Paranoia-Niveau ist.
Wenn ihr euer System häufig bootet, werdet ihr wahrscheinlich mindestens zwei verschiedene Passwörter eingeben müssen: eins, um LUKS zu entsperren und ein anderes, um sich anzumelden. In diesem Fall werdet ihr vermutlich mit langen Passphrasen nicht glücklich werden. Vermutlich empfehlen sich hier Passwörter mit höherer Entropie. Jedoch sollten auch diese nie weniger als 12 Zeichen lang sein.
Root, Benutzerkennwörter und die Admin-Gruppe
Ihr könnt problemlos dieselbe Passphrase als Root-Passwort und für die LUKS-Verschlüsselung verwenden, sofern nicht andere vertrauenswürdige Personen die Laufwerke entschlüsseln sollen, ohne Root werden zu dürfen. Im Allgemeinen könnt ihr die gleichen Passphrasen für eure UEFI-Administration, Festplattenverschlüsselung und Root-Konto verwenden – da ein Angriff mit jedem der Zugänge volle Kontrolle über euer System gewinnen kann.
Für euer normales Benutzerkonto, mit dem ihr eure täglichen Aufgaben erledigen könnt, solltet ihr ein anderes, aber ebenso starkes Passwort verwenden. Dieses Benutzerkonto sollte Mitglied der admin-Gruppe (oder wheel o.ä. je nach Distribution) sein und euch die Erweiterung der Privilegien mit sudo erlauben.
Mit anderen Worten: Auch wenn ihr die einzige Person auf eurer Workstation seid, solltet ihr zwei verschiedene, ebenso starke Passwörter haben, an die ihr euch ggf. erinnern müsst für die:
- Administration
- zur Verwaltung von UEFI
- des Bootloader (GRUB)
- der Festplattenverschlüsselung (LUKS)
- als Root auf der Workstation
- Nutzung
- des Accounts und sudo
- des Master-Passwort des Passwort-Managers
Rkhunter und IDS
Die Installation von rkhunter und eines Intrusion Detection System (IDS) wie AIDE oder Tripwire wird nicht wirklich nützlich sein, wenn ihr nicht wirklich versteht, wie diese funktionieren. Nur dann werdet ihr die notwendigen Schritte unternehmen können, um sie richtig einzurichten wie z.B.
- die Datenbanken auf externen Medien zu halten
- regelmäßige Überprüfungen von vertrauenswürdigen Umgebungen
- Aktualisieren der Hash-Datenbanken nach der Durchführung von System-Updates und Konfigurationsänderungen
- etc.
Wenn ihr nicht bereit seid, diese Maßnahmen zu ergreifen, und eure Workstation entsprechend einstellt, werden diese Werkzeuge ohne greifbaren Sicherheitsnutzen bleiben. Wir empfehlen die Installation und Konfiguration von rkhunter sodass es jede Nacht läuft. Auch ist es ziemlich einfach zu erlernen und zu benutzen. Und selbst wenn es versierte Angreifer nicht davon abhalten kann, so wird es euch dennoch helfen, einige eurer eigenen Fehler zu erkennen.
5. Härtung
Die Härtung der Sicherheit nach der Installation ist stark von der Distribution abhängig weswegen wir an dieser Stelle keine detaillierten Anweisungen geben können sondern nur allgemeine. Hier einige Schritte, die ihr beachten solltet:
Blacklisting
Um FireWire und Thunderbolt-Module auf die Backlist zu setzen, fügt die folgenden Zeilen in die Datei /etc/modprobe.d/blacklist-dma.conf ein:
blacklist firewire-core blacklist thunderbolt
Beide Module werden bei einem anschließenden Neustart blockiert.
Root-Mail
Standardmäßig werden Root-Mails auf dem System nur gespeichert und meist werden diese nie gelesen. Stellt in /etc/aliases sicher, dass Root-Mails an eine Mailbox weitergeleitet werden, die tatsächlich gelesen wird, damit ihr wichtige Systemmeldungen und Berichte nicht verpasst:
# Person who should get root’s mail root: sue@cusy.io
Führt nach dieser Änderung sudo newaliases aus und testet anschließend, ob die Mails auch tatsächlich ausgeliefert werden, da einige E-Mail-Provider Mails aus nicht vorhandenen oder nicht routebaren Domain-Namen ablehnen. Wenn dies der Fall ist, müsst ihr eure E-Mail-Konfiguration anpassen.
Firewalls, SSH- und andere Dienste
Die Standardeinstellungen der Firewall vieler Distributionen lässt eingehende SSH-Verbindungen zu. Sofern ihr keinen zwingenden Grund für eingehende SSH-Verbindungen habt, solltet ihr den SSH-Dienst deaktivieren:
$ sudo systemctl disable sshd.service $ sudo systemctl stop sshd.service
Dies hindert euch nicht daran, vorübergehend den SSH-Dienst zu starten, wenn ihr ihn benötigt.
Allgemeiner sollte euer System keine offenen Ports haben, an denen ein Dienst auf Anfragen lauscht. Dies schützt euch besser vor Zero-Day-Exploits.
Automatische Updates oder Benachrichtigungen
Wir empfehlen automatische Updates, da die eigenen Abläufe selten besser sind als diejenigen der jeweiligen Distribution. Zumindest solltet ihr jedoch automatische Benachrichtigungen über verfügbare Updates aktivieren. Und auch dann solltet ihr alle ausstehenden Updates so schnell wie möglich anwenden, auch wenn etwas nicht speziell als Sicherheitsupdate markiert ist oder keinen zugehörigen CVE-Code aufweist. Alle Bugs haben das Potenzial, Sicherheitslücken zu sein.
Logs beobachten
Ihr solltet ein großes Interesse an dem haben, was auf eurem System passiert. Aus diesem Grund solltet ihr logwatch installieren und konfigurieren. Ihr solltet euch tägliche Berichte über alle Aktivitäten zusenden lassen, um informiert zu sein, was auf eurem System passiert. Dies wird zwar keinen dedizierten Angriff verhindern, erhöht aber dennoch die Sicherheit auf eurem System.
Beachtet, dass viele systemd-Distributionen nicht mehr automatisch einen Syslog-Server installieren, so dass ihr ggf. einen eigenen rsyslog- Server installieren und aktivieren müsst, um sicherzustellen, dass /var/log nicht leer ist, bevor logwatch von Nutzen sein kann.
6. Workstation-Backups
Voll verschlüsselte Daten auf externen Speichern
Es ist praktisch, eine externe Festplatte für Backups zu haben, da man sich keine Sorgen machen muss über Bandbreite, Upstream etc. Selbstverständlich muss diese Festplatte ebenfalls über LUKS verschlüsselt werden oder, solltet ihr ein Backup-Tool (wie Duplicity oder Déjà Dup) verwenden, die Backups selbst verschlüsselt werden. Wir empfehlen letzteres mit einem guten zufällig generierten Passwort zu verwenden und an einem sicheren Ort offline zu speichern.
Zusätzlich zu eurem Home-Verzeichnis, solltet ihr auch die Verzeichnisse /etc und /var/log für forensische Zwecke sichern.
Auch solltet ihr vermeiden, dass euer Home-Verzeichnis auf einen unverschlüsselten externen Speicher kopiert wird. Dies mag zwar zunächst als einfache und schnelle Möglichkeit erscheinen, eure Dateien zwischen verschiedenen Systemen kopieren zu können, aber auch wenn ihr nicht vergesst, die Daten anschließend wieder zu löschen, so erlaubt es doch schnüffelnden Personen ggf. an eure sensiblen Daten heranzukommen.
Selektive Off-Site-Backups
Off-Site-Backups sind extrem wichtig und sollten von eurem Unternehmen bereitgestellt werden. Ihr könnt ein separates Duplicity/Déjà Dup-Profil einrichten, das nur die wichtigsten Dateien kopiert und große Datenmengen vermeidet wie z.B. Browser-Cache, Downloads etc.
Alternativ könnt ihr auch ein Zero-Knowledge-Backup-Tool verwenden, wie SpiderOak, das über zusätzliche nützliche Funktionen, wie zum Beispiel die Synchronisation von Daten zwischen mehreren Systemen und Plattformen, verfügt.
7. Best Practices
Die folgenden Best Practices sind sicher nicht umfassend. Sie versuchen vielmehr praktische Ratschläge zu geben, die unseres Erachtens eine tragfähige Balance zwischen Sicherheit und Benutzerfreundlichkeit halten.
Web-Browser
Es ist keine Frage, dass Web-Browser die Software mit der größten und am stärksten exponierten Angriffsfläche auf eurem System sind. Sie sind speziell geschrieben, um beliebige Dateien herunterzuladen und nicht vertrauenswürdigen, häufig feindlichen Code auszuführen. Browser versuchen, euch vor dieser Gefahr durch verschiedene Mechanismen wie Sandboxes und Code Sanitization zu schützen, aber dies kann keinen 100-prozentigen Schutz bieten. Ihr solltet lernen, dass das Browsen von Websites die unsicherste Aktivität ist, die ihr ausführen könnt.
Es gibt nun mehrere Möglichkeiten, wie ihr die Auswirkungen kompromittierter Browser reduzieren könnt, aber eine wirklich effektive Lösung erfordert erhebliche Veränderungen in der Art und Weise, wie ihr auf euren Workstations arbeitet.
Verwendet zwei verschiedene Browser
Dies ist die einfachste Möglichkeit, bietet jedoch auch nur einen geringen Schutz. Nicht alle Angriffe auf einen Browser führen zu einem vollen ungehinderten Zugang zu Ihrem System – manchmal sind sie beschränkt auf den lokalen Browser-Storage, die aktive Sitzung anderer Tabs etc. Die Verwendung von zwei verschiedenen Browsern, einen für die Arbeit und den anderen für alles andere, verringert ein wenig die Auswirkungen kompromittierter Browser, stört jedoch auch durch erhöhten Speicherverbrauch.
Firefox für die Arbeit und vertrauenswürdige Websites
Firefox lässt sich für die Arbeit durch zusätzliche Add-ons noch weiter absichern:
- NoScript
NoScript verhindert das Nachladen von Inhalten mit Ausnahme der in einer Allowlist gepflegten Domains. Der Aufwand wäre für den Standardbrowser zu hoch, bietet jedoch eine deutlich verbesserten Schutz vor Angriffen.
- Privacy Badger
EFF’s Privacy Badger verhindert, dass die meisten externen Tracker und Werbeplattformen geladen werden. Dies verhindert, dass euer Browser durch einen dieser Dienste kompromitiert werden kann (diese werden häufig genutzt um schnell tausende von Systemen zu infizieren.)
- HTTPS Everywhere
Dieses von der EFF entwickelte Add-on sorgt dafür, dass auf die meisten eurer Websites über eine sichere Verbindung zugegriffen wird, auch wenn ein Link als Protokoll http:// angibt. Dies hilft um eine Reihe von Angriffen zu vermeiden wie z.B. SSL-strip.
- Certificate Patrol
Dieses Tool warnt Euch, wenn sich das TLS-Zertifikat der Website, auf die ihr gerade zugreift, geändert hat oder demnächst ändert – z.B., wenn sich das Verfallsdatum nähert oder eine andere Zertifizierungsstelle verwendet wird. Es alarmiert euch bei dem Versuch einer Man-in-the-Middle-Attacke, aber erzeugt auch eine Menge Fehlalarme.
Ihr solltet als Standardbrowser für das Öffnen von Links Firefox verwenden, da NoScript das Nachladen oder Ausführen von Inhalten meist zuverlässig verhindert.
Chrome/Chromium für alles andere
Die Chromium-Entwickler haben ihrem Browser vor Firefox viele nette Sicherheits-Features hinzugefügt wie Seccomp-Sandkästen, Kernel- User-Namespaces usw., die als zusätzliche Isolationsschicht zwischen den von euch besuchten Websites und dem Rest Ihres Systems wirken. Chromium ist das Upstream-Open-Source-Projekt, und Chrome ist Googles darauf basierender proprietärer binärer Build (ihr solltet Chrome also nicht für Aufgaben einsetzen, von denen Google nichts wissen sollte).
Wir empfehlen, dass ihr auch in Chrome/Chromium die Erweiterungen Privacy Badger und HTTPS Everywhere installiert. Zudem solltet ihr ihm ein deutlich anderes Theme geben als Firefox um euch anzuzeigen, dass dies nicht der Browser für vertrauenswürdige Sites ist.
Verwendet zwei verschiedene Browser, davon einen innerhalb einer dedizierten VM
Dies ist eine ähnliche Empfehlung wie oben, erfordert jedoch einen zusätzlichen Schritt zur Ausführung des anderen Browsers. Die dedizierte VM sollte über ein schnelles Protokoll zugreifen und den Austausch über die Zwischenablage ermöglichen. Dies erlaubt eine deutlich bessre Isolation zwischen nicht vertrauenswürdigen Websites und dem Rest Ihrer Arbeitsumgebung.
Dies erfordert jedoch einen deutlich erhöhten Aufwand, da nun auch die VM gepflegt werden muss. Zudem wird deutlich mehr RAM und schnelle Prozessoren erwartet, um die erhöhte Last zu bewältigen.
Volle Trennung der Arbeitsumgebung durch Virtualisierung (paranoid)
Siehe hierzu das Qubes-OS-Projekt, das über eine Kapselung der Anwendungen in separate, komplett isolierte VMs eine hochsichere Umgebung schaffen möchte.
Passwort-Manager
Die Verwendung von guten, einzigartigen Passwörtern ist eine entscheidende Voraussetzung für jedes Team-Mitglied. Laufend werden Credentials gestohlen – entweder über infizierte Computer, über gestohlene Datenbank-Dumps, Remote- Site-Exploits oder fast beliebige andere Szenarien. Um den Schaden in einem solchen Fall gering zu halten, sollten Anmeldeinformationen niemals für andere Anwendungen wiederverwendet werden.
In-Browser-Password-Manager
Jeder Browser hat einen Mechanismus um Passwörter zu speichern, der ziemlich sicher ist. Diese Daten können mit anderen Geräten synchronisiert werden, wobei die Daten mit einem vom Benutzer bereitgestellten Kennwort verschlüsselt werden. Dieser Mechanismus hat jedoch erhebliche Nachteile:
- er funktioniert nicht über unterschiedliche Browser hinweg
- er bietet keine Möglichkeit, Anmeldeinformationen mit anderen Personen aus dem Team zu teilen
Es gibt mehrere freie oder billige Passwort-Manager, die in mehrere Browsern gut integriert sind und auch auf verschiedenen Plattformen arbeiten. Zudem bieten sie Gruppenaustausch (in der Regel jedoch als kostenpflichtigen Service).
Standalone-Password-Manager
Einer der größten Nachteile von Passwort-Managern ist, dass sie mit Browserintegration daherkommen und damit als Teil einer Anwendung, die höchstwahrscheinlich von Eindringlingen angegriffen wird. Daher sollten ihr wählen zwischen zwei verschiedenen Passwort-Managern – einem für Websites, der in euren Browser integriert sind, und einen, der als eigenständige Anwendung läuft. Letzterer kann verwendet werden, um hochsensible Anmeldeinformationen zu speichern wie Root-und Datenbank-Passwörter, shell account credentials usw.
Dabei kann ein Werkzeug nützlich sein, um z.B. die folgenden Passwörter mit den anderen Teammitgliedern zu teilen:
- Server Root-Passwörter
- LOM-Kennwörter
- Datenbank-Admin-Passwörter
- Bootloader-Passwörter
- etc.
Folgende Tools können euch dabei helfen:
- KeePassX
- In Version 2 wurde das Team-Sharing deutlich verbessert
- Pass
- Es nutzt Textdateien und PGP zur Integration in git
- Django-Pstore
- GPG wird verwendet um Anmeldeinformationen in Admin-Teams zu teilen
- Hiera-Eyaml
- Wenn ihr bereits Puppet für eure Infrastruktur verwendet, kann dies eine praktische Möglichkeit sein, um eure Server/Service-Credentials in verschlüsselten Hiera-Datenspeichern zu speichern
Sichern der SSH- und PGP-Schlüssel
Persönliche Schlüssel einschließlich SSH- und PGP-Schlüssel, werden die schützenswertesten Objekte auf der Workstation sein – etwas, das bei Angriffen von höchstem Interesse sein dürfte, da es weiter erlauben würde, eure Infrastruktur anzugreifen oder eure Identität anzunehmen. Daher solltet ihr zusätzliche Maßnahmen ergreifen um sicherzustellen, dass eure privaten Schlüssel gut gegen Diebstahl geschützt sind.
Der beste Weg, einen Diebstahl privater Schlüssel zu verhindern ist, ihn auf einer Smartcard zu speichern und ihn niemals auf eine Workstation zu kopieren. Es gibt mehrere Hersteller, die OpenPGP-fähige Geräte anbieten:
- Kernel Concepts
- bieten sowohl OpenPGP-kompatible Smartcards als auch ein USB- Kartenleser, falls Sie eines benötigen
- Yubikey NEO
- bietet OpenPGP-Smartcard-Funktionalität neben vielen coolen Features (U2F, PIV, HOTP, etc.)
Es ist auch wichtig, dass der Master-PGP-Schlüssel nicht auf der Workstation gespeichert wird und nur Subkeys verwendet werden. Der Hauptschlüssel wird nur dann benötigt, wenn Schlüssel anderer Personen signiert oder neue Unterschlüssel erstellt werden sollen – Operationen, die nicht sehr häufig vorkommen. Wie ein Hauptschlüssel auf dem Wechselspeicher erstellt und Unterschlüssel erstellt werden ist gut in Using OpenPGP subkeys in Debian development beschrieben.
Anschließend solltet ihr dann euren GnuPG-Agenten als SSH-Agenten konfigurieren und den Smartcard-basierten-PGP-Auth-Schlüssel als privaten SSH-Schlüssel verwenden. In Wie konfiguriere ich eine GPG-Smartcard zur SSH-Authentifizierung? findet ihr eine detaillierte Anleitung.
Hibernate
Bei suspend verbleiben die Inhalte des RAM auf den Speicherchips und können bei Angriffen gelesen werden (Cold Boot Attack). Wenn ihr also für längere Zeit eure Workstation verlasst wie z.B. am Ende des Arbeitstages, empfiehlt es sich, die Maschine herunterzufahren oder in den Ruhezustand zu wechseln (hibernate).
SELinux konfigurieren
Wenn ihr eine Distribution verwendet, die mit SELinux geliefert wird, machen wir einige Empfehlungen, um die Sicherheit Ihres Arbeitsplatzes zu erhöhen.
SELinux ist eine Mandatory Access Control (MAC)-Erweiterung der POSIX- Berechtigungen. Es ist ausgereift und robust. Dennoch empfehlen viele Sysadmins bis heute, »es einfach abzuschalten«.
Davon abgesehen hat SELinux nur begrenzte Sicherheitsvorteile auf einer Workstation, da die meisten Anwendungen von Ihnen als Benutzer ausgeführt werden wird und daher uneingeschränkt laufen werden. Dennoch kann es voraussichtlich verhindern, dass ein Angreifer die errungenen Privilegien eskalieren und Root-Level-Zugriff über einen verwundbaren Daemon Service gewinnen kann.
Unsere Empfehlung ist, sich darauf zu velassen und es zwingend anzulassen.
Nie setenforce 0 verwenden
Zwar mag es verlockend sein, setenforce 0 zu verwenden um den Freigabemodus von SELinux zu verlassen, aber das solltet ihr tunlichst vermeiden, da hierdurch SELinux für das gesamte System im Wesentlichen abgeschaltet wird. Meist wollt ihr hingegen nur eine bestimmte Anwendung oder einen Daemon ausnehmen.
Statt setenforce 0 solltet ihr also vielmehr semanage permissive -a [SOMEDOMAIN_T] verwenden um eine bestimmte Domäne freizugeben. Um nun diejenige Domäne herauszufinden, welche Probleme verursacht, wählt ausearch:
ausearch -ts recent -m avc
Anschließend sucht nach scontext= und haltet Ausschau nach einer Zeile mit (Quelle SELinux Kontext), etwa:
scontext=staff_u:staff_r:gpg_pinentry_t:s0-s0:c0.c1023 ^^^^^^^^^^^^^^
Dies zeigt euch, dass die Domäne gpg_pinentry_t verweigert wird, so dass ihr diese Anwendung freigeben wollt mit:
semanage permissive -a gpg_pinentry_t
Dies ermöglicht euch, die Anwendung zu verwenden und den Rest der AVCs zu sammeln, die ihr dann zusammen mit audit2allow verwenden könnt, um eine lokale Richtlinie zu schreiben. Sobald dies geschehen ist und keine neuen AVC-Denials entdeckt werden, könnt ihr diese Domäne aus den Freigaben entfernen mit:
semanage permissive -d gpg_pinentry_t
Verwendet eure Workstation als SELinux-Rolle staff_r
SELinux kommt mit einer nativen Implementierung von Rollen, die bestimmte Privilegien gewähren oder verbieten, basierend auf der Rolle, die dem Benutzerkonto zugeordnet ist. Zum Administrieren solltet ihr die Rolle staff_r verwenden, die euch den Zugriff auf viele Konfigurations- und sicherheitsrelevante Dateien beschränkt, bis ihr zum ersten Mal sudo aufruft.
Üblicherweise werden Konten erstellt als unconfined_r und die meisten Anwendungen werden ohne Einschränkungen ausgeführt. Um nun den Account der staff_r-Rolle zuzuordnen, führt den folgenden Befehl aus:
usermod -Z staff_u [username]
Ihr solltet euch ab- und wieder anmelden, um die neue Rolle zu erhalten. Wenn Ihr nun id -Z aufruft, werdet ihr folgende Ausgabe erhalten:
staff_u:staff_r:staff_t:s0-s0:c0.c1023
Beim Aufruf von sudo solltet ihr ein zusätzliches Flag hinzuzufügen, um SELinux mitzuteilen, dass die Sysadmin-Rolle angenommen werden soll. Der Befehl hierzu ist:
sudo -i -r sysadm_r
id -Z zeigt nun:
staff_u:sysadm_r:sysadm_t:s0-s0:c0.c1023
Warning
Ihr solltet vertraut sein mit ausearch und audit2allow, bevor ihr diesen Schritt macht, da einige eurer Anwendungen möglicherweise nicht mehr funktionieren werden, wenn ihr in der Rolle staff_r lauft. Dies betrifft zum Beispiel die folgenden gängigen Anwendungen:
- Chrome/Chromium
- Skype
- VirtualBox
Weiterführende Literatur
Lizenz
Diese Arbeit ist lizenziert unter der Creative Commons Attribution-ShareAlike 4.0 International License.