MacBook absichern

Nicht erst seit der NSA-Abhöraffäre sollte eigentlich das Thema Computer- und Datensicherheit an erste Stelle stehen, wenn ein neuer PC in Betrieb genommen wird – insbesondere wenn es sich um ein Notebook/Laptop handelt (das nicht nur leichter gestohlen werden kann, sondern auch eher für Unbefugte physikalisch zugänglich ist). Sicherheit sollte sich dabei aber nicht nur auf den unbefugten Zugriff auf die eigene Hardware und Daten beziehen, sondern natürlich auch auf die Vermeidung von Datenverlust.
Hier also ein 8-Punkte-Plan, um das Macbook etwas besser abzusichern:

  1. Anmelde-Kennwort/Systempasswort
    Es kann nicht oft genug wiederholt werden: Geburtstage, Kosenamen oder Zahlenfolgen wie 1234 sind keine guten Passwörter… Da nach der Anmeldung alle Daten unverschlüsselt vorliegen und (über gespeicherte Zugangsdaten) auch der Weg zu Online-Diensten meist offensteht, kann die Wichtigkeit eines starken Anmelde-Kennworts nicht überbewertet werden. Also: min. 8 Zeichen (je mehr desto besser) mit Sonderzeichen, Groß- und Kleinschreibung sowie Zahlen. Aber das ganze muss merkbar und in vertretbarer Zeit einzugeben sein, da das Systempasswort ja des Öfteren gebraucht wird. Und bitte ein Passwort verwenden, dass ausschließlich hier Anwendung findet (damit nicht ein kompromitierter anderer Dienst mit dem gleichen Kennwort die ganze Schutzstrategie aushebelt). Die Systemanmeldung/Kennwortwiederherstellung bitte nicht mit der Apple-ID verknüpfen, wir wollen ja Apple nicht den Zweitschlüssel zum System geben! Der Gast-Zugang zum System sollte sowieso standardmäßig ausgestellt sein (zu sehen unter: „Systemeinstellungen->Benutzer&Gruppen“).
  2. EFI-Passwort
    Zur hardwareseitigen Absicherung des MacBook muss ein EFI/Firmware-Passwort gesetzt werden. Damit kann, wenn das Macbook entwendet wird, der Dieb auch nicht einfach Mac OS X neu aufspielen und das Gerät benutzen. Dafür einfach das Macbook im Recovery-Modus starten, indem man bei Neustart cmd+R gedrückt hält. Dann unter „Dienstprogramme->Firmware-Kennwort“ ein Passwort setzen (evtl. kann es Schwierigkeiten mit US- bzw. deutschem Tastaturlayout geben. Wenn also das Passwort beim nächsten Mal, wenn man im Recovery-Modus startet, nicht erkannt wird, einfach mal versuchen bei Sonderzeichen die entsprechenden Tasten im US Layouts zu drücken: etwa ß statt -).
  3. FileVault 2
    Apple bietet mit der zweiten Version von FileVault die Möglichkeit, die gesamte Festplatte/SSD zu verschlüsseln. Da nun für den Zugriff auf das MacBook das Anmeldekennwort erforderlich ist, sollte es entsprechend sicher sein – und nicht Wiederherstellung mit der Apple-ID verknüpft werden (s.o.)! Damit erhält jeder bei Apple den Schlüssel für deine Daten! Also die Verbindung von Anmeldekennung und Apple-ID gar nicht erst herstellen. Dann kann unter „Systemeinstellungen->Sicherheit->FileVault“ die Verschlüsselung aktiviert werden (den Wiederherstellungsschlüssel dabei ebenfalls nicht bei Apple speichern…).
  4. Ruhezustand/Passwort
    Solange das Macbook läuft und zugänglich ist, sind die Daten ungeschützt. Daher sollte das MacBook nach einer nicht all zu langen Zeit der Untätigkeit in den Ruhezustand geschickt werden und dieser sich nur nach Kennworteingabe beenden lassen! Dafür unter „Systemeinstellungen->Sicherheit->Allgemein“ Kennwort erforderlich nach Beginn des Ruhezustands oder Bildschirmschoners auf „sofort“ setzen (und den Ruhezustand unter „Systemeinstellungen->Energie sparen“ setzen). Zur maximalen Absicherung lässt sich auch noch einstellen, dass beim Standby das Passwort für FileVault nicht im EFI gespeichert wird. Hier ein Anleitung.
  5. Firewall
    Ich nehme an, um evtl. Nachfragen bei Kundenproblemen zu minimieren, hat Apple sich dafür entschieden, die Firewall in Mac OS X standardmäßig zu deaktivieren. Diese kann aber einfach über „Systemeinstellungen->Sicherheit->Firewall“ aktiviert werden.
  6. Datensicherung
    Zum Schutz vor Datenverlust ist eine regelmäßige Datensicherung unerlässlich. Mit Apples TimeMachine steht dafür ein einfach zu bedienendes Tool zur Verfügung. Die Sicherung kann auf eine externe Festplatte (direkt am Mac angeschlossen oder über eine AirPort-Extreme-Station) oder eine TimeCapsule erfolgen. Darauf achten, bei der Einrichtung von TimeMachine auch die Verschlüsselung des Backups zu aktivieren! Noch besser ist es natürlich, die Sicherung abwechselnd auf zwei Festplatten durchzuführen – auch das lässt sich über Time Machine einfach einstellen. Eine der Sicherungen sollte dann selbstverständlich an einem anderen Ort aufbewahrt werden (sonst bringt auch die doppelte Sicherung etwa bei einem Feuer wenig).
  7. Virenscanner
    Bei Daten/ USB-Sticks aus unsicheren Quellen kann es auch auf dem Mac nicht schaden, vor Nutzung/Sichtung einen Virenscanner drüberlaufen zu lassen. Über den App-Store lässt sich etwa leicht ClamXav installieren (dieser Virenscanner läuft nicht im Hintergrund, sondern muss bei Bedarf manuell gestartet werden).
  8. E-Mail-Kommunikation
    Wer Apple Mail nutzt und seine E-Mails mit GPG End-to-End verschlüsselt versenden will, findet dazu hier eine gute Anleitung.

re:oyd (8): OwnCloud@Pogoplug V2

Unser Server läuft soweit, also geht es jetzt daran, OwnCloud zu installieren.

  1. Dafür wechseln wir zunächst in unser Webserververzeichnis
    cd /srv/http
  2. Dann laden wir die neueste OwnCloud Version herunter
    wget http://owncloud.org/releases/owncloud-4.5.5.tar.bz2
  3. die wir anschließend entpacken
    tar -xjf owncloud-4.5.5.tar.bz2
  4. und zu guter letzt noch den Besitzer der Dateien anpassen
    chown -R http:http /srv/http/owncloud/

Unser OwnCloud-Server sollte dann am Ende unter https://royd.dnsd.me/owncloud/ erreichbar sein. Damit OwnCloud läuft, müssen wir aber noch unseren Webserver und unsere php-Installation anpassen. Beginnen wir mit den Änderungen an der
nginx-Konfigurationsdatei (/etc/nginx/nginx.conf) (ACHTUNG, nur ausschnittsweise Darstellung der Datei):

server {
       listen       443;
       client_max_body_size 1000M; # UPLOAD-DATEIGRÖSSE
       #...
       location / {
            server_name   royd.dnsd.me; #ACHTUNG server_name IN DER GESAMTEN DATEI ANPASSEN!
            root   /srv/http;
            index index.php index.html index.htm;

            rewrite ^/cloud/.well-known/host-meta /public.php?service=host-meta last;
            rewrite ^/cloud/.well-known/carddav /remote.php/carddav/ redirect;
            rewrite ^/cloud/.well-known/caldav /remote.php/caldav/ redirect;
            rewrite ^/cloud/apps/calendar/caldav.php /remote.php/caldav/ last;
            rewrite ^/cloud/apps/contacts/carddav.php /remote.php/carddav/ last;
            rewrite ^/cloud/apps/([^/]*)/(.*.(css|php))$ /index.php?app=$1&getfile=$2 last;
            rewrite ^/cloud/remote/(.*) /remote.php/ last;
            #error_page 403 /cloud/core/templates/403.php;
            #error_page 404 /cloud/core/templates/404.php;

            try_files $uri $uri/ @webdav;
            }

            # Direkten Zugriff auf Daten unterbinden
            location ~ /(data|config|.ht|db_structure.xml|README) {
                        deny all;
            }

    location @webdav {
                    fastcgi_split_path_info ^(.+.php)(/.*)$;
                    unix:/var/run/php-fpm/php-fpm.sock;
                    fastcgi_param SCRIPT_FILENAME /srv/http$fastcgi_script_name;
                    fastcgi_param HTTPS on;
                    fastcgi_param HTTP_AUTHORIZATION $http_authorization;
                    fastcgi_param htaccessWorking true;
                    include fastcgi_params;
     }
}

Als nächstes müssen wir noch in der php-Konfigurationsdatei (/etc/php/php.ini) einige Zeilen auskommentieren. Das Rautezeichen # muss vor den folgenden Zeilen gelöscht werden:

xmlrpc.so
zip.so
gd.so
pdo_sqlite.so
sqlite3.so
extension=iconv.so
extension=openssl.so

Zu guter Letzt starten wie noch nginx und php-fpm neu

systemctl restart nginx
systemctl restart php-fpm

Jetzt sollte sich OwnCloud über https://royd.dnsd.me/owncloud/ einrichten lassen. Und natürlich muss noch der entsprechende Mac-Client heruntergeladen und eingerichtet werden. Wer für sein abzugleichendes OwnCloud-Verzeichnis auf dem Mac noch ein passendes Icon sucht, hier gibt es zwei die benutzt werden könnten:

/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/SidebariCloud.icns
/Programme/owncloud/Resources/ownCloud.icns

OwnCloud muss zwischendurch diverse Aktualisierungen durchführen. Standardmäßig wird dafür AJAX verwendet, um diese bei Seitenaufruf auszuführen. Wir können diese Aufgabe allerdings auch in einen Cron-Job auslagern.

  1. Dafür muss im Administrationsmenü von OwnCloud unter Cron-Jobs die Einstellung von AJAX auf CRON umgestellt werden.
  2. Anschließend fügen wir einen entsprechenden Cron-Job der jede Minute ausgeführt wird in ArchLinux ein:
    crontab -e
    * * * * * php -f /srv/http/cloud/cron.php
    

EDIT: Gerade diesen Blog gefunden, wo das gleiche Projekt verfolgt wird.

EDIT2: Weiterführender Link zum Thema nginx und OwnCloud.

re:oyd (7): Dynamisches DNS@Pogoplug v2

Damit unsere Server bei wechselnder IP-Adresse (aufgrund der 24h Zwangstrennung) von außen erreichbar bleibt, bietet es sich an, einen Anbieter von DDNS Services zu nutzen. Der wohl bekannteste, DynDNS bietet leider keine kostenlosen Accounts mehr an. Es gibt aber Alternativen, etwa DNSdynamic. Glück hat, wer einen Router sein eigen nennt, der mit entsprechenden kostenlosen Anbietern zusammenarbeitet. Mein Netgear DGND3800B kennt leider bisher nur DynDNS. Eine Anfrage beim Support stellt zwar in Aussicht, dass ein zukünftiges Firmeware-Update weitere Anbieter hinzufügen wird, aber bis dahin muss Abhilfe geschaffen werden. Da der pogoplug als Server ja sowieso den ganzen Tag läuft, kann er auch gleich die IP-Adresse bei DNSdynamic auf dem aktuellen Stand halten. Dafür brauchen wir nur ein Account, ein bisschen bash-Programmierung und eine cron-job.

  1. Als erstes richten wir unseren Account bei DNSdynamic ein: Accoutname: „MEIN@ACCOUNT.DE“, Passwort: „PASSWORT“, URL: „royd.dnsd.me“ – ist doch gut zu merken ;-)
  2. Eine Datei myDNSdynamic.ip ohne Inhalt und eine Datei updateIP.sh mit folgendem Inhalt im Verzeichnis „/usr/sbin“ erstellen:
    #!/bin/sh
    FILE="/usr/sbin/myDNSdynamic.ip"; #DATEI IN DER DIE JEWEILS LETZTE IP GESPEICHERT WIRD
    MYOLDIP=`head -n 1 $FILE`;
    MYIP=$(wget -O - -q icanhazip.com); #AKTUELLE IP ABRUFEN
    if [ "$MYIP" != "$MYOLDIP" ]  #WENN SICH IP GEÄNDERT HAT, BEI DNSDYNAMIC AKTUALISIEREN
            then
            echo $MYIP > $FILE; 
            URL="https://www.dnsdynamic.org/api/?hostname=royd.dnsd.me&myip="${MYIP};
            wget -O - -q --user MEIN@ACCOUNT.DE --password PASSWORT $URL;
    fi 
    
  3. Die gerade erstellte Datei ausführbar machen:
    chmod +x /usr/sbin/updateIP.sh
  4. Und jetzt noch einen cron-job erstellen, der die Datei alle 5 Minuten aufruft:
    crontab -e

    Folgenden Inhalt einfügen:

    */5 * * * * /bin/sh /usr/sbin/updateIP.sh