Skip to content

ssh-audit - OpenSSH Sicherheit testen, konfigurieren und härten

Secure Shell (SSH) dürfte fast jeder schon einmal gehört haben, nicht nur wegen der vielen Updates in letzter Zeit.

Das Netzwerkprotokoll, welches häufig zur Wartung oder zum Datenaustausch mit entfernten Geräten verwendet wird, ist aus dem Alltag kaum wegzudenken.

SSH ermöglicht eine sichere Verbindung in unsicherer Umgebung, dank Verschlüsselung und Authentifizierung.

Neben Passwortauthentifizierung kann das Protokoll mit Public Key Verfahren genutzt werden, was durchaus zu empfehlen ist.

Die Einstellungen in der Konfiguration "/etc/ssh/sshd_config" dazu sind schnell gesetzt:

PubkeyAuthentication yes

PasswordAuthentication no

 

Neben der Authentifizierungsmethode gibt es allerdings noch weitere Einstellungsmöglichkeiten.

Um Verbindungen zwischen Client und Server möglichst sicher zu gestalten, können in der Konfiguration verschiedene Einstellungen gesetzt werden.

Unter anderen folgende Werte.

 

  • KexAlgorithms (Key Exchange): Die Schlüsselaustausch-Algorithmen für die symmetrische Verschlüsselung.
  • Ciphers Die Ciphers zur symmetrischen Verschlüsselung der Verbindung.
  • MACs (Message authentication codes): Nachrichten Authentifizierungsverfahren, um die Integrität zu sichern.
  • HostKeyAlgorithms Algorithmus welchen der Client verwendet

 

Durch alte bzw. gebrochene oder mangelhafte Verschlüsselung kann es zu Sicherheitslücken kommen, welche sich durch richtige Einstellungen vermeiden lassen.

Mit Hilfe des Kommandozeilen Tools ssh-audit lassen sich fehlerhafte SSH Einstellungen schnell ausfindig machen.

ssh-audit - OpenSSH Sicherheit testen und richtig konfigurieren

Das Programm liest die Version und Einstellungen von OpenSSH aus und zeigt im Ampelformat an, welche Algorithmen und Ciphers abgeschaltet werden sollten.

ssh-auditDazu werden zusätzliche Infos eingeblendet. Warum genau diese Cipher oder jener Algorithmus nicht mehr verwendet werden sollten.

In der aktuellen Programmversion 1.7.x werden folgende Hauptfeatures unterstützt.

  •     SSH1 and SSH2 protocol server support
  •     grab banner, recognize device or software and operating system, detect compression
  •     gather key-exchange, host-key, encryption and message authentication code algorithms
  •     output algorithm information
    • available since 
    • removed/disabled 
    • unsafe/weak/legacy, etc
  •     output algorithm recommendations
    • append or remove based on recognized software version;
  •     output security information
    • related issues
    • assigned CVE list, etc
  •     analyze SSH version compatibility based on algorithm information
  •     historical information from OpenSSH, Dropbear SSH and libssh
  •     no dependencies, compatible with Python 2.6+, Python 3.x and PyPy

Installation unter Ubuntu 16.04 und Python3

Die Installation ist relativ einfach, allerdings kann es sein, dass mit Ubuntu 14.04 und Python 2.7 und Ubuntu 16.04 mit Python 3 noch ein paar Handgriffe notwendig sind.

wget https://github.com/arthepsy/ssh-audit/archive/v1.7.0.zip

unzip v1.7.0.zip

cd ssh-audit-1.7.0/

Zum Starten des Audits muss Python Script und eine Serveradresse aufgerufen werden. Als ersten Test bietet sich localhost an.

Unter Ubuntu 16.04 muss allerdings darauf geachtet werden, dass Python 3 richtig eingerichtet ist. Darum sollte hier noch ein Symlink gesetzt werden, damit das Script richtig ausgeführt werden kann

$ python -V
-bash: /usr/bin/python: No such file or directory

$ sudo ln -s /usr/bin/python3 /usr/bin/python

$ ls -l /usr/bin/ |grep python
lrwxrwxrwx 1 root   root          16 Oct 29 19:29 python -> /usr/bin/python3

Danach kann das Audit Script den Ubuntu 16.04 Server auf schwache Einstellungen kontrollieren. Hier ein Auszug.

sudo ./ssh-audit.py localhost

# general
(gen) banner: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
(gen) software: OpenSSH 7.2p2
(gen) compatibility: OpenSSH 7.2+, Dropbear SSH 2013.62+
(gen) compression: enabled (zlib@openssh.com)

# key exchange algorithms
(kex) curve25519-sha256@libssh.org          -- [info] available since OpenSSH 6.5, Dropbear SSH 2013.62
(kex) ecdh-sha2-nistp256                    -- [fail] using weak elliptic curves
                                            `- [info] available since OpenSSH 5.7, Dropbear SSH 2013.62
(kex) ecdh-sha2-nistp384                    -- [fail] using weak elliptic curves

# host-key algorithms
(key) ssh-rsa                               -- [info] available since OpenSSH 2.5.0, Dropbear SSH 0.28
(key) rsa-sha2-512                          -- [info] available since OpenSSH 7.2
 

# encryption algorithms (ciphers)
(enc) chacha20-poly1305@openssh.com         -- [info] available since OpenSSH 6.5
                                            `- [info] default cipher since OpenSSH 6.9.
(enc) aes128-ctr                            -- [info] available since OpenSSH 3.7, Dropbear SSH 0.52
(enc) aes192-ctr                            -- [info] available since OpenSSH 3.7
(enc) aes256-ctr                            -- [info] available since OpenSSH 3.7, Dropbear SSH 0.52
 

# message authentication code algorithms
(mac) umac-64-etm@openssh.com               -- [warn] using small 64-bit tag size
                                            `- [info] available since OpenSSH 6.2
(mac) umac-128-etm@openssh.com              -- [info] available since OpenSSH 6.2
 

OpenSSH Härtung (ab Version OpenSSH 6.7)

Bei der neuesten OpenSSH Version können verschiedene Sicherheitseinstellungen gesetzt werden.

Im Screenshot seht ihr eine laut Audit optimale Einstellung für einen Server zum jetzigen Zeitpunkt.

ssh-gehaertet


Die Einstellungen kommen wie folgt zu Stande: 

Zunächst zum Key Exchange. Elliptische Kurven vom National Institute of Standards and Technology (Nist) haben nicht den besten Ruf und sind durch Timingangriffe verletzbar. SHA1 zählt auch nicht mehr zu den besten Methoden unserer Zeit und kann ebenfalls deaktiviert werden.

Das heißt von den verfügbaren Möglichkeiten (siehe unten) bleiben nur noch curve25519-sha256 und diffie-hellman-group-exchange-sha256 als Auswahl übrig. 

  • curve25519-sha256: ECDH over Curve25519 with SHA2
  • diffie-hellman-group1-sha1: 1024 bit DH with SHA1
  • diffie-hellman-group14-sha1: 2048 bit DH with SHA1
  • diffie-hellman-group-exchange-sha1: Custom DH with SHA1
  • diffie-hellman-group-exchange-sha256: Custom DH with SHA2
  • ecdh-sha2-nistp256: ECDH over NIST P-256 with SHA2
  • ecdh-sha2-nistp384: ECDH over NIST P-384 with SHA2
  • ecdh-sha2-nistp521: ECDH over NIST P-521 with SHA2
Quelle

Für Mac, HostKeys und Ciphers gelten ähnliche Regeln. Auch hier sollten Einstellungen mit MD5/SHA1 oder CBC entfernt werden. Open SSH Audit hebt diese in roter Schrift hervor. Am Ende bleibt eine sichere Einstellung und folgende Angaben unter /etc/ssh/sshd_config.

Diese beispielhaften Einstellungen wurde so gewählt, dass eine Verbindung via Windows und PuTTY möglich ist.

debianbanner no

KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256

Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

MACs hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256

HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa

Fazit

open-ssh audit bietet eine einfache und schnelle Möglichkeit SSH Verbindungen zu testen und bei Bedarf auch zu härten. Das Tool erklärt dem Nutzer seine Wahl und ist somit recht verständlich.

Allerdings sollte immer auf die jeweilige Umgebung in Verbindung mit den Einstellungen geachtet werden. Auch sollte nach einer Änderung zwingend eine Testverbindung aufgebaut werden (SSH Dienst neu starten nicht vergessen).

Details zu weiteren Einstellungen und deren Funktion, welche der Audit zurzeit nicht bieten kann, sollten an anderer Stelle nachgelesen werden. Hier empfiehlt sich das Raven Wiki für einen ersten Überblick

ssh audit

Lynis 2.3.4 – Sicherheits Auditing für Linux Systeme mit vielen neuen Features

Das Open Source Security Auditing Tool Lynis  hat ein weiteres Major Update erhalten, welches allerdings schon beim 4. Bugfix Release angekommen ist.
Ich hatte das letzte Mal im März darüber berichtet (Artikel).

Zu den Kern-Neuerungen der Version 2.3.4 zählt unter anderen

  • Neue Ansible Scripte sind verfügbar
  • Ein Entwickler Modus für detaillierte Informationen wurde integriert "--profile developer.prf lynis audit system --developer"
  • Neuer Hilfe Befehl "show" (siehe Screenshot)
  • Es werden nun verschiedene Sprachen unterstützt, Deutsch ist seit Version 2.3.2 dabei.
  • Nginx wird auf veraltete SSL Implementierungen überprüft (SSLv2/SSLv3)
  • Lynis beherrscht verschiedene Profile
  • Remote Scans via SSH sind möglich
  • Systemd wird erkannt und unterstützt
  • Die Auswertung samt Darstellung wurde verbessert
  • Die Auswertung kann debugged werden "--debug flag"
  • Support für Redis, OpenStack und PHP 5.6 wurde integriert
  • Die Logdatei lässt sich mit "lynis show details TestID" öffnen
  • Bösartige Arch Linux Pakete werden nun erkannt

lynis-show

Installation Ubuntu 14.04 oder 16.04

Ubuntu 14.04

sudo sh -c 'echo "deb https://packages.cisofy.com/community/lynis/deb/ trusty main" > /etc/apt/sources.list.d/cisofy-lynis.list'
sudo apt-get update
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C80E383C3DE9F082E01391A0366C67DE91CA5D5F
sudo apt-get install lynis

Ubuntu 16.04

sudo sh -c 'echo "deb https://packages.cisofy.com/community/lynis/deb/ xenial main" > /etc/apt/sources.list.d/cisofy-lynis.list'
sudo apt-get update
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C80E383C3DE9F082E01391A0366C67DE91CA5D5F
sudo apt-get install lynis

Weitere Systeme wie Fedora oder SuSE werden ebenfalls unterstützt, alternativ kann das Paket auch ohne Repository installiert werden.

lynis

Fazit

Für Administratoren oder Sicherheitsexperten ist Lynis ein praktisches Tool, um Systeme zu auditieren oder zu härten. Die deutsche Übersetzung ist etwas dürftig und zum jetzigen Stand eher überflüssig. Dafür wurden zahlreiche Verbesserungen integriert, welche das kleine Programm immer noch zu einem nützlichen Puzzlestück bei einem ausgefeilten Sicherheitskonzept macht.

Download

Lynis 2.2.0 - Neue Version zur Linux Systemhärtung verfügbar

Das Auditing Tool Lynis hat ein Major Update erhalten und ist bei Version 2.2.0 angelangt.

Ich hatte diesen Sicherheitscheck für Linux Systeme bereits im Blog vorgestellt.

Lynis prüft auf unsichere Einstellungen, Konfigurationsfehler und gibt Tipps zur Absicherung des Systems.

Alle Schritte können im Prinzip auch händisch vorgenommen werden. Für einen schnellen und automatisierten Audit, bietet sich das Tool aber durchaus an.

lynis

Die Version 2.2.0 unterstützt nun Debian 8 Installationen und erkennt VMware Umgebungen. Die Überprüfung von FreeBSD wurde verbessert, sowie weitere Prüfbereiche (z.B. NTP oder USB) ergänzt. Hier geht es zum Changelog.

Lynis - Installation und Anwendung

Die Installation ist wie so oft recht einfach.

wget https://cisofy.com/files/lynis-2.2.0.tar.gz

sha256sum lynis-2.0.0.tar.gz

Hash Summe auf der Homepage gegenprüfen und dann entpacken

tar -xvf lynis-2.2.0.tar.gz

cd lynis

./lynis

Beim Ausführen ohne Parameter werden alle Zusatz- Kommandos angezeigt über die das Programm verfügt. Die üblichen zur Überprüfung des Systems wären beispielsweise:

./lynis --check-all

./lynis --check-all --quick (kein Enter notwendig)

./lynis audit dockerfile datei (Docker Container prüfen)

./lynis update release      (Update Lynis Version)

./lynis --cronjob

 

Fazit

Die Alternativen im Bereich des automatisierten Sicherheitsaudit auf Linux Systemen stellen meines Wissen Bastille oder Tiger dar. Beide sind leider etwas veraltetet und stellen somit wenig Konkurrenz dar. Vergleichbares ist eventuell noch beim Linux Security Auditing Tool (LSAT) zu finden. Dieses Tool habe ich allerdings noch nicht getestet. Schlußendlich bleibt, neben der Handarbeit, für einen freien Systemschnellcheck wenig anderes außer Lynis übrig.

BackBox Linux 4.1 - Update für die Pentesting Ubuntu Distribution

Laut BackBox Blog Eintrag wurde bereits vor einer Woche das Update auf Version 4.1 der Pentesting- und Forensik Distribution veröffentlicht. 

Das System für Sicherheitsanalysten basiert nun auf Ubuntu 14.04.1 mit Linux Kernel 3.13. Zu den üblichen Bugfixes und Perfomance-Optimierungen gesellt sich ein voll verschlüsselbares LVM und das automatische Löschen des RAM beim Herunterfahren hinzu.

backbox

Die Toolsammlung für Penetrationstests, Auditing und forensische Analysen wurde natürlich ebenfalls auf den aktuellen Stand gebracht. Eine kurze Anleitung zur Verwendung der enthaltenen Hacker Tools kann im Backbox Wiki nachgeschlagen werden.

Wie aktualisiere ich eine Backbox Installation?

Ein Update einer bestehenden Installation ist recht simpel, mit wenigen Befehlen auf der Kommandozeile kann ein Update auf Version 4.1 gemacht werden

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install -f
sudo apt-get install backbox-default-settings backbox-desktop --reinstall
sudo apt-get install backbox-tools --reinstall
sudo apt-get autoremove --purge

 

Sollte noch keine Installation vorhanden sein, genügt der Download und das Erstellen eines bootfähigen USB Sticks oder einer CD für erste Schritte mit dem Release.

BackBox Download

Lynis - IT Sicherheits Audit für Ubuntu und andere Linux Systeme

Lynis ist ein Open Source Tool welches für Sicherheitschecks von Linux Systemen verwendet werden kann. Es prüft auf Sicherheitslücken, Verwundbarkeit des Systems und schlägt Härtungsmaßnahmen vor. 

lynis

Dazu werden verschiedene Systembereich wie Kernel, Prozesse, Dateisysteme, Benutzer, Shells, Software, Ports, Pakete, Server, Netzwerkeinstellungen, SSH, LDAP, SNMP, usw. geprüft.

Sobald das Tool alle Punkte durchgelaufen hat, liefert es einen Abschlussbericht, der in verschiedene Risikostufen unterteilt ist und Vorschläge zur Behebung dieser Gefahren macht.

So werden beispielsweise auch Vorschläge zum Kernel Hardening gemacht.

Abschließend gibt Lynis eine eigene Bewertung zum Härtungsgrad des Systems ab:

Lynis Scanner (details):

Hardening index : 70 [############            ]

Tests performed : 179

Plugins enabled : 0

Jeder Bericht sollte für einzelne Systeme getrennt begutachtet werden. Am besten sollten unrelevante Bereiche aus den Tests ausgeschlossen werden, damit die Fehlertoleranz klein gehalten wird. Für regelmäßige Audits oder den Gelegenheitscheck von Systemen ist Lynis eine gute und freie Sicherheitslösung.

Installation von Lynis 1.6.1

Die Installation des Audit Tools geht einfach von der Hand. Herunterladen, entpacken und ausführen.

sudo wget http://cisofy.com/files/lynis-1.6.1.tar.gz

sudo tar xvf lynis-1.6.1.tar.gz

cd lynis/

sudo ./lynis --check-all

">Der Befehl "--check-all" bewirkt in diesem Fall, dass alle Module geprüft werden. Bei einem ersten Durchlauf kann diese sinvoll sein. Für einen Penetrationstest ist die Option "--pentest" zu empfehlen. Prinzipiell kann bei weiteren Durchgängen "-q" verwendet werden, so werden nur noch Warnungen ausgegeben und nicht alle Meldungen angezeigt.