Laptop absichern – Kapitel 1: Grundlagen – Abschnitt 2: Sicherheit

Abschnitt 2: Sicherheit

„Es gibt keine absolute Sicherheit“ oder „Sicherheit ist relativ“.

Wie sicher ist sicher?

Eines sollte von Anfang an klar sein: genauso wenig, wie es fehlerfreie Software gibt, genauso wenig, kann es absolute Sicherheit geben. Man sollte niemandem vertrauen, der allen ernstes sagt, dass nach der Installation von Software XY oder mit diesem oder jenem Verhalten „absolut sicher“ mit dem Laptop gearbeitet werden kann. Was folgt daraus?

Das Ziel

Es kann immer nur um relative Sicherheit gehen – oder besser gesagt: das Ziel ist Risikoverminderung. Man möchten, dass die Wahrscheinlichkeit für das Eintreten eines sicherheitskritischen Vorfalls kleiner wird.

Während wahrscheinlich für viele die Aussage, dass absolute Sicherheit eine Illusion ist, noch logisch erscheine mag, verwirrt der folgende zweite Punkte wohlmöglich zunächst: es geht nicht um die maximal mögliche Sicherheit und nicht um eine Risikominimierung. Aber worum geht es denn dann?

Es geht um das richtige Maß an Sicherheit und eine angemessene Risikoverminderung.

Zur Erklärung

Es gibt mehrere Aspekte, weshalb ich im Rahmen dieser Artikelserie über das Absichern des Laptops für Einsteiger auf Superlative wie maximale Sicherheit und minimale Risiko verzichte. Erstens bin ich davon überzeugt, dass die meisten, die mit solchen Superlativen hantieren oder werben, mehr versprechen, als sie dann tatsächlich halten können. Zweitens wiegen sie einen in falscher Sicherheit, da zwischen maximaler und absoluter Sicherheit für mich gefühlt kaum ein Unterschied besteht. Drittens  steigt der Aufwand mit dem Sicherheitsniveau eher exponentiell als linear an (alternativ könnte man auch den Pareto-Effekt heranziehen). Sprich: maximale Sicherheit ist auch maximal teuer und/ oder maximal aufwändig.

?

Das Paretoprinzip oder die 80-20-Regel besagt, dass mit 20 Prozent Aufwand 80 Prozent des Ergebnisses erreicht werden. Für die letzten 20 Prozent des Ergebnisses sind dann aber 80 Prozent Aufwand nötig.

Das allein wäre ja, wenn man es sich leisten kann und will, nicht weiter tragisch. Allerdings bedeutet ein steigender Aufwand oftmals, dass man eigentlich sinnvolle Sicherheitsmaßnahmen dann doch nur selten nutzt oder umgeht, und damit vielleicht ganz außer Kraft setzt.

Ich würde aber ohnehin soweit gehen, zu sagen, dass maximale Sicherheit für die meisten normalen Nutzer gar nicht notwendig ist. Denn nicht nur Sicherheit ist immer relativ. Die Bedrohungslage jeder Nutzerin und jeden Nutzers unterscheidet sich. Damit ist auch das individuelle Risiko immer relativ. Daher sollte man sich zu Beginn auch mit dem Risikoaspekt einmal auseinandersetzen.

Abbildung 2: "Pokal-Graph"
Abbildung 1: „Pokal-Graph“

Letztlich geht es dabei um eine Kosten-Nutzen-Analyse. Der Versuch, maximale Sicherheit umzusetzen, kann das Aufwands- oder Kostenniveau fast beliebig nach oben treiben. Genauso gut, kann aber auch minimale Sicherheit beziehungsweise der gänzliche Verzicht auf jedwede Sicherheitsmaßnahmen den Aufwand und die Kosten explodieren lassen.

Dabei muss man nicht immer gleich an den Freiberufler denken, dessen Arbeitsleistung aufgrund einer kaputten Festplatte und eines nicht durchgeführten Backups für immer verloren ist. Allein der Zeitaufwand, einen Rechner ganz neu einzurichten, infizierte Dateien sicher von Viren zu befreien oder eine teuer bezahlte Datenrettung sollten Grund genug sein, um sich mit der grundlegenden Absicherung des eigenen Laptop zu beschäftigen. Dabei sollte man das richtige Maß finden, oder anders gesagt: den „Grund des Pokals“ (s. Abbildung 1).

Um das richtige Maß an Sicherheit zu finden, muss man sich einige Gedanken machen. Etwa Gedanken darüber, was es überhaupt abzusichern gibt. Aber auch darüber, vor wem oder was etwas abgesichert werden soll. Jeder Nutzer muss entscheiden, wieviel er für überhaupt für Sicherheit ausgeben kann oder will. Auch einige der hier vorgestellten Sicherheitstipps, sind nicht ganz kostenlos umzusetzen – und selbst „kostenlose“ Sicherheitstipps kosten in der Umsetzung zumindest einmalig oder sogar regelmäßig Zeit(ressourcen).

Während der eigene finanzielle Spielraum und die Investitionsbereitschaft noch leicht zu eruieren sind, fällt dies für die möglichen Ausgaben im Fall eines Schadens schon nicht mehr so leicht. Zumal dabei nicht einfach nur die tatsächliche Schadensumme, im Sinne von notwendiger Zeitinvestition und Geldaufwand zum Wiederherstellen des Status quo ante, als vor dem Eintreten des Schadens, berücksichtigt werden sollte.

Vielmehr müsste für jeden möglichen Schadensfall zusätzlich einkalkuliert werden, wie wahrscheinlich es überhaupt ist, dass genau dieser Fall eintritt. Ein unwahrscheinlicher Schadensfall mit hohen Kosten müsste also anders kalkuliert werden, als ein Schadenfall der zwar weniger Kosten verursachen, dafür aber sehr viel wahrscheinlich oder sogar häufiger auftreten kann.

Daher wird sich der nächste Abschnitt mit dem Thema Risiko auseinandersetzen. Denn das Risiko ist nicht nur schadenspezifisch, sondern auch individuell unterschiedlich.

Zurück zu Abschnitt 1: Einleitung
Weiter zu Abschnitt 3: Risiko

Laptop absichern – Kapitel 1: Grundlagen – Abschnitt 1: Einleitung

Kapitel 1: Grundlagen

Quelle: openclipart.org
Quelle: openclipart.org

„Wer hohe Türme bauen will, muss lange beim Fundament verweilen.“
Anton Bruckner

Mit den folgenden Beiträgen dieser Artikelserie möchte ich einige grundlegende Tipps zusammenstellen, welche die Sicherheit bei der täglichen Arbeit mit dem Notebook bzw. Laptop erhöhen. Viele Tipps eigenen sich aber auch zur Nutzung mit stationären PCs. Eigentlich sollte das ganze mal in ferner Zukunft ein Buch (oder zumindest ein EBook) werden – und bezog sich explizit auf die Absicherung des MacBook. Mit dem Projekt wollte ich mich gleichzeitig in iBook Author einarbeiten. Irgendwie finde ich das Programm aber ziemlich schrecklich, so dass ich mit den Inhalten jetzt doch meinen Blog bespielen werde. Nach meinem Wiederumstieg auf GNU/Linux veröffentlich ich jetzt die bestehenden Kapitel noch einmal ohne direkt Mac-Bezug.

Ich wünsche viel Spaß beim Lesen und Umsetzen. Noch ein Hinweis vorweg: alles was folgt, richtet sich explizit an Einsteiger.

Abschnitt 1: Einleitung

„Beginne am Anfang“ sagte der König ernst, „und fahre fort, bis du ans Ende kommst: dann höre auf.“
Lewis Carroll

Zum Aufbau

Für die Artikelserie plane ich neben dieser Einleitung etwa zehn Kapitel. Jedes der Kapitel beleuchtet einen wichtigen Sicherheitsaspekt für Laptops. Die einzelnen Kapitel müssen nicht unbedingt in der veröffentlichen und nummerierten Reihenfolge gelesen oder die darin enthaltenen Sicherheitstipps in dieser Abfolge umgesetzt werden. Allerdings werde ich versuchen, die zusammengestellten Tipps in eine sinnvolle Reihenfolge zu bringen. Diese orientiert sich vor allem daran, wie einfach die Tipps umzusetzen sind. Außerdem werden ich zunächst ganz grundsätzliche Sicherheitshinweise geben. Es macht daher durchaus Sinn, der Artikelserie in der durch die Kapitelnummerierung vorgeschlagenen Reihenfolge zu folgen.

An einigen Stellen im Text werde ich, neben dem Fließtext und den erklärenden Grafiken zur Umsetzung der Sicherheitstipps, drei Arten von Hinweiskästen einbauen. Was die jeweilen Kästen bedeuten, kann im Folgenden nachgelesen werden.

!

Mit einem Ausrufezeichen und rotem Rand versehene Kästen enthalten Umsetzungshinweise. Diese Hinweise sollten bei der Umsetzung des Sicherheitstipps beachtet werden. Es könnte zum Beispiel der Fall sein, dass ein Sicherheitstipp neben der Erhöhung der Sicherheit noch andere, nicht intendierte oder unmittelbar erkennbare Folgen hat.

*

Ein blauer Kasten mit einem Stern weißt auf weiterführende Literatur und / oder interessante Links und Quellen hin.

?

Ein grauer Kasten mit Fragezeichen zeigt an, dass es sich bei dem Text im Kasten um eine weiterführende Erklärung handelt, die für die Umsetzung des Sicherheitstipps nicht unbedingt gelesen werden muss.

Auf jeden Fall sollte jeder rote Hinweiskasten zur Kenntnis genommen werden, bevor der dazugehörige Sicherheitstipp umgesetzt wird.

Zu den Sicherheitstipps

Alle Ausführungen zu den Sicherheitstipps versuch ich möglichst generell zu halten, so dass sie auf jedem Laptop, unabhängig vom Hersteller und theoretisch auch unter unterschiedlichen Betriebssystem (GNU/Linux, Windows, macOS), genutzt werden können. Wenn es um konkrete Software geht, werde ich wenn möglich auf solche FOSS-Projekte (Free and Open Source Software) setzen, die auf allen Betriebssystemen laufen (oder Alternativen für jedes Betriebssystem angeben).

Es kann sein, dass die Tipps bei einzelnen Laptops oder bestimmten Betriebssystemversionen nicht (mehr) funktionieren oder sich nicht mit genau den selben Schritten umsetzen lassen. Dementsprechende Hinweise können gerne in den Kommentaren angebracht werden.

?

Welche Version des Betriebssystems auf dem eigenen Laptop läuft, bekommt man wie folgt heraus:

GNU/Linux: welche Distribution läuft, sollte wohl jeder Nutzer wissen. Die aktuell genutzte Kernel-Version liefert „uname -r“ auf der Konsole/ im Terminal.

Windows: Die akutelle Build-Version (für Windows 7, 8 und 10) bekommt man angezeigt, wenn man „Windows-Taste + R“ drückt, dann „winver“ eintippt und mit Enter bestätigt. Wer noch Windows XP benutzt, muss sofort auf eine aktuelle Windows Version umsteigen, die noch mit Sicherheitspatches versorgt wird!

macOS: auf ihrem Mac aktuell läuft, können sie mit einem Klick auf das Apfel-Icon oben links in der Menübar herausfinden. Nach dem Linksklick auf das Icon wählen sie einfach „Über diesen Mac“ im Menü aus.

Weiter zu Abschnitt 2: Sicherheit

re:oyd (17): Baikal 0.4.6@Raspberry Pi an Unitymedia Connect Box mit IPv6

matriochkaWarum sollte man alle seine Termine und die Adressen, Telefonnummern und Geburtstage seiner Bekannten irgendeinem Konzern frei Haus liefern? Das sollte man natürlich nicht. Besser sind solche Daten auf dem eigenen Server Zuhause aufgehoben. Und selbst wenn man die Daten mit Notebook und Smartphone abgleichen will, braucht es dafür keinen Hightech-Server – ein Raspberry Pi und der CardDAV / CalDAV Server Baikal machen es möglich.

Ich gehe im Folgenden einfach mal davon aus, dass der Raspberry Pi schon mit Raspbian läuft.

Große Einschränkung vorweg: Mit der folgenden Einrichtung ist der Raspberry Pi nur aus IPv6 Netzen heraus erreichbar (also nicht über noch auf IPv4 setzende Mobilfunknetze oder eduroam).

1. IPv6 Portweiterleitung an der Unitymedia Connect Box

Damit unser Server auch von außen erreichbar ist, muss bei der Connect Box das Port Forwarding auf die IPv6 Adresse des Raspberry Pi eingerichtet werden. Dafür muss das Administrationsmenü der Connect Box über den Browser aufgerufen werden (etwa durch http://192.168.0.1). Zunächst rufen wir in der  linken Seitenleiste unter „Erweiterte Einstellungen“ den Punkt „DHCP“ auf. Wenn man nach unten scrollt erscheint die Überschrift „Reservierte IP Adressen“. Hier setzen wir in der Tabellenzelle einen Haken/Punkt vor dem Raspberry Pi. Damit wird automatisch dessen MAC Adresse unter „Reservierte Regel hinzufügen“ eingesetzt. Jetzt noch die IP Adresse festlegen (etwa 192.168.0.10) und auf „Regel hinzufügen“ und dann „Änderungen übernehmen“ klicken.

Ebenfalls in der Tabelle unter „Reservierte IP Adressen“ finden wir in der Zeile des Raspberry Pi in der Spalte „IP Adresse“ dessen IPv6 Adresse in der Form 1111:111:1111:111:1111:1111:1111:1111. Diese kopieren wir uns. Jetzt rufen wir in der  linken Seitenleiste unter „Erweiterte Einstellungen“ den Punkt „Sicherheit“ und dort den Unterpunkt „IP und Port Filter“ auf. Unter dem Punkt „IPv6 Port Filter“ muss „Eingehend“ angehakt sein. Dann auf „Eine neue Regel erstellen“ klicken. Im folgenden Fenster muss „Aktiviert“ und Traffic policy „Ja“ angehakt sein. Als Protokoll wählen wir „TCP“ aus, als Quell IP-Adresse „Alle“ und als Ziel IP-Adresse „Single“. Im das aufgehenden Feld „IPv6 Adresse“ kopieren wir die IPv6 Adresse des Raspberry Pi. Die Quell Port Range stellen wir auf „Manuell“, Start auf „80“, Ende auf „80“ – das gleiche für die Ziel Port Range. Zum Abschluss auf „Regel hinzufügen“ klicken. Im Hauptfenster von IP und Port Filter dann noch auf „Änderungen übernehmen“ klicken. Jetzt wiederholen wir das ganz und fügen eine zweite Regel hinzu, nur das alle Port Wert statt 80 jetzt 433 lauten. Danach sollten alle HTTP und HTTPS Anfragen von Außen an den Raspberry Pi durchgereicht werden.

2. DNS – Domain für Weiterleitung auf IPv6 Adresse einrichten

Theoretisch ist der später auf dem Raspberry Pi laufende Webserver auch allein über die IPv6 Adresse von außen erreichbar (also bspw. mit „http://[1111:111:1111:111:1111:1111:1111:1111]/index.php“ im Browser aufrufbar). Aber kaum jemand möchte sich wohl die lange IPv6 Adresse merken. Außerdem funktioniert der Aufruf zwar im Browser, wenn man die Adresse für die Verbindung zum CalDav/CardDav etwa unter macOS für Kontakte und Kalender nutzen möchte, akzeptieren die Appel Programme eine solche Adresse nicht als Serveradresse. Daher brauchen wir noch eine Domain, die auf die IPv6 Adresse verweist. Kostenlos gibt es die etwa bei freedns.afraid.org. Einfach auf der Seite einen Account anlegen. Dann im linken Menü auf „Subdomains“ klicken und eine neue Subdomain anlegen und mit der kopierten IPv6 Adresse verknüpfen. Dafür muss im Formular der Type auf „AAAA“ geändert werden. Dann noch einen Namen für die Subdomain eintragen (im Folgenden „SUB“) und die Domain auswählen (im Folgenden „DOMAIN.XYZ“). Als Destination wird dann die IPv6 Adresse des Raspberry eingetragen, das Captcha gelöst und auf „Save!“ geklickt. ACHTUNG: Bis der Raspberry Pi tatsächlich über SUB.DOMAIN.XYZ erreichbar ist, kann es einige Zeit – bis zu mehreren Stunden – dauern.

3. Webserver installieren und SSL Verschlüsselung einrichten

Jetzt brauchen wir zur Vorbereitung nur den schnellen, kleinen Webserver nginx, die Scriptsprache php und sqlite als ressourcensparende Datenbank installiert. Dafür melden wir uns zunächst mittels ssh auf dem Raspberry Pi an (etwa mit „ssh pi@192.168.0.10“) und rufen dann folgenden Befehl auf:

sudo apt-get install nginx php5 php5-fpm php-pear php5-common php5-mcrypt php5-mysql php5-cli php5-gd sqlite php5-sqlite

Bevor wir den Webserver starten, sind noch zwei Einstellungen anzupassen, damit er auf dem nicht ganz so potenten Raspberry Pi anständiger läuft: in der Daten „/etc/nginx/nginx.conf“ reduzieren wir die Zahl der „worker_processes“ von 4 auf 1 und die der „worker_connections“ von 768 auf 128.
Damit wir später unsere wertvollen Daten nicht ungesichert durchs Netz schicken – sonst hätten wir nicht viel gewonnen – , muss die Datenübermittlung mittels SSL gesichert werden. Dafür erzeugen wir uns nun zunächst ein eigenes Zertifikat mit entsprechendem Schlüssel, indem wir folgende Befehle hintereinander ausführen:

sudo mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
sudo openssl genrsa -out baikal.key 4096
sudo openssl req -new -sha256 -key baikal.key -out baikal.csr

Jetzt signieren wir das Zertifikat noch selber (daher moniert der Browser später auch unser Zertifikat, weil es nicht von einer „vertrauenswürdigen“ Institution signiert wurde – wir können ihm aber trotzdem beibringen, das Zertifikat dauerhaft zu akzeptieren). Bei den Abfragen braucht nur bei „Country Name“ „DE“ für Deutschland und bei „Common Name“ einfach SUB.DOMAIN.XYZ eingeben (oder wenn man keine will die IPv6 Adresse des Raspberry Pi).

sudo openssl x509 -req -sha256 -days 3650 -in baikal.csr -signkey baikal.key -out baikal.crt

Jetzt geht es daran, nginx richtig einzustellen, damit der Webserver unser Zertifikat kennt, die Verbindung immer verschlüsselt hergestellt und php genutzt wird. Dazu passen wir die Datei „/etc/nginx/sites-available/default“ wie folgt an:

server { 
    listen 80; 
    listen [::]:80 ipv6only=on;
    server_name SUB.DOMAIN.XYZ; # die IPv6Adresse muss in eckigen Klammern stehen, wenn der Domainname verwendet wird, keine Klammern benutzen
    rewrite ^ https://$server_name$request_uri? permanent; # immer https verwenden 
}
 
server {
    listen 443 ssl; 
    listen [::]:443 ssl ipv6only=on; 
    server_name SUB.DOMAIN.XYZ; # die IPv6Adresse muss in eckigen Klammern stehen, wenn der Domainname verwendet wird, keine Klammern benutzen
    ssl_certificate /etc/nginx/ssl/baikal.crt;  # unsere Zertifikat benutzen
    ssl_certificate_key /etc/nginx/ssl/baikal.key; # unseren Schlüssel benutzen

        root /var/www;
        index index.html index.htm index.php;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ /index.html;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }

        location /doc/ {
                alias /usr/share/doc/;
                autoindex on;
                allow 127.0.0.1;
                allow ::1;
                deny all;
        }

    location ~ ^(.+.php)(.*)$ { # damit PHP richtig genutzt wird
        try_files $fastcgi_script_name =404;
        fastcgi_split_path_info  ^(.+.php)(.*)$;
        fastcgi_pass   unix:/var/run/php5-fpm.sock;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        include        /etc/nginx/fastcgi_params;
    }

    rewrite ^/.well-known/caldav /baikal/html/dav.php redirect;
    rewrite ^/.well-known/carddav /baikal/html/dav.php redirect;

    charset utf-8;

    location ~ /(.ht|Core|Specific) {
        deny all;
        return 404;
    }
}

Damit unsere Änderungen auch angenommen werden, starten wir alles neu:

sudo /etc/init.d/nginx restart
sudo /etc/init.d/php5-fpm restart

4. Baikal installieren

Als nächstes bereiten wir die Installation von Baikal vor (die aktuellste Fassung findet ihr unter https://github.com/fruux/Baikal/releases):

cd /var/www
sudo wget https://github.com/fruux/Baikal/releases/download/0.4.6/baikal-0.4.6.zip
sudo unzip baikal-*.zip
sudo rm baikal-*.zip
sudo chown -R www-data:www-data baikal/
cd baikal
sudo touch Specific/ENABLE_INSTALL
sudo chmod 755 Specific/
sudo chmod 755 Specific/db/

Um Baikal nutzen zu können, braucht der CalDAV / CardDAV Server jetzt nur noch unter „https://[IPv6Adresse]/baikal/html/admin/install/“ bzw. „https://SUB.DOMAIN.XYZ/baikal/html/admin/install/“ installiert werden. Damit unter Windows 10 die Anmeldung funktioniert, muss bei den Einstellung „WebDAV authentification type“ auf „Basic“ gestellt werden (außerdem muss beim Anlegen des Benutzers eine Mail-Adresse als Benutzername verwendet werden).

Nach Installation und der Einrichtung der Benutzer, Kalender und Telefonbücher können diese in den entsprechenden Programmen genutzt werden:
CalDav/CardDav (allgemein):

https://SUB.DOMAIN.XYZ/baikal/html/dav.php/calendars/BENUTZER/KALENDER/
https://SUB.DOMAIN.XYZ/baikal/html/dav.php/addressbooks/BENUTZER/TELEFONBUCH/

CalDav/CardDav (für iOS/macOS):

https://SUB.DOMAIN.XYZ/baikal/html/dav.php/principals/BENUTZER/

Weiterführende Links und Dank an:
Jan Karres
Andrew Oberstar
ruhezustand.net