Table of Contents
Verwendete Tools
Letztendlich haben wir die drei Scanner Lynis, Testssl.sh und Otseca verwendet, sowie den JShielder. Alle angeschauten Tools stehen Open Source zur Verfügung.
Lynis
Lynis ist ein weitverbreiteter Vulnerability Scanner, der auch sehr aktuell gehalten wird. 8000 Sterne auf GitHub, viele Contributer und das Alter des Programms bei hoher Aktualität sind Argumente, die für die Verwendung von Lynis sprechen. Deshalb war uns schnell klar, dass wir Lynis verwenden wollen.
Das generierte Ergebnis betrachtet umfangreiche Gebiete des Systems und berechnet einen Hardening-Index. Dieser zeigt auf einer Skala von 0 bis 100, wie sicher Lynis das System einschätzt. Außerdem werden gefundene Warnungen und Vorschläge angezeigt mit direkter Issue-Nummer, diese beinhaltet zudem Anleitungen zur Behebung des Problems.
Um Lynis zu starten, genügt es, einen einzigen Befehl einzugeben.
./lynis audit system
Testssl.sh
Mit Testssl.sh haben wir die Ports unserer VM überprüft. Welche sind offen und welche sind zusätzlich verschlüsselt? Testssl.sh ist, wie Lynis, sehr beliebt und aktuell. Da es für das Scannen von Ports ausgelegt ist, kann man sich sicher sein, dass diese Aufgabe auch zuverlässig erledigt wird.
Beim Starten von Testssl.sh können verschiedene Parameter mitgegeben werden. Beispielsweise, wie das Log-File abgespeichert werden soll, welche Timeouts gesetzt werden und am Schluss welcher Port überprüft werden soll.
./testssl.sh --logfile "../outputs/testssl-$1.log" --append --connect-timeout 10 --openssl-timeout 10 -t ftp localhost:21
Im Output werden die gescannten Ports aufgelistet. Ist der Port nicht geöffnet, fällt die Analyse kurz aus. Andernfalls analysiert das Tool die Verschlüsselung, Cipher Suites und weitere Verwundbarkeiten.
Ausschnitt des Testssl.sh-Outputs
Otseca
Um ein kleineres Tool auszuprobieren, haben wir uns für Otseca entschieden. Es ist weniger bekannt und der letzte Commit liegt schon etwas in der Vergangenheit. Dennoch macht es einen soliden Eindruck mit vielen Features.
Startet man Otseca, gibt es die Möglichkeit die verschiedenen Aspekte anzugeben, die getestet werden sollen.
Otseca --ignore-failed --tasks system,kernel,permissions,services,network,distro,external
Im Gegensatz zu den anderen Tools erstellt Otseca HTML-Seiten zu jedem angegebenen Aspekt. Also in unserem Fall: System, Kernel, Permissions, Services, Network, Distribution und External. Auf Unterseiten steht, nach einer kurzen Erklärung des Moduls, eine Auflistung der durchgeführten Tests. Je nachdem wie Otseca die Ergebnisse sicherheitstechnisch einschätzt, wird der Hintergrund eingefärbt. Da die einzelnen Kommandos alleine recht wenig aussagen, muss recherchiert werden, was kontrolliert wurde und warum die Farbe entsprechend gewählt wurde.
Ausschnitt des Otseca-Outputs
JShielder
Der JShielder hat ungefähr gleich viele Sterne auf GitHub wie Otseca. Allerdings liegt hier der letzte Commit im August 2019 (stand 6.2.2021). Außerdem soll er, laut Beschreibung, nahezu alle Systembereiche abdecken. Aus diesen Gründen entschieden wir uns, den JShielder zu testen.
Beim ersten Ausführen des JShielders bemerkten wir, dass direkt Änderungen am System vorgenommen wurden. Dabei wurde nicht gefragt, ob diese Option überhaupt ausgeführt werden darf. Somit hat der Anwender bei der automatischen Reparatur keinen Einfluss und Informationen darüber, was passiert. Deshalb kam es dazu, dass nach dem erforderten Neustart, wir uns nicht mehr auf die VM verbinden konnten. Wie sich später zeigte, lag das an eingerichtetem Portknocking und dem Setzen eines Bootloader-Passwortes. Glücklicherweise bietet der JShielder jedoch die Möglichkeit, nur spezielle Verbesserungen auszuführen. So konnten wir nur diese ausführen, die uns nicht aus unserer VM ausschlossen.
Der JShielder ist ein Komandozeilenprogramm, dem beim Aufruf keine Parameter mitgegeben werden können. Dadurch konnte wenig automatisiert werden und die 14 Optionen mussten händisch ausgewählt werden. Diese sind: 3, 8, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30 und 31.
Log-Files und anderer verwertbarer Output wird nicht generiert.
Vuls
Vuls gehörte ursprünglich auch zu den ausgewählten Tools, bis wir es zum ersten Mal ausgeführt hatten. Denn Vuls lädt bei jeder Installation zwei bis drei Gigabyte CVEs (Common Vulnerabilities and Exposures) der letzten Jahrzehnte herunter. Bei 18 virtuellen Maschinen dauert das viel zu lange und macht den ganzen Prozess träge. Deshalb ist Vuls eher für größere Maschinen oder Server geeignet, auch weil es das System kontinuierlich scannt.
Archery
Archery war auch ein Tool, das in der näheren Auswahl stand. Fiel jedoch auch aus der Auswahl heraus, da das Werkzeug lediglich eine Oberfläche bietet für die zusammenfassung verschiedener anderer Scanner.
Prozess
In der Liste unten sind 32 Tools aufgeführt, die wir uns alle angeschaut haben. Nachdem wir definiert hatten, nach welchen Kriterien wir uns die Tools anschauen, haben wir uns die Tools aufgeteilt. Dabei haben wir auf die Aktualität (letzter Commit in GitHub), Beliebtheit (GitHub Stars) und die Beschreibung geachtet. Punkte wie: "Welche Features werden angegeben?", "Wie ist das Erscheinungsbild?", "Wie lässt sich das Programm ausführen?" spielten dabei eine Rolle für uns.
Die Ergebnisse der Recherchen wurden in einer gemeinsamen Tabelle zusammengetragen. Anhand derer haben wir dann die Entscheidungen getroffen, welche wir auswählen.
Alle Tools
Name | Ausgewählt | Letztes Update | Features | Homepage | Github Stars |
---|---|---|---|---|---|
Vuls | Ja | Dec 15, 2020 | Debian, ExploitDB, Metasploit, Node, Outdated Software, PHP, Python, RHEL, Ruby, SSL, Ubuntu, Webservers, WordPress | 8157 | |
Lynis | Ja | Nov 13, 2020 | Compliance, Configurations, Intrusion Detection, Patch Management, Penetration Testing, Security Auditing, System Hardening, Vuln Detection | Link | 7946 |
Testssl.sh | Ja | Dec 5, 2020 | Debian, Ports, SSL, Ubuntu, WSL, Webservers | Link | 4683 |
Nikto | Nein (teil eines anderen) | Nov 30, 2020 | Webservers | 4421 | |
Kube Bench | Nein | Dec 8, 2020 | Kubernetes | 3224 | |
Prowler | Nein | Nov 20, 2020 | AWS, Logging, Monitoring, Networking | 2830 | |
ssh-audit | Eher Nein | Nov 2, 2016 | Algorithm Information, Key Algorithms, SSH | 2662 | |
NMAP Vulns | Nein (teil eines anderen) | Nov 12, 2020 | CVE Scanning, Ports | 2207 | |
ScoutSuite (former AWS Scout2) | Nein | Oct 24, 2020 | AWS, Alibaba Cloud, Azure, Google Cloud Platform, Oracle Cloud Infrastructure | 1664 | |
Archery | Nein | Nov 27, 2020 | Hosts own Vuln-Scan service | Link | 1532 |
Scanner for PHP.ini | Nein | Feb 4, 2018 | PHP | 1451 | |
sslscan2 | Nein (teil eines anderen) | Dec 9, 2020 | OpenSSl, SSL | 1222 | |
CloudSploit scans | Nein | Nov 30, 2020 | AWS, Azure, Google Cloud Platform | Link | 1173 |
Anchore Engine | Eher | Nov 25, 2020 | CentOS, Debian, Docker, Hosts own Vuln-Scan service, Monitoring, RHEL, Ubuntu | Link | 1099 |
OpenVAS | Nein (teil eines anderen) | Dec 1, 2020 | Networking | Link | 938 |
Cloud Security Suite (cs-suite) | Eher Nein | Oct 24, 2020 | AWS, Azure, Debian, Google Cloud Platform, Ubuntu | Link | 774 |
ssh_scan | Nein | Nov 5, 2020 | Configurable, SSH | 736 | |
VHostScan | Nein | Sep 1, 2020 | HTTP, Webservers | 715 | |
OpenSCAP | Nein | Nov 25, 2020 | CWE, SCAP | Link | 698 |
Zeus | Nein | Oct 3, 2019 | AWS | 620 | |
JShielder | Ja | Aug 21, 2019 | Apache, Compilers, Critical Files, Cronjobs, Fail2Ban, IpTables, Kernel, MySql, PHP, SSH | 458 | |
otseca | Ja | Mar 24, 2020 | Distribution, External, Kernel, Networking, Permissions, System | 408 | |
Bash Scanner | Nein | Dec 8, 2016 | Apache, Debian, Nginx, OpenSSH, OpenSSl, Outdated Software, PHP, Ubuntu | 377 | |
arch-audit | Nein | Dec 1, 2020 | Arch | 267 | |
LUNAR | Eher Nein | Sep 23, 2020 | AWS, CentOS, Debian, Docker, RHEL, Ubuntu | 236 | |
G-Scout | Nein | Apr 11, 2019 | Google Cloud Platform | 206 | |
DAudit | Nein | Jun 21, 2020 | BigData, Hadoop, MongoDB, MySql, Redis, Spark | 104 | |
Nix Auditor | Nein | Jul 10, 2020 | CentOS, RHEL | 63 | |
orthrus | Nein | Oct 26, 2017 | (unstable), EC2, IAM configurations | 17 | |
sshsec | Nein | Aug 29, 2017 | SSH | 12 | |
System Security Checker | Nein | Aug 31, 2019 | CVE Scanning | 11 | |
YASAT | Nein | Aug 30, 2016 | Apache, Bind DNS, Kernel, MySql, OpenVPN, PHP, Samba, Squid, Tomcat | 10 |