-=Kernel-Error=-

IT security, FreeBSD, Linux, mail server hardening, post-quantum crypto, DNS, retro computing & hands-on hardware hacks. Privater Tech-Blog seit 2003.

Seite 46 von 46

DAVfs2 und GMX: WebDAV unter Linux einrichten

Mit davfs2 den 1GB großen GMX Account als Laufwerk einbinden.

Den GMX Account gibt es kostenlos und man hat die Möglichkeit ihn mit bis zu 1GB Daten zu füttern. Fast jeder Linux User hat schon in den Konqueror ein: webdavs://mediacenter.gmx.net/ getippert und dort einige Daten zwischengelagert oder sonst etwas damit angestellt!

Wäre es nicht aber eine wunderbare Sache diesen Speicherplatz zu mounten und dann so nutzen zu können wie jedes andere „normale“ Laufwerk?

Ein großer Vorteil ist die Erreichbarkeit. Denn fast alles läuft über https. Ist also fast in jeder Firewall offen und es ist verschlüsselt. Was will man mehr?

Wer es nun einrichten möchte, sollte wie folgt vorgehen:

1.
Zuerst muss das Paket „davfs2“ installiert werden. Gentoo User machen einfach mal ein emerge -a davfs2. Unter /etc/davfs2 müssen in der Datei ’secrets‘ die Accountdaten für das GMX-Mediacenter, nach folgendem Schema, gespeichert werden:

# 1. Account
https://XXXXXXXX@mediacenter.gmx.net/ XXXXXXXX „Passwort1“
# 2. Account
https://YYYYYYYY@mediacenter.gmx.net/ YYYYYYYY „Passwort2“

Die Buchstabenreihe ist hier gegen die achtstellige Kundennummer des Accounts zu ersetzten. In der Datei wird nun das Kennwort im Klartext stehen. Aus diesem Grund sollte die Datei nur vom root zu lesen sein chmod 0600!

2.
Mountpunkte setzen und User-Mount erlauben

Zuerst muss im Dateisystem für die externen Datenspeicher ein Mountpunkt angelegt werden. In diesem Beispiel werden ‚/mnt/extern1‘ resp. ‚extern2‘ verwendet.

Die Datei /etc/fstab wird sodann um die zwei Mounpunkte und den Mountparametern erweitert:

https://XXXXXXXX@mediacenter.gmx.net/ /mnt/extern1 davfs user,noauto 0 0
https://YYYYYYYY@mediacenter.gmx.net/ /mnt/extern2 davfs user,noauto 0 0

 Als root kann man nun mit mount /mnt/extern1 den externen Webdav-Datenspeicher einbinden. Damit aber ein normaler User die Mediacenter mounten kann, müssen zusätzliche Vorkehrungen getroffen werden.

Auf /usr/lib/mount-davfs-2.6 muss das SUID-Bit als root mit chmod 4755 gesetzt werden. Wer einen 2.4er-Kernel verwendet, nimmt /usr/lib/mount-davfs-2.4.

Der herkömmliche Benutzer besitzt keine Schreibrechte auf /var/run/mount.davfs. Da in diesem Verzeichnis die PID des Mountprozesses abgelegt wird, sollte man als root die Berechtigungen bspw. mit chmod auf ‚0770‘ setzen und die Gruppe des Verzeichnisses mit chgrp auf ‚users‘ (z.B.) setzen. Hier kann man verfahren wie man möchte, Hauptsache ist nur, dass der oder die Benutzer das Verzeichnis schreiben dürfen. Allerdings empfiehlt sich ein chmod 0777 nicht unbedingt.

Als letzten Schritt kopiert man die Datei /etc/davfs2/secrets in das Homeverzeichnis des entsprechenden Benutzers in den Ordner ~/.davfs2. Auch hier muss die Datei secrets die Zugriffsrechte 0600 aufweisen.

Fragen? Einfach melden.

SSH/OpenSSH

SSH (SecureShell) ist inzwischen sehr verbreitet. Es hat bzw. sollte Telnet überall ersetzt haben. SSH nutz eine Verschlüsselung um zwischen zwei Rechnern Daten auszutauschen. SSH kann aber noch vieles mehr. Z.B. kannst du mit scp einfach, schnell und sicher Dateien von einem Rechner auf einen anderen Kopieren.
scp dateien user@rechner:/pfad
Du kannst aber auch X-Weiterleitungen sehr einfach realisieren. Hierzu musst du einfach in deine sshd_config folgende Option auf yes setzten.
X11Forwarding yes
Mal angenommen du besitzt ein altes (SEHR) altes Notebook. Dieses Notebook hat gerade noch genug Leistung zum Hochfahren und starten des X-Servers. Dieses Notebook könntest du jetzt als eine Art X-Terminal benutzen. D.h.: du tipperst ein:
ssh -X rechner
in deine X-Konsole und meldest dich nun mit deinen Usernamen an einem Zweitrechner in deinem Netzwerk an, welcher etwas mehr Leistung hat und auch gleich noch die Programme installiert sind, mit denen du jetzt gerne auf dem Notebook arbeiten willst. Du tipperst nach der Anmeldung also ooffice oder was du halt gerade brauchst ein. Darauf bekommst du dann nur die GUI auf dein Notebook. Die gesamte Datenverarbeitung und Rechenleistung für das genutzte Programm kommt nun vom anderen Rechner. Bist du mal über eine sehr schwache Leitung an dein System angeschlossen kann dir die Option -C sehr helfen. Diese sorgt dafür das der gesamte Datenstrom komprimiert wird. So ist die zu übertragende Datenmenge kleiner und alles sollte flotter gehen.
ssh -C rechner

Wie sicher ist dieses SSH denn nun?

Man kann sagen, recht sicher. Es gibt natürlich keine absolute Sicherheit und es hängt auch immer ein großer Teil vom User und der Konfiguration ab. Du solltes also einige Punkte in der Konfiguration seines SSH-Servers ändern. Diese liegt fast immer unter: /etc/ssh/ und schimpft sich sshd_config! – Nur SSH2 Das SSH1 Protokoll gilt als unsicher. Programme wie z.b.: ettercap sind in der Lage hier Kennwörter und Usernamen herauszulesen. Zu dem bietet SSH2 eine ganze Stange mehr an Möglichkeiten. Daher sollte nur das Protocol 2 genutzt werden.
Protocol 2
– Root-Login is nicht Der User Root braucht keinen direkten Login. Wer wirklich von extern auf seinem Rechner administrieren will der kann als User auch su oder sudo benutzen. Da SSH2 wohl kaum zu entschlüsseln ist, wird ein Angreifer es meist mit Brute Force versuchen. Er braucht zu dem Kennwort welches er damit bekommen möchte erst mal einen Usernamen. Da er Root haben will und dieser wohl auch immer auf einer Linux-Kiste zu finden ist, wird er es auch auf diesen Account probieren. Verbieten wir jetzt aber den Login für den User Root kann der Angreifer es sehr lange Probieren.
PermitRootLogin no
– Kein User/Passwort verfahren Die Geschichte mit dem Brute Force hatten wir ja jetzt. Was aber wenn der Angreifer einen Usernamen von unserem System kennt. Dann ist es erstmal nur noch eine Frage der Zeit. Tja und da die meisten User keine „guten“ Passwörter haben….. Viel besser ist es wenn der User ein Zertifikat hat, mit welchem er sich anmelden darf. Weiter unten zeige ich wie es gemacht wird. Hier aber erstmal das User/Passwort verfahren verbieten!
PasswordAuthentication no
Das Public-Key-Verfahren (jetzt kommt die Beschreibung) ist da viel besser. Zuerst bauen wir einen schön langen Schlüssel auf dem Client:
ssh-keygen -b 4068 -t dsa
Nun tauchen im Homeverzeichniss des Users, mit dem wir den Schlüssel erstellt haben, unter: ~/.ssh/ zwei Dateien auf: id_dsa und id_dsa.pub. Den Publickey id_dsa.pub packen wir nun auf den Server. Direkt in die Datei authorized_keys (vielleicht müssen wir diese noch mit der Hilfe von touch anlegen). Die Datei sollte im Homeverzeichniss des zu autorisierenden Users im Ordner .ssh angelegt werden. Haben wir das alles so eingetragen brauchen wir kein Kennwort mehr.
Wie wäre es mit einem Tunnel durch die Firewall?
OK… klingt ja ganz nett. Aber warum sollte ich einen Tunnel in meine Firewall machen? Das kann ich dir erklären. Stell dir mal vor du sitzt mit deinem Notebook in einem Netzwerk wo du dir nicht sicher bist das keiner deine Verbindungen abhört oder gar die Verbindungen über bestimmte Ports blockiert sind. Du willst nun aber eine E-Mail schreiben! Oder bestimmte Ports sonst wie durch diese oder eine andere Firewall verschlüsselt tunneln. Um einen einfachen Tunnel zu basteln musst du jetzt nur noch folgendes machen: Computer2:
ssh -N -R 5555:localhost:22 user@erreichbarer_rechner
Jetzt passiert etwas feines 🙂 Denn nun geht am „erreichbarer_rechner“ der Port 5555 auf und der beamt dann alles durch den Tunnel an Computer2 an den Port 22 weiter. Du kannst nun also sitzen wo du willst. Sobald du versuchst dich auf Port 5555 mit dem Computer „erreichbarer_rechner“ zu verbinden, wird deine Anmeldeanfrage direkt an Computer2 weitergeleitet. So bekommst du also sofort das Login von Computer 2.
ssh erreichbarer_rechner -p 5555
Geil, was?

Siehe auch: SSH-Server mit MFA absichern

Fragen? Einfach melden.

GPG: E-Mails signieren und verschlüsseln mit GnuPG

GnuPG (GNU Privacy Guard) ist die freie Implementierung des OpenPGP-Standards. Damit lassen sich E-Mails und Dateien signieren und verschlüsseln. Die Signatur beweist, dass die Nachricht vom angegebenen Absender stammt und nicht verändert wurde. Die Verschlüsselung stellt sicher, dass nur der Empfänger den Inhalt lesen kann.

Schlüsselpaar erstellen

Ein neues Schlüsselpaar wird interaktiv erstellt:

gpg --full-generate-key

Als Algorithmus Ed25519 wählen. Das ist eine elliptische Kurve von Daniel J. Bernstein, deutlich schneller als RSA und mit kürzeren Schlüsseln bei gleichem Sicherheitsniveau. Für Verschlüsselung wird automatisch ein cv25519-Unterschlüssel erzeugt. Die Passphrase sollte lang und komplex sein.

Direkt nach der Erstellung ein Widerrufszertifikat anlegen und sicher aufbewahren. Damit lässt sich der Schlüssel für ungültig erklären, falls er kompromittiert wird oder die Passphrase verloren geht:

gpg --output revoke.asc --gen-revoke deine@email.de

gpg.conf härten

Die Standardkonfiguration von GnuPG erlaubt aus Kompatibilitätsgründen veraltete Algorithmen wie 3DES, IDEA oder SHA-1. Das lässt sich in der ~/.gnupg/gpg.conf abstellen. Eine gehärtete Konfiguration, die nur noch starke Algorithmen zulässt:

# Ausgabe
keyid-format 0xlong
with-fingerprint
utf8-strings

# Key Discovery: WKD bevorzugen, keys.openpgp.org als Fallback
auto-key-retrieve
auto-key-locate wkd,dane,local,keyserver
keyserver hkps://keys.openpgp.org

# Starke Defaults
cipher-algo AES256
digest-algo SHA512
cert-digest-algo SHA512

# KDF-Härtung für Passphrase-basierte Verschlüsselung
s2k-mode 3
s2k-digest-algo SHA512
s2k-cipher-algo AES256
s2k-count 65011712

# Legacy-Algorithmen deaktivieren
disable-cipher-algo 3DES
disable-cipher-algo IDEA
disable-cipher-algo CAST5
disable-cipher-algo BLOWFISH
disable-cipher-algo TWOFISH

# Privatsphäre
no-comments
no-emit-version
export-options export-minimal

# Trust Model: TOFU + Web of Trust
trust-model tofu+pgp

# Eigener Schlüssel
default-key 0x5F279C362EEAB216

# Bevorzugte Algorithmen
personal-cipher-preferences AES256 AES192 AES
personal-digest-preferences SHA512 SHA384 SHA256
weak-digest SHA1
force-ocb

Die wichtigsten Punkte: auto-key-locate wkd,dane,local,keyserver sucht öffentliche Schlüssel zuerst per Web Key Directory und DANE im DNS, bevor ein Keyserver gefragt wird. Das ist schneller und vertrauenswürdiger. trust-model tofu+pgp kombiniert das klassische Web of Trust mit Trust on First Use, was in der Praxis besser funktioniert als reines WoT. Die s2k-count auf Maximum (65 Millionen Iterationen) macht Brute-Force-Angriffe auf die Passphrase deutlich teurer.

Schlüssel verteilen

Den öffentlichen Schlüssel exportieren und auf einen Keyserver hochladen:

# In eine Datei exportieren
gpg --armor --export deine@email.de > pubkey.asc

# Auf keys.openpgp.org hochladen
gpg --keyserver keys.openpgp.org --send-key deine@email.de

keys.openpgp.org ist der empfohlene Keyserver. Die alten SKS-Keyserver (pgp.net, pgp.mit.edu) sind unbrauchbar geworden, weil sie keine Verifizierung der E-Mail-Adressen durchführen und mit Spam-Keys geflutet wurden. Nach dem Upload schickt keys.openpgp.org eine Bestätigungsmail. Erst nach der Bestätigung wird die E-Mail-Adresse am Schlüssel sichtbar.

Fremde Schlüssel importieren

# Vom Keyserver holen (Key-ID oder E-Mail)
gpg --keyserver keys.openpgp.org --recv-keys 0xKEYID

# Aus einer Datei importieren
gpg --import pubkey.asc

# Alle Schlüssel am Bund anzeigen
gpg --list-keys

Mit der gehärteten Config und auto-key-retrieve holt GnuPG fehlende Schlüssel beim Verifizieren einer Signatur automatisch. Zuerst per WKD (Web Key Directory) direkt vom Mailserver des Absenders, dann per DANE aus dem DNS, und als letzten Fallback vom Keyserver.

E-Mail-Integration

Die meisten Mailclients unterstützen OpenPGP direkt oder über Plugins. Thunderbird hat GPG seit Version 78 eingebaut und braucht kein separates Plugin mehr. Apple Mail nutzt GPG Suite, unter Windows gibt es Gpg4win mit Outlook-Plugin. K-9 Mail auf Android unterstützt OpenPGP über die OpenKeychain-App.

Wer seinen öffentlichen Schlüssel zusätzlich per DNS veröffentlichen will, kann das mit einem SMIMEA-Record tun. Dann können Mailserver das Zertifikat automatisch aus dem DNS holen, ohne einen Keyserver abfragen zu müssen.

Mein Schlüssel

Ich signiere jede ausgehende E-Mail. Eine unsignierte Mail von mir sollte mit Vorsicht behandelt werden. Mein aktueller Schlüssel ist Ed25519 (seit 2023, der alte RSA-4096-Schlüssel von 2011 ist abgelaufen):

Algorithmus: Ed25519 (Sign) + cv25519 (Encrypt)
Key-ID:      0x5F279C362EEAB216
Fingerprint: CCB4 FCD9 B858 AF4C C003 5B13 5F27 9C36 2EEA B216
gpg --keyserver keys.openpgp.org --recv-keys 0x5F279C362EEAB216

Siehe auch: S/MIME per DNS mit SMIMEA, GPG-Schlüssel per PKA im DNS veröffentlichen, Der sichere GPG-Schlüssel, OPENPGPKEY: GPG-Schlüssel direkt im DNS veröffentlichen

Fragen? Einfach melden.

CAcert

Veraltet: CAcert hat es nie in die Browser-Truststores geschafft. Die CA existiert zwar noch, spielt aber keine praktische Rolle mehr. Dieser Beitrag ist nur noch als Zeitdokument interessant.

CAcert certificate verification page

Jeder der etwas mit EDV vertraut ist, wird mir sicher zustimmen. Daten im Rechner oder aus dem Internet sind schön und gut. Nur sind sie auch wirklich vom Autor, welcher im Dokument steht? Sind die Daten vielleicht verändert worden? Unterhalte ich mich auch gerade wirklich mit dem Server oder hat mit ein Hacker über einen fake-dns auf seinen Server geleitet?

 

Genau um solche Dinge sicher zu stellen, gibt es Zertifikate. Eine gute Möglichkeit für Privatleute oder kleine Firmen ist da CAcert.

CAcert:

CAcert ist eine gemeinschaftsbetriebene nicht kommerzielle Zertifizierungsstelle (Root CA), die kostenfrei X.509-Zertifikate für verschiedene Einsatzgebiete ausstellt. Damit soll eine Alternative zu den kommerziellen Roots CAs geboten werden, die zum Teil recht hohe Gebühren für ihre Zertifikate erheben. Die Dienstleistungen der CAcert sind allgemein. Jeder kann sich Zertifikate auf seinem Namen bzw. auf seinen Server ausstellen lassen, nachdem er seine Identität ausreichend belegt hat.

Zertifikate
Folgende Zertifikate und Signaturen werden angeboten:

Client-Zertifikate
Diese Zertifikate sind personalisiert, sie dienen zum Beispiel zum Verschlüsseln und Signieren von E-Mails und anderen Daten, aber auch Authentifikation an Servern oder zum Signieren von Softwarecode.

Server-Zertifikate
Server-Zertifikate stellen die Identität eines Servers sicher und dienen als Basis für verschlüsselte SSL/TLS-Verbindungen. Es gibt eine Bandbreite von Diensten, bei denen Server-Zertifikate zum Einsatz kommen. Dazu gehören u. a. HTTPS, FTP(S), SMTP(S), POP(S) und IMAP(S).

Signatur des PGP-Schlüssels
Man kann den eigenen PGP-Schlüssel zur Signatur einreichen. Die CAcert bestätigt dann die Identität des Schlüsselbesitzers.

Assurance / Identitätsprüfung
Um ein Zertifikat zu erhalten, muss man sich zunächst auf der Seite https://www.cacert.org/index.php?id=1 als Benutzer anmelden. Jedem Benutzerkonto sind Punkte (Assurance Points) zugeordnet, die auf verschiedenen Wegen von anfänglich 0 bis auf 150 Punkte erhöht werden können. Die Punkte geben an, wie genau die Identität eines Benutzers überprüft wurde (bis 100 Punkte) bzw. wieviele Punkte er beim Überprüfen der Identität eines anderen Benutzers vergeben darf (ab 100 Punkten).

Die Authentifikation der eigenen Identität gegenüber CAcert kann auf zwei Arten erfolgen:
Zum einen besteht ein Netzwerk aus Freiwilligen (Web of Trust), gegenüber denen sich der neue Benutzer ausweisen kann, um Punkte zu erhalten. Eine Liste der freiwilligen Assurer ist auf der Internetseite zu finden. Sie können maximal 35 Punkte vergeben. Bei besonderen Veranstaltungen wie z.B. Messen können Super-Assurer sofort die maximalen 150 Punkte vergeben.
Zum anderen sind ‚Vertrauenswürdige Dritte‘ (Trusted Third Parties) wie Notare zugelassen, die aufgrund ihrer Position (Beruf) die Identität des Benutzers bestätigen können. Hier können auch bis zu 150 Punkte erlangt werden.

Quelle:
http://de.wikipedia.org/wiki/CAcert
http://www.cacert.org/

Ich selbst bin auch ein solcher Assurer und kann die begehrten Punkte vergeben.
Interessierte schicken mir bitte eine kurze E-Mail. Dann können wir ein Treffen absprechen!


Wer sich für CAcert interessiert, sollte sich auch unbedingt den Beitrag: „StartSSL“ anschauen.

IPv6: Adressarchitektur, Autokonfiguration und radvd unter Linux

Meine IPv6-Reise begann 2003. Damals kam IPv6 vom eigenen ISP nicht in Frage, also ging es über einen Tunnelbroker. SixXS stellte kostenlos IPv6-Tunnel bereit und vergab auf Antrag sogar ein komplettes /48 Netz. SixXS wurde 2017 eingestellt, aber die Grundlagen von IPv6 haben sich nicht geändert. Heute liefern die meisten ISPs IPv6 nativ aus.

Adressformat

IPv6-Adressen sind 128 Bit lang. Das sind 2128 mögliche Adressen, ausgeschrieben: 340.282.366.920.938.463.463.374.607.431.768.211.456. Geschrieben werden sie hexadezimal, jeweils zwei Bytes durch Doppelpunkt getrennt:

2a01:0198:0200:0945:0000:0000:0000:0002

Führende Nullen darf man weglassen. Ein zusammenhängender Block aus Nullen kann einmal durch :: ersetzt werden:

# Führende Nullen weg
2a01:198:200:945:0:0:0:2

# Ein Nullblock durch :: ersetzt
2a01:198:200:945::2

# Als Netz
2a01:198:200:945::/64

Wichtige Adressen

::1 ist der Localhost. fe80::/10 sind Link-Local-Adressen, die jedes Interface automatisch bekommt. ff02::1 erreicht alle Hosts im lokalen Netz, ff02::2 alle Router. 2001:db8::/32 ist für Dokumentation reserviert.

# Alle Hosts im lokalen Netz anpingen
ping6 -I eth0 ff02::1

# Alle Router im lokalen Netz anpingen
ping6 -I eth0 ff02::2

Adressbildung und EUI-64

Link-Local-Adressen bildet der Host selbst aus dem Prefix fe80 und der MAC-Adresse im EUI-64 Format. Die MAC-Adresse hat 48 Bit, EUI-64 erweitert sie auf 64 Bit. Zusammen mit dem 64-Bit-Prefix ergibt das die vollen 128 Bit. IPv6 ist damit bereits auf 64-Bit-MAC-Adressen vorbereitet, falls die 48-Bit-Adressen irgendwann knapp werden. Duplicate Address Detection (DAD) stellt sicher, dass keine Adresse doppelt vergeben wird.

Autokonfiguration mit radvd

ARP wurde durch Neighbor Discovery (ND) ersetzt. IPv6 ist auf Autokonfiguration ausgelegt. Ein Router Advertisement Daemon (radvd) teilt allen Hosts im Netz das IPv6-Prefix mit. Die Hosts bilden sich ihre Adresse selbst. Kein DHCP nötig für die Grundkonfiguration.

Forwarding aktivieren und radvd konfigurieren:

echo 1 > /proc/sys/net/ipv6/conf/default/forwarding
# /etc/radvd.conf
interface eth0
{
    AdvSendAdvert on;
    AdvLinkMTU 1280;
    MaxRtrAdvInterval 300;
    prefix 2a01:198:200:945::/64
    {
        AdvOnLink on;
        AdvAutonomous on;
    };
};

Nach dem Start von radvd holen sich alle Hosts im Netz automatisch eine Adresse aus dem Prefix. Prüfen mit:

ip addr show eth0

Kein NAT mehr

Mit IPv6 ist NAT nicht mehr nötig. Jedes Gerät bekommt eine eigene öffentliche Adresse. Das bedeutet aber auch: Jedes Gerät ist direkt aus dem Internet erreichbar. Eine Firewall ist Pflicht. IPv6 hat einen eigenen Paketfilter, ip6tables statt iptables. Wer iptables kennt, kann auch ip6tables.

Über die Probleme die durch fehlende IPv6-Unterstützung bei Diensteanbietern entstehen habe ich separat geschrieben.

Hurricane Electric IPv6 Zertifizierung

Hurricane Electric bietet eine kostenlose IPv6-Zertifizierung an. Man arbeitet sich durch verschiedene Levels, vom ersten Tunnel bis zum voll IPv6-fähigen Mailserver. Am Ende gibt es ein T-Shirt.

Hurricane Electric T-Shirt Sendung
Umschlag aus den USA
Hurricane Electric T-Shirt vorne
T-Shirt vorne
Hurricane Electric T-Shirt hinten
T-Shirt hinten

Fragen? Einfach melden.

Neuere Beiträge »

© 2026 -=Kernel-Error=-RSS

Theme von Anders NorénHoch ↑