Linux-Tagebuch #12 – Sicherheit, Firewall und Virenscanner

In dieser mehrteiligen Beitragsreihe versuche ich mich aus Sicht eines Windows PC-Nutzers dem Linux-Desktop als Betriebssystem zu nähern. Dabei möchte ich dieses als Linux-Anfänger selbst besser kennen lernen und zu verstehen versuchen.  Zu Teil 1…

In diesem Beitrag möchte ich meine Gedanken festhalten, die ich mir zum Thema „Sicherheit“ bei der Benutzung von Ubuntu 20.04 LTS als Betriebssystem gemacht habe. Ich bin sicherlich kein Experte auf dem Fachgebiet, aber der ein oder andere Kniff lässt sich als Normal-Nutzer meiner Meinung nach dennoch leicht umsetzen.

Das Sicherheits-ABC

Wie auch bei Windows gelten unter Ubuntu die gleichen Grundregeln für die Sicherheit im Umgang mit dem Computer. Man sollte stehts…

  • das System aktuell halten,
  • sichere und unterschiedliche Passwörter wählen,
  • möglichst auf ungeprüfte Fremdquellen (wie PPAs) verzichten,
  • vorsichtig mit Mail-Anhängen sein,
  • Programme nicht mit mehr Rechten starten, als für en Anwendungszweck notwendig,
  • Downloads und Skripte nicht gedankenlos ausführen,
  • Sensible Daten getrennt speichern oder verschlüsseln

Die Liste ließe sich bestimmt beliebig ergänzen, das soll auch gar nicht der Schwerpunkt dieses Beitrags sein. Hier findet ihr übrigens eine interessante Sammlung aus dem ubuntuusers Wiki dazu. Ich möchte an dieser Stelle noch einmal anmerken, dass ihr während der Installation von Ubuntu die Möglichkeit habt, euren Datenträger zu verschlüsseln, dies kann insbesondere bei Notebooks, die häufig unterwegs sind, sinnvoll sein. An einfachsten ist es, diese Entscheidung bereits bei der Installation von Ubuntu / bei der Partitionierung der Festplatte zu treffen.

Ein für mich besonderes Risiko stellen die Programme dar, die eine Schnittstelle zum Internet sind, wie zum Beispiel der Browser. Da bietet es sich doch an, gleich ein paar sicherheitsrelevante Add-Ons zu installieren. Ich nutze dafür gerne uBlock Origin, Privacy Badger und HTTPS Everywhere. Die gibt es sowohl für Firefox als auch für Chrome(ium). Für Mails benutze ich unter Ubuntu Mozilla Thunderbird, hier habe ich den Junk-Filter entsprechend eingerichtet. Dieser kann auch „trainiert“ werden, in dem man selber Spam markiert. [2] Außerdem ist es empfehlenswert, HTML für Mails zu deaktivieren, wenn man nicht darauf angewiesen ist. Das erhöht den Datenschutz und die Sicherheit. [3]

Firewall einrichten

Euer Rechner befindet sich höchstwahrscheinlich hinter einem Router, der eingehende Verbindungen nicht ohne weiteres an euren PC durchlässt. Ihr habt also schon eine einfache Hardware-Firewall. [4] Welche Programme wie mit dem Internet kommunizieren dürfen und welche Ausnahmen gelten, lässt sich noch besser mit einer Software-Firewall regeln. Die kann außerdem von Vorteil sein, wenn man mal in einem fremden Netzwerk (wie einem öffentlichen Hotspot) unterwegs ist.

Unter Ubuntu 20.04 ist bereits die Software-Firewall ufw (uncomplicated firewall) vorinstalliert, aber standardmäßig nicht aktiv. Diese könnt ihr mit wenigen Schritten starten und einrichten.

sudo ufw enable (oder ... disable, um wieder auszuschalten!)
sudo ufw default deny incoming
sudo ufw default allow outgoing

Damit startet ihr ufw und die Vorgabe für unbekannte Verbindungen soll sein, diese nach außen (ins Internet) zuzulassen, aber eingehende Verbindungen erst einmal zu blockieren. Ufw startet damit auch automatisch beim nächsten Systemstart. Danach könnt ihr den Status der Firewall mit

sudo ufw status

überprüfen, bereits angelegte Ausnahmen (z.B. für P2P oder ssh) werden hier angezeigt. Wenn man keine besonderen Anforderungen hat, war’s das eigentlich schon. Ufw lässt sich über das Terminal umfangreich konfigurieren. Wie das geht und wie ihr anwendungs- oder portspezifische Ausnahmen hinzufügt, lest ihr hier bei heise.

Etwas praktischer und – naja – hübscher ist die grafische Frontend gufw für ufw. Damit lassen sich der Status und die Regeln wesentlich komfortabler verwalten. Der Funktionsumfang entspricht ungefähr dem, wie man es von der Windows-Firewall kennt.

Insofern ufw bereits installiert ist, holt ihr euch gufw einfach dazu

sudo apt install gufw

Virenscanner einrichten

Wenn man sich mit dem Thema auseinandersetzt, liest man früher oder später, das „Computerviren“ unter Linux keine große Rolle spielen. Das liegt unter anderem an der geringen Verbreitung [auf dem Desktop], aber bestimmt auch an der strengeren Benutzerrechte-Architektur. [1] Wahrscheinlich ist es eher meiner jahrelangen Windows-Nutzung geschuldet (Luke Filewalker hat mich damals unter Windows ME vor dem ein oder anderen Schädlich bewahrt), aber auch unter Linux wollte ich gerne einen Virenschutz parat haben, mit dem ich zumindest on demand die wichtigsten Daten (Home-Verzeichnis, Downloads etc.) scannen kann. Das populärste Beispiel dafür ist das quelloffene ClamAV. Vielleicht habt ihr schon einmal davon gehört, auch unter Windows ist der Virenscanner zu haben, wie ich 2014 schon einmal berichtete.

ClamAV lässt sich recht einfach installieren

sudo apt-get install clamav clamav-freshclam

und auch umfangreich konfigurieren, was beispielsweise das Updateverhalten, die Aktion bei Erkennung und das Logging angeht. Darauf möchte ich aber in diesem Beitrag nicht eingehen. Das könnt ihr z.B. hier nachlesen. Scans auf eine Datei oder ein Verzeichnis können im Terminal mit dem Befehl clamscan ausgeführt werden. Auch eine grafische Benutzeroberfläche gibt es (clamtk), die man sich dazuinstallieren kann, aber ich konnte damit nicht viel anfangen.

inoffizielle Signaturen

Ich möchte euch an dieser Stelle gerne noch etwas anderes zeigen: ClamAV kann um „inoffizielle“ Malware-Signaturen ergänzt werden, um die Erkennungsrate zu verbessern. Hier am Beispiel der SaneSecurity Signatures. [5] Das erhöht zwar potentiell die Chance für Falschmeldungen (false positives), das war bei mir aber bisher nur unter Windows der Fall.

Die Einrichtung dieser Signaturen besteht aus mehreren Installationsschritten, die ich hier aufgrund des Beitragsumfangs nicht einzeln durchgehen werden, aber auf der offiziellen github Seite ist eine ausführliche Schritt-für-Schritt Installationsanleitung für Ubuntu (auch für andere Distributionen).

Skript für manuelle Überprüfung

In meinem Anwendungsszenario, also einer Dual-Boot Installation mit Ubuntu als Produktivsystem und Windows 10 als Backup, wollte ich in unregelmäßigen Abständen Dateien überprüfen, die ich mit Windows-Rechnern gemeinsam bearbeite oder versende. Es ist bei mir also nicht notwendig, dass sich die Virensignaturen mehrmals am Tag selbstständig aktualisieren, das erhöht nur unnötig die Serverlast des Anbieters und verursacht Betriebskosten.

Um das Aktualisierungsintervall der Signaturen zu ändern, könnte ich die Konfigurationsdatei unter

/etc/clamav/freshclam.conf

anpassen (z.B. mit nano im Terminal!). Ich habe mich aber einfach dazu entschieden, den Dienst freshclam nicht beim Systemstart zu laden, weil er sowieso bei einem manuellen Aufruf zuerst beendet werden müsste. [6]

sudo update-rc.d clamav-freshclam disable

Die SaneSecurity Signaturen werden nicht automisch aktualisiert, sondern nur über den Aufruf des gerade installierten Skripts clamav-unofficial-sigs.sh.

Dann habe ich mir folgendes bash-Skript zusammenbastelt, das ich bei Bedarf ausführe. Ich möchte es hier mit euch teilen! 🙂 Es aktualisiert zunächst manuell und „still“ die Virendatenbank, führt dann einen Scan des Benutzerverzeichnisses durch und gibt ggf. Funde aus (es wird nichts unternommen!). Ihr könnt es euch als *.sh Skript speichern. Nach dem Anpassen eurer Dateipfade müsst ihr die Datei dann noch mit chmod als ausführbar markieren und ihr könnt die Datei wie eine Anwendung per Mausklick starten. Allerdings als root, da sonst das Aktualisieren der Signaturen nicht funktioniert.

#!/bin/bash
echo "Cedric's ClamAV Scanner-Skript 1.0"
if (( $EUID != 0 )); then
    echo "Bitte mit erhöhten Rechten starten!"
    exit
fi
echo -n "Aktualisiere ofizielle Signaturen... "
#sudo killall freshclam
freshclam --quiet --no-warnings
echo "OK"
echo -n "Aktualisiere inoffizielle SaneSec Signaturen... "
/usr/local/sbin/clamav-unofficial-sigs.sh -s
echo "OK"
#echo "EINGABE, um Scan zu starten"
#read
echo -n "Startzeit: "; date +"%T"
echo "Überprüfe /home ... "
clamscan --infected --recursive ~

SaneSec Signaturen: Erkennungsrate von ClamWin verbessern

clamwin3In einem früheren Beitrag habe ich bereits beschrieben, wie man den ClamWin Virenschutz optimal konfiguriert. ClamWin bietet sich besonders gut als zweiter Virenscanner an, da es pragmatisch leicht, gut zu konfigurieren, effektiv und Open Source ist (mal abgesehen davon, dass von Hause aus kein Echtzeitschutz enthalten ist).

Vor einiger Zeit habe ich eine tolle Möglichkeit gefunden, die Erkennungsraten noch einmal erheblich zu verbessern: sanesecurity.com bietet zusätzliche Signaturdatenbanken kostenlos für ClamAV zum Download an. Laut Hersteller kann die Erkennungsrate dadurch um bis zu 90% gesteigert und eine Genauigkeit von 97.11% erreicht werden.

Download und Installation

Ich setze voraus, dass ClamWin auf Windows installiert ist. Unter

http://sanesecurity.com/usage/windows-scripts/

findet ihr ein fertiges Kommandozeilen-Skript zum automatischen Download der neuen Signaturen. Außerdem benötigt ihr das Tool RSYNC, damit das Script funktioniert. Dieses kann hier heruntergeladen werden. Verschiebt den entpackten Skript-Ordner an einen beliebigen Ort (zum Beispiel Homeordner, oder ClamWin Programmverzeichnis), aus RSYNC benötigt ihr die Dateien aus dem /bin Ordner, welche ihr in den Ordner /winrsync des Update-Scripts kopiert.

Update-Script einrichten

Möglicherweise stimmen die voreingestellten ClamWin Verzeichnisse nicht mit den euren überein, weshalb eine Fehlermeldung beim Ausführen des Scripts ausgegeben wird. Startet also den Editor (notepad) mit Admin-Rechten und öffnet die sigupdate.bat. Dort sucht ihr die Zeilen

set logloc=C:\ProgramData\.clamwin\log

und außerdem

set db=C:\ProgramData\.clamwin\db

Prüft, ob die Verzeichnissangaben korrekt sind. Standardmäßig ist der .clamwin Ordner unter %ALLUSERSPROFILE% zu finden (In Ausführen eingeben!). Jetzt noch speichern, fertig.

Wenn ihr jetzt sigupdate.bat ausführt, sollte der Download starten.

sanesec1

Je nach Windows-Version und Benutzerrechte scheint das Skript Probleme mit den Zugriffsrechten zu haben. Falls ein solcher Fehler ausgegeben wird (permission denied), startet das Skript als Admin. Wenn das nicht funktioniert, öffnet die Kommandozeile (cmd) als Administrator, wechselt (cd) zum Skriptverzeichnis und führt dort manuell die sigupdate.bat aus. Das Ergebnis könnt ihr in der Logdatei unter C:\ProgramData\.clamwin\log\sigupdate.txt prüfen.

Signaturen auswählen

Die Malware-Datenbank von SaneSecurity kann beliebig modular ergänzt werden. Welche Signaturen zusätzlich heruntergeladen werden, steht in der Datei signames.txt. Dies ist für’s erste ausreichend. Auf dieser Seite findet ihr eine komplette Liste der weiteren möglichen Signaturen, inklusive Beschreibung. Dazu muss lediglich der Name in die signames.txt übernommen und ein erneuter Download ausgeführt werden.

sanesec2Ich habe die drei gelb markierten Einträge nachträglich hinzugefügt, um die Erkennungsrate mit einigen Malware-Hashes noch weiter zu verfeinern. Manche bzw. zu viele Signaturdatenbanken erhöhen allerdings auch das Risiko von Falschmeldungen und verlängern die Ladezeit von ClamScan.

 

Automatische Updates

SaneSecurity veröffentlicht stündlich aktualisierte Signaturen. Wenn ihr ClamAV als Virenschutz benutzt (zum Beispiel mit ClamSentinel), solltet ihr eure Datenbank aktuell halten. Hierzu nutze ich die windowseigene Aufgabenplanung (Systemsteuerung/Verwaltung). Wenn geöffnet, dann wählt mit Rechtsklick „Neue Aufgabe erstellen“. Dann konfiguriert das gewünschte Aktualisierungsintervall und die Ausführungsbedingungen nach euren Wünschen. Bei Aktionen gebt nun wegen den oben erwähnten Rechte-Problemen nicht den direkten Pfad zum Update-Skript ein, sondern lasst es über cmd laufen:

C:\Windows\System32\cmd.exe /k cd „C:\Program Files (x86)\ClamWin\sigupdate\“ & sigupdate.bat

beziehungsweise

Programm/Skript: C:\Windows\System32\cmd.exe

Argumente: /k cd „C:\Program Files (x86)\ClamWin\sigupdate\“ & sigupdate.bat

Den Ordnerpfad entsprechend anpassen. Der Parameter /k bewirkt, dass das Kommandozeilen-Fenster offen bleibt, so dass ihr das Ergebnis kontrollieren könnt (kann später wieder entfernt werden). Wichtig ist jetzt noch dass ihr im Reiter „Allgemein“, den Haken vor „Mit höchsten Privilegien ausführen“ setzt, damit das Skript als Administrator ausgeführt wird. Ihr könnt nun die Aktionen testen, in dem ihr im rechten Fensterbereich der Aufgabenplanung die Aufgabe manuell startet, oder startet den Computer neu. Fertig!