Schlagwort-Archive: debian

Studienarbeit „Verteidigung externer Rechnerresourcen“ (mit Linux)

In den letzten Wochen ist es leider etwas still im Blog geworden, besonders zum Thema IT-Sicherheit. Das liegt zum einen daran, dass ich meine Diplomarbeit schreibe. Aber auch daran, dass ich im Wintersemester 2013/14 am Lehrstuhl 4 an der TU-Dortmund eine Studienarbeit im Themenbereich IT-Sicherheit schreiben durfte.

Der Titel lautet „Verteidigung externer Rechnerresourcen – Risiken durch die Aufgabe der physikalischen Kontrolle und Gegenmaßnahmen am Beispiel gemieteter Linux Server„.

Studienarbeit Verteidigung externer Rechnerressourcen (PDF)

Darin beschreibe ich ausführlich die auftretenden Probleme, sobald dem Provider nicht mehr vertraut wird. Im Anschluss wird eine Taktik basierend auf Anti-Forensik und einfacher Militärtaktik entwickelt, die einen voll-verschlüsselten gemieteten Server noch etwas besser schützt, indem der forensische Prozess behindert wird. Mit Implementierung für Debian Linux.

Die Arbeit löst ausdrücklich nicht das Problem, dass bei gemieteten Servern keine Vertrauenswurzel existiert, bietet aber einige Verbesserungen an. Zu diesem Vertrauensproblem gibt es einiges im Chaosradio 199 ab 1:37:00 bis 1:39:30 zu hören, falls Interesse besteht.

WPA2 Enterprise mit FreeRADIUS und DD-Wrt in 5 Minuten

freeradius
Wenn WPA2-PSK mit einem einzigen Kennwort nicht mehr für die WLAN-Sicherheit genügt, bietet sich der Einsatz von WPA2 Enterprise, also der Authentifikation mittels EAP und TLS an. Wie das auch im Heimnetzwerk mit einem DD-Wrt Router und einem RADIUS-Server geht, erklärt der folgende Artikel.

Installation

Zuerst wird FreeRADIUS-Server installiert. Dabei wird automatisch ein selbst-signiertes Zertifikat erzeugt, dass den Hostnamen des Servers enthält.

apt-get install freeradius 

Wird der RADIUS-Server auf der Firewall installiert, muss er an die interne Netzwerkschnittstelle gebunden werden. Aber auch wenn das nicht der Fall ist, lohnt sich diese Sicherungsmaßnahme. Dafür werden in der Datei /etc/freeradius/radiusd.conf die zwei mit listen { beginnenden Blöcke bearbeitet und die beiden folgenden Konfigurationsanweisungen einkommentiert und mit den entsprechenden Werten gefüllt.

ipaddr = IPv4Intern
interface = ethIntern

Die Angabe zur IP-Adresse befindet sich für den auth Block um Zeile 273, für den acct Block um Zeile 316. Die Angabe zur Netzwerkschnittstelle befindet sich um Zeile 293 und Zeile 320.

Benutzernamenfilter

Folgend wird in der Datei /etc/freeradius/sites-enabled/default ein Sicherheitsfilter für Benutzernamen aktiviert, der dazu führt, dass Benutzernamen die mit Leerzeichen beginnen oder nicht von FreeRADIUS unterstützte Zeichenketten enthalten, nicht an den Authentifikationsmechanismus weitergegeben werden.

Um Zeile 79 Policy-Statement filter_username einkommentieren.

Client einrichten

Im nächsten Schritt wird die Zugriffsberechtigung und Authentifikation für den DD-Wrt Router eingerichtet. Der DD-Wrt Router wird als Client eingerichtet. Ein Client besteht aus einer Quell-IP, einem Gerätetyp und einem gemeinsamen secret. Bevor dies geschieht, sollte in der Datei /etc/freeradius/clients.conf um Zeile 101 das Kennwort für den lokalen Testzugriff auf den RADIUS-Server von testing123 auf einen geheimen Wert abgeändert werden.

Ist dies geschehen, kann die Konfiguration für den DD-Wrt Router an das Ende der Datei angefügt werden. Die IP-Adresse des DD-Wrt Routers ist in der Weboberfläche im Menü Status - LAN ablesbar. Das Format lautet wie folgt:

client dd-wrt {
        ipaddr = 192.168.XXX.XXX
        netmask = 32
        secret = meinGeheimesKennwort
        require_message_authenticator = no
        nastype     = other
}

Benutzer hinzufügen

Jetzt können die Benutzer an das Ende der Datei /etc/freeradius/users hinzugefügt werden. Das Format lautet wie folgt.

# Lokale User
user1    Password = "meinGeheimesKennwort"

DD-Wrt konfigurieren

Nach Neustart des FreeRADIUS-Servers mit dem Befehl /etc/init.d/freeradius restart kann der DD-Wrt Router konfiguriert werden. Im Menü WLAN – WLAN-Sicherheit kann der Radius gemeinsam mit dem secret eingetragen werden.
Bildschirmfoto - 13.03.2014 - 17:06:04

Hardware für Proxmox VE Virtualisierungsserver

Ein Server für mein privates Pentest-Labor zur Virtualisierung der Opfersysteme musste her. Auf Bitte eines Lesers folgt eine kurze Dokumentation der getroffenen Hardware- und Software-Entscheidungen.
fantec_front

Kurz vorweg:
Es ist erstaunlich, wie viel Rechenleistung für moderaten Geldeinsatz kaufbar ist.

Mit einer geschickten Kombination aus Desktop- und Server-Hardware ist es möglich, einen nicht für den produktiven sondern für den experimentellen Betrieb geeigneten Virtualisierungsserver zusammenzustellen, der sich nicht verstecken muss.

Da der Server in einem bewohnten Bereich betrieben wird, musste das Gehäuse mit Schalldämmung versehen werden. Schalldämmung ist bei Server-Gehäusen noch weniger üblich, als im Desktop-Bereich und erschwert die Hardwareauswahl.

Hardware

IMG_20140102_145901

  • Intel Xeon E3-1245 v3, 4x 3.40GHz, Sockel-1150, boxed (BX80646E31245V3)

Statt dem i7-4770, zum Zeitpunkt des Kaufs signifikanter Kostenvorteil. Verlust von 100Mhz Turbo. Vergleich beider CPUs hier.

Bietet Intel I217-LM Gigabit-LAN, vPro (statt IPMI bei einem Server-Mainboard) und kostet unter 100 Euro.

Passform sehr gut für 4HE Server-Gehäuse mit Schalldämmung und Montage mit Backplate (im Preissegment um 20 Euro nicht selbstverständlich).

  • Fantec NNC-4550X, 4HE (1489)

Sehr günstiges und stabiles 4HE Server-Gehäuse. Lässt sich Zwecks Schalldämmung komplett demontieren. Nachteil: Keine Rackschienen vom Hersteller.

Erfahrungsgemäß gut verarbeitbare Schalldämmmatten. Leider werden zwei Pakete benötigt.

Die Liste mit Tagespreisen ist hier abrufbar.

Zusammenbau

Der Zusammenbau gestaltet sich sehr einfach. Die Montageanleitung des CPU-Kühlers ist umfangreich.

Problematisch war die Anbringung der Schalldämmmatten. Das Fantec-Gehäuse erlaubt im Gegensatz zu einigen anderen günstigen Server-Gehäusen die Demontage des Mainboard-Trays, sodass auch unter dem Mainboard Bitumenpappe angebracht werden kann. Der Schnitt der Cooltek-Dämmmatten ermöglicht die Anbringung am kompletten Gehäusedeckel, den Seiten des Gehäuses und der Front ohne Zuschnitt.

IMG_20131230_185240

IMG_20131230_185311

IMG_20131230_190156

IMG_20131231_212829

IMG_20140101_210409

Wer viele kleine Schrauben nicht scheut, kann mit zwei Sätzen Cooltek Dämmmatten und dem Fantec NNC-4550X Gehäuse einen schallgedämmten Server bauen. Einziger Wermutstropfen des Gehäuses ist das sehr günstig gewählte Schloss, dass weder dem Einbruchsschutz dient, noch die Frontplatte bei regelmäßiger Benutzung besonders gut hält.

Software

Wenn Virtualisierungslösungen in Unternehmen eingesetzt werden sollen, wird oft VMWare ESXi eingesetzt. Leider wird entweder ein NAS oder SAN benötigt, oder ein Hardware-RAID Controller. Beides kam für mich nicht in Frage. Ein eigenes SAN/NAS ist für unwichtige Entwicklungssysteme im privaten Bereich überdimensioniert und Hardware-RAID meiner Ansicht nach nicht ökonomisch sinnvoll, wie ich vor drei Jahren erklärt habe.

Um die Zeit zu verringern, die für Einrichtung und Verwaltung nötig wird, habe ich mich für Proxmox VE entschieden. Proxmox VE basiert auf Debian und kann verschlüsselt und mit Software-RAID installiert werden. Die Installation des Servers ist in folgenden Artikeln dokumentiert.

Die anfänglichen Bedenken, dass eine so weit entfernt von den Projektvorgaben installierte Virtualisierungslösung nicht zuverlässig funktionieren kann, haben sich nicht bestätigt. Der Virtualisierungsserver läuft seit Inbetriebnahme so zuverlässig, wie man es von einem Debian erwarten darf. Ergänzend besteht die Möglichkeit bekannte Verwaltungswerkzeuge und Helferlein wie apticron einzusetzen.

OVH Server from Scratch mit Debian und dm-crypt Verschlüsselung

Diese Anleitung entspricht nicht mehr dem maximal möglichen Standard an Sicherheit. Dafür empfehle ich mein Konzept Tauchfahrt mit Linux.

1. Grundsätzliches

Dieses Howto beschreibt die Installationen von Debian Squeeze auf einem OVH Server im Rescue Modus. Der Server ist nach der Installation weder abgesichert noch entspricht er dem ‚Standard‘ von OVH.

Das bedeutet:

  • Kein Supportkey von OVH
  • Kein Realtime-Monitoring durch OVH
  • Kein OVH-Kernel
  • Download von Paketen nicht über OVH
  • Direkter SSH-Zugang als Superuser root

Darum empfehle ich dringend die Authentifikation per SSH Publickey. Einen Artikel darüber gibt es hier.

Das Ergebnis ist ein Minimalsystem für einen Fileserver, der folgende Eigenschaften hat.

  • Möglichst unabhängig von OVH-Infrastruktur
  • Minimalsystem
  • Großer verschlüsselter Datenbereich in /home

Das HowTo basiert auf dem Squeeze from Scratch HowTo von Sven Richter.

OVH Server from Scratch mit Debian und dm-crypt Verschlüsselung weiterlesen

DNS-Query Limits mit iptables und Burstrate

Seit etwas über zwei Monaten betreibe ich einen OpenNIC Nameserver, über den jeder Mensch auf der Welt Hostnamen in IP-Adressen auflösen kann (mehr zum Nameserver gibt es hier). Jeder Mensch, aber leider auch jeder durch Viren befallene Zombie-Computer. Die massiven Anfragen nach Mailservern führten bereits zweimal dazu, dass mein Router die Anzahl von Anfragen nicht mehr bearbeiten konnte und der Internetzugang sich verabschiedete.

Query Flood! Was tun?

Im Blog von Benny Baumann werden Tips vorgestellt, die sehr spezifisch bestimmte Anfragen mit einfachen iptables Regeln verwerfen. Da ich leider nicht Nachfragen nach den Rootservern ablehnen kann (öffentliche Nameserver müssen hier antworten) und auch leider nicht nach einer einzigen Domain gefragt wird, kam nur eine Limitierung in Frage. Dabei wird die Anzahl der maximal in einem Zeitintervall (zum Beispiel eine Sekunde) verarbeiteten Pakete begrenzt.

Durch Nachfragen bei anderen OpenNIC Serveradmins und Analyse anonymisierter Logfiles konnte ich 5 Anfragen pro Sekunde als Durchschnitt pro IP feststellen. Diese Einstellung brachte zwar Besserung, führte aber dazu, dass bei einem Rechnerstart einige Programmer länger brauchten. Klar, die Anfragen pro Sekunde sind zu stark begrenzt. Die Lösung des Problems möchte ich gern mit euch teilen.

Es wird die Anzahl der Pakete pro Sekunde einer Quell-IP nicht über den Zeitraum einer Sekunde gemessen, sondern über einen längeren Zeitraum. Das würde zu einer Reduzierung der Anfragen führen (fünf pro Sekunde ist trivialierweise mehr als 5 pro zehn Sekunden), also wird die Anzahl der Anfragen mit den Sekunden multipliziert. Jetzt ist es natürlich möglich, alle erlaubten Anfragen in der ersten Sekunde zu senden, was wieder zu einer Überlastung der Anbindung führen würde. Dem wird ein Riegel vorgeschoben, indem die Anzahl der Anfragen pro Sekunde auch limitiert wird, aber eben auf einen höheren als den angestrebten Wert.

Ich habe die Anfragen pro Sekunde auf 5 limitiert, was dazu führt, dass in 7 Sekunden 35 Anfragen erlaubt sind.
Um das Erste-Sekunde Problem zu lösen, sind in jeder der sieben Sekunden nur maximal 15 Anfragen erlaubt.

Skript schreiben statt manuell blockieren!

Hier das Skript für Interessierte:

#!/bin/bash
# This script limits the queries per second to 5/s
# with a burst rate of 15/s and does not require
# buffer space changes

# Requests per second
RQS="15"

# Requests per 7 seconds
RQH="35"

iptables --flush
iptables -A INPUT -p udp --dport 53 -m state --state NEW -m recent --set --name DNSQF --rsource
iptables -A INPUT -p udp --dport 53 -m state --state NEW -m recent --update --seconds 1 --hitcount ${RQS} --name DNSQF --rsource -j DROP
iptables -A INPUT -p udp --dport 53 -m state --state NEW -m recent --set --name DNSHF --rsource
iptables -A INPUT -p udp --dport 53 -m state --state NEW -m recent --update --seconds 7 --hitcount ${RQH} --name DNSHF --rsource -j DROP

Debian per USB-Stick installieren

So einfach lässt sich ein USB-Stick für eine Debian Installation vorbereiten, dass man es kaum glauben möchte. So gehts:

1. Bootimage holen und auf USB-Stick schreiben

wget ftp://ftp.de.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/hd-media/boot.img.gz
zcat boot.img.gz > /dev/sdX

2. USB-Stick einbinden

mkdir /mnt/sdX
mount /dev/sdX /mnt/sdX
cd /mnt/sdX

3. Netinstall Image direkt in USB-Stick herunterladen

wget ftp://ftp.de.debian.org/debian-cd/6.0.4/amd64/iso-cd/debian-6.0.4-amd64-netinst.iso

4. Stick auswerfen und installieren!

umount /dev/sdb

Man sollte hier locker mit einem 256MB Stick hinkommen.