Beiträge

Bei PGP (Pretty Good Privacy) handelt es sich um ein Programm, mit dem sich elektronische Nachrichten, wie beispielsweise E-Mails, mit einem persönlichen Schlüssel verschlüsseln und signieren lassen. Die Software kann für eine sichere Kommunikation über das Internet verwendet werden und basiert auf asymmetrischen Verschlüsselungsverfahren mit privaten und öffentlichen Schlüsseln.

Verschlüsselungsverfahren für eine sichere Kommunikation im Netz

Die Abkürzung PGP steht für den englischen Ausdruck „Pretty Good Privacy“ und bedeutet wörtlich übersetzt so viel wie „ziemlich gute Privatsphäre“. PGP wurde ursprünglich von dem US-amerikanischen Informatiker und Sicherheitsforscher Phil Zimmermann mit dem Ziel entwickelt, Anwendern eine Möglichkeit zu geben, elektronische Nachrichten im Internet verschlüsseln als auch signieren zu können. Eines der bedeutendsten Einsatzbereiche der Software ist die sichere Kommunikation via E-Mail. Nutzer, die PGP für den Versand von E-Mails benutzen, haben die Möglichkeit, die Nachrichten nur zu verschlüsseln, nur zu signieren oder sie zu signieren und zu verschlüsseln. Während die Signatur eingesetzt wird, um die Authentizität und die Integrität der Nachricht zu bestätigen, wird durch das Verschlüsseln verhindert, dass Unbefugte den Inhalt der Nachricht lesen können.

Bei einer signierten E-Mail kann gewährleistet werden, dass diese tatsächlich von dem angegebenen Absender stammt und dass keine Veränderungen vorgenommen wurden. Aus PGP entwickelte sich im Laufe der Jahre der Open-PGP-Standard als eine freie Alternative. Inzwischen bietet Open-PGP viele zusätzliche Funktionalitäten, die ursprünglich im PGP nicht enthalten waren. Als Basis nutzt PGP das sogenannte „Public-Key-Verfahren“ mit einer asymmetrischen Verschlüsselung. Allerdings kommen bei PGP auch symmetrische Schlüssel zum Einsatz, weswegen die Verschlüsselungsmethode als hybrides Verfahren zu klassifizieren ist.

PGP-Anwendungsfälle

PGP wird in erster Linie bei der Sicherung von E-Mails eingesetzt. Eine mit dem PGP-Verfahren gesicherte E-Mail wird in eine verschlüsselte Zeichenfolge umgewandelt, die unlesbar ist und ausschließlich mit dem entsprechenden Schlüssel wieder lesbar gemacht werden kann. Es gibt auch einige Softwarelösungen, die es ermöglichen, PGP in andere Apps und Dienste zu integrieren. Obwohl Pretty Good Privacy primär bei der Sicherung der Internetkommunikation eingesetzt wird, kann das Verfahren auch zur Sicherung einzelner Geräte verwendet werden.

Wie werden Nachrichten mit PGP verschlüsselt?

Die Verschlüsselung von PGP basiert auf privaten und öffentlichen Schlüsseln. Anwender nutzen den öffentlichen Schlüssel, um Nachrichten für einen Empfänger zu verschlüsseln. Das Entschlüsseln einer Nachricht ist nur mit dem privaten Schlüssel möglich, der ausschließlich dem Empfänger bekannt sein sollte. Bei der Verschlüsselung einer Nachricht verwendet der Sender hierfür den öffentlichen Schlüssel des Empfängers. Mit dem öffentlichen Schlüssel erfolgt jedoch keine Verschlüsselung der kompletten Nachricht, da die asymmetrische Verschlüsselungsmethode sehr rechenintensiv is. Dafür benötigt eine entsprechend leistungsstarke Hardware.

Bei dem Verschlüsselungsverfahren „Pretty Good Privacy“ wird die eigentliche Nachricht mit einem symmetrischen Session-Schlüssel verschlüsselt, der jedes Mal nach dem Zufallsprinzip neu generiert wird.

Wie können Nachrichten mit PGP signiert werden?

Um die Integrität und die Authentizität einer Nachricht gewährleisten zu können, kann der Sender der Nachricht eine Signatur hinzufügen. Hierfür erzeugt PGP aus dem Klartext der Nachricht über ein komplexes Haschverfahren einen digitalen Fingerprint, der den Sender eindeutig identifiziert. Dieser Fingerprint ist viel kürzer als die eigentliche Nachricht. Der Sender verschlüsselt mithilfe seines privaten Schlüssels diesen digitalen Fingerabdruck und fügt ihn dann der E-Mail hinzu.

PGP-Entschlüsselung von Nachrichten?

Zunächst wird der symmetrische Schlüssel entschlüsselt, der für die Session mit dem privaten Schlüssel des Empfängers generiert wurde. Der symmetrische Schlüssel wird anschließend vom Empfänger zur Entschlüsselung der Nachricht genutzt. Nachdem dieser Prozess erfolgreich abgeschlossen wurde, hat der Anwender Zugriff auf den Inhalt der Nachricht inklusive der digitalen Signatur. Im nächsten Schritt wird die Signatur überprüft, um die Authentizität des Absenders und die Integrität der Nachricht sicherzustellen. Um dies zu bewerkstelligen, erzeugt PGP aus dem Klartext der Nachricht einen digitalen Fingerprint mit demselben Hashverfahren, das auch der Sender der Nachricht genutzt hat. Zeitgleich entschlüsselt PGP den digitalen Fingerprint mit dem öffentlichen Schlüssel des Absenders.  Falls beide Zeichenfolgen identisch sind, kann man davon ausgehen, dass die Signatur von dem benannten Sender stammt.

Netz des Vertrauens (Web of Trust)

Um die öffentlichen Schlüssel sicher austauschen zu können, nutzt Pretty Good Privacy ein sogenanntes „Netz des Vertrauens“ (Web of Trust). Hierbei handelt es sich um eine dezentrale Alternative zu der hierarchischen Public Key Infrastructure. In dem Web of Trust vertrauen die Teilnehmer darauf, dass die Schlüssel in der Tat von den benannten Sendern stammen. Nutzer bauen Vertrauensketten auf, indem sie Schlüssel unterschreiben, von denen sie sich sicher sind, dass sie zu einem bestimmten Kommunikationspartner gehören. Wenn ausreichend Nutzer Schlüssel überprüfen und unterschreiben, entsteht ein Vertrauensnetz. 

Der Webbrowser „Opera“ ist hierzulande eine Art Randerscheinung. Im Wettbewerb gegen Google Chrome, Mozilla Firefox und dem Microsoft Internet Explorer tut er sich schwer, dabei bietet er zahlreiche innovative Features und punktet mit seinen Multitasking-Fähigkeiten. Die ersten Versionen von Opera (bis Version 4 im Dezember 2000) waren kostenpflichtig. Danach wurde in der kostenlosen Version ein Werbebanner angezeigt. Seit September 2005 ist Opera als Freeware kostenlos erhältlich und frei von Werbung.

Der Werdegang von Opera

Der Webbrowser erschien erstmals im Jahr 1996; entwickelt wurde er vom norwegischen Unternehmen „Opera Software“. Die Geschäfte entwickelten sich nicht wie gewünscht, daher wurde der Browser 2016 an ein chinesisches Konsortium für umgerechnet 1,1 Milliarden Euro verkauft.

Opera begann im April 1994 als Forschungsprojekt des norwegischen Unternehmens Telenor (Branche: Telekommunikation). Ein Jahr später wurde das eigenständige Unternehmen Opera Software ausgegliedert, gefolgt vom Börsengang in Oslo im März 2004.

Bereits seit der ersten Version ist der Browser mit der Funktion „Tabbed Browsing“ ausgestattet. Außerdem führte der Entwickler schon früh die Mausgesten ein. Andere Browser übernahmen später diese beiden Funktionen.

Verfügbarkeit und Funktionsumfang

Die derzeit aktuelle Version 64.0.3417.47 wurde am 8. Oktober 2019 veröffentlicht. Verfügbar ist der Browser in 50 Sprachen für Windows ab Win98, macOS ab 10.4 Intel, iOS, GNU/Linux, Android, FreeBSD, Solaris bis 10.11 und Blackberry. Seit Anfang 2006 liefert Opera Software so genannte Snapshots, die einen Ausblick auf die Version ermöglichen, die sich jeweils aktuell in der Entwicklungsphase befindet. Da es sich in der Regel um vorläufige Versionen handelt, enthalten sie häufig Bugs.

Der Funktionsumfang hat sich ab Version 15 maßgeblich verändert. So wurde Opera Mail als integriertes Programm nicht weiterentwickelt, es steht jedoch als eigenständiges Programm zum Download zur Verfügung. Auch Dragonfly, ein Tool für die Web-Entwicklung, wurde aus dem Browser-Setting entfernt. Hinzugefügt wurden dafür der Chromium-Taskmanager (analog zu dem in Google Chrome) und eine Browserseite mit aktuellen Nachrichten.

Browser-Fähigkeiten

Hinsichtlich der Website-Darstellung erfüllt Opera die aktuellen Standards für HTML und CSS. Seit Version 8.0b3 unterstützt der Browser auch eine Teilmenge des Grafikformats SVG sowie ab Version 9.50 APNG und zahlreiche weitere aktuelle Standards. Im Opera Mini verwendet der Browser die HTML-Rendering-Engine „Presto“. Die neue Engine ermöglicht das Neu-Rendern aufgerufener Seite und deren Teile und unterstützt vollständig das DOM (Document Object Model) des W3C.

Der Zoom in Opera vergrößert Texte und skaliert und glättet Bilder sowie Plug-ins. Dabei erlaubt er Größen-Einstellungen zwischen 20 und 1.000 Prozent. Das barrierefreie Internet wird durch den Benutzermodus gewährleistet. Hier lassen sich beliebige Websites dem Aussehen nach anhand eigener CSS-Dateien anpassen. Bilder lassen sich ausblenden, Farben verändern. Wird mit der Maus über die Tabs navigiert, zeigt Opera eine Miniatur-Vorschau der bereits geladenen Inhalte an.

Für große Auflösungen programmierte Websites können mit der Funktion „an Seitenbreite anpassen“ auch auf kleinen Monitoren gelesen werden. Die Funktion „Small Screen“ ermöglicht das Betrachten von Websiten analog zum Opera-Mini-Mobilbrowser. Für Webdesigner ist dieses Feature äußerst hilfreich, da sie die Kompatibilitätsprüfung erleichtert.

Bedienung in Opera

Dank der Multiple Document Interface-Oberfläche lassen sich innerhalb eines Fensters mehrere Seiten öffnen. Zur Navigation zwischen den Seiten steht eine Leiste zur Verfügung, die der Windows-Taskleiste ähnelt. Spezielle Befehle schließen die aktuelle Seite oder stellen die geschlossene Seite wieder her. Zwischen den Tabs kann per Mausklick, Mausrad und Tastatur navigiert werden.

Seit der Version 8.00 können englische Sprachbefehle via VoiceXML für die Steuerung von Opera genutzt werden. Auch das maschinelle Vorlesen von Website-Inhalten ist möglich, sobald die dafür zusätzlich notwendigen Dateien heruntergeladen wurden.

In der Adressleiste befindet sich eine Suchfunktion. Hier lassen sich Kürzel für unterschiedliche Seiten festlegen. Dies vereinfacht die Suche in einigen Suchmaschinen und auf den Seiten diverser Online-Händler.

Der Passwort-Manager in Opera

Für Seiten, die für die Anmeldung Benutzernamen und Passwort erfordern, bietet Opera Unterstützung durch den Passwort-Manager. Bis zur Version 9.64 wurde dieser Passwort-Manager als „wand“ bezeichnet, abgeleitet von „magic wand“; zu deutsch „Zauberstab“. Die Funktion kann bei Bedarf mit einem internen Master-Passwort geschützt werden.

Das für den Passwort-Manager genutzte Master-Password lässt sich zusätzlich im E-Mail-Programm „Opera Mail“ nutzen.

Die Oberfläche in Opera

Die Benutzer-Oberfläche des Browsers kann in weiten Teilen angepasst werden. Sämtliche Symbolleisten sind veränderbar und können bei Bedarf aus- und eingeblendet werden. Ab der Version 7 bietet Opera so genannte Skins, um das Erscheinungsbild zu verändern. Diese Skins stehen auf der Website von Opera zum Download zur Verfügung.

Ein neuer Suchmaschinen-Editor, der ab Version 9.0 in Erscheinung tritt, ermöglicht das Anpassen von Suchmaschinen im GUI (GUI = graphical user interface, zu deutsch „Grafische Benutzeroberfläche“).

Ad-Blocker

In der Standard-Installation des Browsers ist die Funktion des Pop-up-Blocking bereits aktiviert. Betroffen sind Pop-ups, die von einer Fremddomain, also nicht von der aufgerufenen Website stammen. Damit wird das nutzerfreundliche Surfen deutlich verbessert. Eine einfach strukturierte Initialisierungsdatei liefert den tatsächlichen Inhaltsfilter und Werbeblocker im Browser. Die Datei trägt den Namen urlfilter.ini und hat ihren Platz im Profil-Verzeichnis.

Bei Kali Linux handelt es sich um eine Linux-Distribution, die auf dem frei entwickelten Betriebssystem Debian GNU/Linux basiert. Die Distribution umfasst in erster Linie Anwendungen für die digitale Forensik sowie für Penetrationstests. Dabei richtet sie sich vor allem an professionelle und fortgeschrittene Nutzer.

Der Werdegang von Kali Linux

Entwickelt wurde das Betriebssystem von Devon Kearns und Mati Aharoni, Mitarbeiter des Unternehmens „Offensive Security“. Die Veröffentlichung wurde am 12. Dezember 2012 angekündigt und am 13. März 2013 durchgeführt. Die Entwicklungszeit von Kali Linux betrug etwa ein Jahr; die erste Version erhielt die Versionsnummer 1.0. Seit der Version 2.0 erhalten Sie Kali Linux als Rolling Release. Das bedeutet, dass das Betriebssystem kontinuierlich weiterentwickelt wird. Betriebssystem-Versionen gibt es nicht mehr. Stattdessen handelt es sich um Snapshots, die in der Regel als Installationsmedium dienen.

Offiziell handelt es sich bei Kali Linux um den Nachfolger von BackTrack. Die neue Bezeichnung soll laut Hersteller-Angaben darauf hinweisen, dass die Neuentwicklung deutlich fortgeschritten ist. Kali Linux setzt nicht wie BackTrack auf Ubuntu auf, sondern auf Debian. Das Betriebssystem wurde vollständig neu entwickelt. Die Infrastruktur arbeitet nunmehr mit Git als Verwaltung für die Versionen.

Die Architektur von Kali Linux

Das System wurde so entwickelt, dass es sich für Computer mit unterschiedlich aufgebauten Hauptprozessoren eignet. So ist es sowohl für AMD64 als auch für x86er-Systeme und für die ARM-Architektur verfügbar. Die ARM-Architektur wird vor allem in kleinen Endgeräten wie Tablet-Computern eingesetzt. So kann die ARM-Version von Kali Linux unter anderem auf dem ARM Chromebook der Marke Samsung als auch auf dem Raspberry Pi verwendet werden.

In der Forensik lässt sich Kali Linux – abhängig von der Anwendung – als Live-System ohne Installation booten, zum Beispiel via CD und DVD, USB-Stick oder PXE (Preboot Execution Environment) im Netzwerk. Dabei hinterlässt das Live-System keine Spuren am geprüften System, weder auf der Solid State Drive noch auf den eingebauten Festplatten. Es sind beispielsweise keine Auslagerungsdateien auffindbar. Um einen Rechner für Penetrationstests einzusetzen, kann Kali Linux alternativ fest installiert werden.

Die Programme und Tools von Kali Linux

In der Distribution sind zahlreiche Dokumentationen und mehrere hundert Hilfsmittel integriert, die die Sicherheit eines IT-Systems testen und bewerten. Die unter Kali Linux enthaltenen Programme sind zwar auch einzeln für den Großteil der anderen Linux-Distributionen erhältlich, doch automatische Optimierungen werden nur über Kali Linux zur Verfügung gestellt.

Kali Linux bezieht die Programme vier Mal pro Tag aus dem Debian-Repository. Damit ist sichergestellt, dass die Nutzer jederzeit über aktuelle Software-Pakete und Sicherheitsupdates verfügen. Eine eigene Paketquelle mit der Bezeichnung „Kali bleeding edge“ stellt neueste, noch nicht ausführlich unter Kali geprüfte Versionen zur Verfügung.

Die wichtigsten Werkzeuge

– Aircrack-ng

Bei Aircrack-ng handelt es sich um eine Tool-Sammlung. Die Werkzeuge sind darauf ausgelegt, Schwachstellen im WLAN nicht nur zu analysieren, sondern sie auch auszunutzen.

– Ettercap

Die Software führt Man-in-the-Middle-Angriffe durch. Es unterstützt Echtzeitkontrollen über Verbindungen auch in in geswitchten Netzwerken, das Sniffing auf IP- und ARP-Basis, aktive und passive Analysen einzelner Hosts und vollständiger Netzwerke sowie das inhaltsbezogene Filtering.

– John the Ripper

Diese Software ist in der Lage, verschlüsselte System-Passwörter zu entschlüsseln und auf ihre Sicherheit zu testen. Das Entschlüsseln geschieht per Brute-Force oder durch eine Dictionary-Attack.

– Kismet

Kismet agiert als freier WLAN-Sniffer und spürt Funknetzwerke auf, indem es die versandten Datenpakete mitliest. Dieses Programm eignet sich unter anderem auch dafür, die Sicherheit des eigenen WLANs zu überprüfen und die Signalstärke zu ermitteln.

– Maltego

Dieses Programm wurde entwickelt, um Daten im World Wide Web zu sammeln. Dabei handelt es sich um Daten sowohl einzelner Personen als auch von Unternehmen.

– Nmap

Die Bezeichnung „Nmap“ steht für Network Mapper. Bei diesem Tool handelt es sich um einen Portscanner, der Hosts in einem Rechnernetz scannt und auswertet. Bei Administratoren ist es ebenso beliebt wie bei Hackern, denn es arbeitet außergewöhnlich zuverlässig und effizient.

– RainbowCrack

Zum Knacken von Passwörtern nutzt dieses Programm so genannte Rainbow Tables. Im Vergleich zum Brute Force benötigt diese Methode deutlich weniger Zeit und Versuche, um ein Passwort zu ermitteln.

– SET (Social Engineer Toolkit)

Dieses Toolkit beinhaltet mehrere Anwendungen für unterschiedliche Penetrationstests. Der Schwerpunkt liegt dabei auf dem Social Engineering.

– The Sleuth Kit

Bei diesem Kit handelt es sich um eine forensische Software-Sammlung, die auf die Kommandozeile von IT-Systemen ausgerichtet ist. The Sleuth Kit unterstützt die Dateisysteme ISO 9660, NTFS, FAT, UFS 1 und 2, Ext2 bis Ext4, HFS und YAFFS2.

Die rechtliche Situation von Kali Linux in Deutschland

Die Distribution Kali Linux enthält Tools, die in Teilen gewisse Sicherheitsvorkehrungen umgehen. Sie werden in Deutschland als „Computer-Programme zum Ausspähen von Daten“ aufgefasst. Diese Auffassung basiert auf § 202c StGB, dem „Hacker-Paragrafen“, der Ende Mai 2007 in Kraft getreten ist.

Auf Basis dieser gesetzlichen Lage kann der Besitz oder der Vertrieb von Kali Linux hierzulande strafbar sein, wenn eine Absicht besteht,

– diese Programme rechtswidrig zu nutzen (§ 202a StGB) und/oder

Daten damit abzufangen (§ 202b StGB).

Asterisk: Was verbirgt sich dahinter?

Asterisk: Funktionsweise und Stellenwert

Die opensourcebasierte Telefonanlage Asterisk ist auf Linux ausgelegt. Sie arbeitet mit den meisten Linux-Distributionen zusammen und gilt daher als die Linux Telefonanlage. Asterisk zeichnet sich durch hohe Funktionsvielfalt und hohe Anpassungsfähigkeit aus. Dank der Unterstützung vieler Protokolle können Sie selbst neue Module für Asterisk entwickeln und die Anlage an aktuelle und zukünftige Anforderungen anpassen.

Überblick und Allgemeines

Die Entwicklung der Linux-basierten TK-Anlage Asterisk lässt sich bis zum Jahr 1999 zurückverfolgen. Der Computer-Ingenieur Mark Spencer gründete das Unternehmen digium und entwarf Asterisk als Opensource Telefonanlage. Kennzeichnend für Asterisk ist der enorme Funktionsumfang. Die Telefon-Lösung gilt als zukunftssicher, da sich auf ihrer Basis nahezu sämtliche Telefoninfrastrukturen aufbauen lassen. So lässt sich die Telefonanlage etwa in ihrem eigenen Rechenzentrum installieren. Weiterhin gleicht die Anlage einer Art Modul-Baukasten, auf dessen Basis weitere Entwicklungen möglich sind. Asterisk beherrscht die meisten gängigen Protokolle, darunter SIP, IAX2, GSM sowie ISDN. Die Unterstützung der zahlreichen Protokolle macht die Software besonders flexibel.

Aufbau und Module

Asterisk zeichnet sich durch einen modularen Aufbau aus. Wichtig sind hierbei die vier Hauptmodule. Dazu gehört das PBX Switching Modul oder Switching Core. Dieses regelt sämtliche eingehenden sowie ausgehenden Anrufe. Weiterhin eignet sich dieses Modul für die Umsetzung verschiedener technologischer Lösungen zwischen Voice-over-IP (VoIP) und Hardware. Bei eingehenden und angenommenen Anrufe kommt es zur Weiterleitung an das Modul Application Manager. Dieses Modul leitet weitere Aktionen ein, darunter etwa das Rufsignal bei sämtlichen angeschlossenen Telefonen. Auch die Weiterleitungsfunktion geht von diesem Modul aus.

Überdies gibt es die Module Schedule und I/O-Manager. Diese haben die Aufgabe, verschiedene Applikationen sowie Sprachkanäle zu verwalten. Dazu gehören auch VoIP-Kanäle.

Funktionen und Standards

Als leistungsstarke Telefonanlage bietet Asterisk durch zahlreiche Funktionen eine Grundlage für Telefonie sowie für das Unified Messaging. Des Weiteren dient die Anlage als Basis für Drittsysteme. Neben den regulären Sprachdiensten stellt Asterisk auch einen Anrufbeantworter sowie Voice-Mail zur Verfügung. Darüber hinaus sind mit diesem System Telefonkonferenzen möglich. Routing- und Callcenter-Funktionalität sind ebenso gegeben. Asterisk unterstützt Sprachdialoge (IVR) über das Mehrfrequenzwahlverfahren (DTMF). Ebenso beherrscht die Software Funktionen wie Warteschlangen und Gesprächsaufzeichnungen. Auch können Sie mit dieser Telefon-Lösung Blacklists anliegen. Zusammenfassend ermöglicht Asterisk mindestens den Funktionsumfang, der auch bei analogen Telefonanlagen zu finden ist. Über die bekannten Funktionen einer Telefonanlage hinaus hält Asterisk auch Funktionen wie Computer Telephony Integration, VoiceMail und FollowMe bereit.

Asterisk unterstützt zahlreiche Protokolle, Codecs und Zeitmultiplextechniken. Zu den letzteren gehören T1/E1, ISDN, analoge Telefonie sowie die Dienste des öffentlichen Telefonnetzes (PSTN). Die unterstützten Protokolle umfassen unter anderem SIP, H.323, MGCP, SCCP und IAX und asteriskgängige Codecs wie iLBC, GSM, Speex, G.711, G.723, G. 726 und G.729. Mit den mehreren integrierten VoIP-Standards ist eine hohe Kompatibilität mit anderen Geräten möglich. Es lässt sich eine große Anzahl verschiedener Systeme mit der VoIP auf Asterisk-Basis betreiben.

Die verschiedenen Versionen

Die verschiedenen Asterisk-Versionen lassen sich hinsichtlich ihres Supports unterscheiden. Der Anbieter stellt Versionen mit Long-Term-Support (LTS) sowie solche mit Standard-Support-Möglichkeiten bei AsteriskSupport zur Verfügung. Die Standard-Versionen haben eine kürzere Unterstützungsphase als die LTS-Varianten. In der Praxis bedeutet dies, dass der Anbieter ein Jahr lang Bugfixes anbietet. Ein weiteres Jahr lang erhalten diese Versionen Sicherheitsupdates. Long-Term-Support-Versionen umfassen die Varianten Asterisk Communications Framework sowie die Cerrified Asterisk Version. Zum Standard-Support gehört die Variante AsteriskNOW Software. Diese stellt eine gebrauchsfertige Distribution dar. Sie ist bereits fertig installiert und als ISO-Image verfügbar. Diese Version zeichnet sich durch eine einfache Installation und Handhabung aus. Sie verfügt über eine Weboberfläche, über die Konfigurationen möglich sind.

Mit dem Asterisk Communication Framework haben Sie eine Version, die über die neuesten Entwicklungen des Anbieters verfügt. Diese Version ist stets up to date und lässt sich ohne Lizenzkosten verwenden. Die Variante Certified Asterisk ist besonders auf Stabilität ausgelegt. Sie erhalten für diese Variante direkten, unmittelbaren Long-Term-Support. In dieser Version sind ausschließlich hinreichend getestete Funktionen enthalten. Sie gilt als beste Lösung für den Unternehmenseinsatz.

Anwendungsgebiete und Einsatzszenarien

Heute erfreut sich Asterisk einer vielseitigen Anwendung in verschiedenartigen Unternehmensabteilungen und -bereichen. Der Einsatzbereich reicht von der Realisation kleinerer VoIP-Systemen in Büros über das Callcenter bis hin zu größeren Unternehmen, die an mehreren Standorten präsent sind.

Asterisk eignet sich auch zur Umsetzung einer PBX-Anlage (Private Branch Exchange). Es handelt sich um private, lokale Telefonnetze innerhalb Unternehmen oder Organisationen. Der Begriff findet häufig eine synonyme Verwendung für lokale TK-Anlagen. Solche Systeme haben den Vorteil des direkten Gesprächsaufbaus bei internen Telefongesprächen. Für den Besitzer der Anlage sind diese Gespräche ohne weitere Kosten möglich. Hierbei bleiben externe Leitungen unbeeinträchtigt.

Asterisk: Stärken und Schwächen

Büro mit TK-AnlageZusammenfassend liegen die großen Vorteile der Telefonanlage in ihrem großen Funktionsumfang sowie in ihrer Flexibilität. Sie lässt sich zudem anders als viele andere Telefonanlagen kostenfrei umsetzen. Das modulare System ermöglicht individuelle Lösungen. Zudem ist die Community in dem Bereich sehr aktiv und unterstützt Sie bei verschiedenen Fragen und Problemen.

Die zahlreichen Möglichkeiten können mit dem Nachteil einhergehen, dass man als IT-Administrator große Fachkenntnis benötigt, um die Anlage zu beherrschen. Installation und Wartung benötigen eine gewisse Einarbeitung oder besser externe Unterstützung durch einen IT-Dienstleister . Ebenso verfügen reine Asterisk-Anlagen über keine eigenständige Weboberfläche. Letztere Schwäche können Sie jedoch durch die Anwendung zusätzlicher Software-Lösungen wie freebpx ausgleichen. FreePBX ist mittlerweile eine vollwertige Asterisk Installation auf Basis von Centos 7 mit einer Web-GUI, in der fast alle Administrations-Aufgaben von Asterisk durchgeführt werden können.

was ist nginx und warum ist es besser als apache?

Lange Zeit war Apache mit einem Marktanteil von bis zu 70 Prozent der Webserver für das Internet. Einzig Microsoft IIS stellte mit etwa 20 Prozent eine nennenswerte Konkurrenz dar, da es der Standard für das Betriebssystem Windows Server ist. Mit dem Erscheinen von Nginx – ausgesprochen wie das englische Engine Ex – hat sich die Situation geändert. Besonders große Plattformen setzen auf die Open-Source-Software aus Russland, da diese viele Vorteile mit sich bringt.

Webserver, Datenbanken, Programmiersprachen, Protokolle und Interpreter

Eine Webseite ist heute fast immer dynamisch programmiert. Das bedeutet, bei einer Anfrage erstellen mehrere Programme eine individuelle Antwort, statt ein vorgefertigtes, statisches Dokument auszuliefern. Die Informationen – zum Beispiel Texte, Links, Nutzernamen oder Passwörter – liegen in einer Datenbank. Skripte in einer geeigneten Programmiersprache wie PHP, Perl oder Python fragen diese ab und erstellen die Webseite.

Der Interpreter bildet eine Schnittstelle zwischen dem Skript und dem Betriebssystem – er übersetzt die geschriebenen Befehle in Computersprache. Der Webserver ist für die Kommunikation zuständig: Er nimmt Anfragen entgegen und sendet Antworten an die entsprechenden Adressen.

Um die Kommunikation zwischen Server und unterschiedlichen Endgeräten und Betriebssystemen zu ermöglichen, kommen universelle Protokolle als Gemeinsprache zum Einsatz. Für Webseiten ist dies das Hypertext Transfer Protocol (HTTP) beziehungsweise dessen verschlüsselte Variante mit dem Zusatz Secure (HTTPS). Es ist speziell für die Übertragung von Nachrichten konzipiert, für andere Zwecke wie Dateiübertragungen existieren eigene Formate wie das File Transfer Protocol (FTP).

Nginx – ein modularer Webserver mit geringem Ressourcenverbrauch

Effizienz und Geschwindigkeit zeichnen Nginx besonders aus.

Effizienz und Geschwindigkeit zeichnen Nginx besonders aus.

Um eine hohe Performance und Funktionalität zu ermöglichen, verwendet Nginx ein modulares Design. Es besteht aus einem schlanken Kernprogramm, das ein Nutzer je nach individuellen Anforderungen durch Module erweitert. Dadurch unterstützt der Webserver unterschiedliche Techniken und erlaubt die Einbindung neuer Standards etwa für Videostreaming und interaktive Inhalte. Einige der Möglichkeiten sind Lastverteilung über mehrere Server, zusätzliche Protokolle, direkter Zugriff auf den Arbeitsspeicher oder der Einsatz als E-Mail– oder Webserver für Weiterleitung (Proxy).

Eines der populärsten und interessantesten Module ist PHP-FPM. Es handelt sich um einen Prozessmanager, der die Anbindung an den PHP-Interpreter übernimmt. Die Kommunikation zwischen Webserver und Programmiersprache basiert auf einem 1993 definierten Standard – dem Common Gateway Interface (CGI). Traditionell erstellt dieses für jede Aufgabe einen neuen Prozess.

Im Unterschied zu diesem Verfahren erzeugt PHP-FPM bei Betriebsstart mehrere Interpreter im Hintergrund, auf die es je nach Auslastung Anfragen verteilt. In Verbindung mit anderen Optimierungen erreicht das Modul dadurch eine ausgezeichnete Performance.

Unterschiede zwischen Apache und Nginx

Anders als Apache legt Nginx bereits seit seiner ersten Version eine Priorität auf Effizienz und Geschwindigkeit. Apache verwendet ebenfalls ein modulares Design – eines seiner größten Nachteile ist jedoch, dass es jede Verbindung einzeln bearbeitet. Dadurch besitzt es einen sehr hohen Speicherverbrauch und die Effizienz sinkt bei hohen Besucherzahlen kontinuierlich. Aus diesem Grund setzt das Programm auf eine sogenannte „asynchrone Architektur“. Anfragen behandelt es nicht individuell, sondern bündelt sie in wenigen Prozessen, die tausende Verbindungen simultan verwalten können.

Eine häufig genutzte Funktion unter Apache sind .htaccess-Dateien. Diese ermöglichen es, durch eine lokale Datei Regeln zu definieren, die von dem Webserver ausgewertet werden. Häufige Verwendungen sind das Setzen eines Passworts für eine bestimmte Adresse oder die Umleitung von URLs im Rahmen der Suchmaschinenoptimierung (SEO). Nginx unterstützt keine .htaccess-Dateien, da diese die Performance beeinträchtigen. Es verwendet stattdessen globale – also system– oder seitenweite Einstellungen.

Für die Umwandlung von .htaccess-Befehlen in eine gültige Konfiguration existieren mehrere Konverter, die die Einrichtung erleichtern. Apache ermöglicht es, Module nachträglich einzubinden, indem Anwender diese in die Konfiguration eintragen und in den Webserver laden. Im Gegensatz dazu gehören Module bei Nginx fest zu dem kompilierten Programm. Eine Erweiterung um neue Funktionen erfordert deshalb fast immer den Austausch der installierten Programmversion.

Vor- und Nachteile von Nginx

Bekannte Website setzen auf Nginx als Webserver und erreichen täglich mehrere tausend Aufrufe.

Bekannte Website setzen auf Nginx als Webserver und erreichen täglich mehrere tausend Aufrufe.

Das Projekt Nginx entstand aus der Notwendigkeit, einen schnellen, zuverlässigen, sicheren und effizienten Webserver für die russische Suchmaschine Rambler zu entwickeln. Unter dem Gesichtspunkt der Performance ist dieser wegen dieser Eigenschaften meist die beste Wahl. Populäre Webseiten mit tausenden oder Millionen Aufrufen täglich – darunter zum Beispiel WordPress, Netflix, Apple, Spotify oder Facebook – setzen deshalb bevorzugt Nginx ein. Experten schätzen, dass der Marktanteil des Webservers unter den 10.000 beliebtesten Internetseiten bei über 60 Prozent liegt.

Für kleine Projekte bietet die Verwendung ebenfalls einige Vorteile. Er ermöglicht beispielsweise eine Reduzierung der Hardwareperformance und dadurch der Betriebskosten, ohne die Geschwindigkeit bei Reaktion oder Seitenaufbau zu beeinträchtigen. Ein großer Nachteil von Nginx ist die gegenüber Apache aufwendigere Konfiguration. Darüber hinaus schränkt dieser durch die ausschließlich globale Definition die Möglichkeiten zu einer individuellen Einrichtung bei mehreren unabhängigen Nutzern ein. Wegen dieser Eigenschaft bevorzugen viele Anbieter von Webspace für ihre Kunden nach wie vor Apache.

Apache und Nginx als kombinierter Webserver

Um die Vorteile von beiden Programmen nutzen zu können, bietet sich eine Kombination der Webserver an. In diesem Fall dient Nginx als primäre Instanz und leitet ausschließlich spezielle Anfragen an Apache weiter, um dessen Verbindungen zu minimieren. Das Verfahren benötigt Administrationsrechte auf dem Server und eine individuelle Konfiguration, kann aber den Ressourcenverbrauch erheblich verringern. Das Aufsetzen der Webserver erfordert allerdings ein entsprechendes Fachwissen.

Datenwachstum als Herausforderung der IT

Das stetige Wachstum der Datenmengen ist ein Problem, dem sich jede IT-Abteilung früher oder später stellen muss. Nutzen Sie ausschließlich klassische Speicherlösungen wie SAN oder NAS müssen die zur Verfügung stehenden Kapazitäten irgendwann mühsam erweitert werden. Eine solche Maßnahme hat des öfteren auch eine kurze downtime zur Folge, da nicht jede Erweiterung im laufenden Betrieb möglich ist.

Damit stellt sich bereits ein weiteres großes Problem ein. Kunden erwarten heutzutage, dass IT-Services zu 100 % an jedem Tag und zu jeder Stunde verfügbar sind. Downtimes werden immer weniger toleriert, besonders im Bereich von Rechenzentren sowie des Hostings. Eine mögliche Lösung um diese Zeiten zu minimieren oder gar völlig auszuschließen bietet beispielsweise Software Defined Storage oder kurz SDS.

Ceph geht neue Wege

Ceph Architektur

Abbildung 1
Ceph Architektur

Schwierigkeiten bei Software Defined Storage

CEPH ist aber keineswegs perfekt und bringt selbstverständlich auch Nachteile mit sich. Ein Merkmal mit dem man sich vor der Inbetriebnahme auseinandersetzen muss, sind die Latenzen die SDS im Vergleich zu Direct Attached Storage (DAS) mit sich bringt. Die erhöhte Komplexität des Software Stacks in Kombination mit den verwendeten Netzwerkverbindungen erhöhen die Latenz pro IO signifikant.

Es erweist sich als äußerst schwierig die Latenz unter den Wert von einigen Millisekunden für Schreibvorgänge zu senken. Woher diese Latenz kommt lässt sich verdeutlichen, wenn man sich die Arbeitsweise von CEPH bei Schreibvorgängen etwas genauer betrachtet (Abbildung 2).

Ein synchroner IO muss vom Client zur primären OSD gesendet werden. Die primäre OSD schickt anschließend die Anzahl konfigurierter Replikationen zu weiteren OSD’s und deren Journalen. Sobald die Repliken auf den Journalen aller OSD’s vorliegen, wird der Vorgang an die primäre OSD bestätigt. Hat die primäre OSD nun alle Bestätigungen erhalten, wird eine Bestätigung an den Client gesendet und dieser kann den nächsten IO senden. Das verdeutlicht schon weshalb es bereits zu Latenzen innerhalb des Software Stacks kommt.

SDS mit Ceph - Arhcitektur

Abbildung 2

Zusätzlich spielt auch das eingesetzte Netzwerk bei Ceph eine entscheidende Rolle. Es gilt hier zunächst unnötige Hops zu vermeiden, da jeder Hop etwa 200us Latenz mit sich bringt. Ein 10GE Netzwerk gilt hierbei als das absolute Minimum, welches Sie beim Einsatz von Ceph oder einem anderen verteilten Speichersystem verwenden sollten. Das verringert Latenzen und erhöht die Bandbreite. Eine zusätzliche Verbesserung bringt Ihnen selbstverständlich der Einsatz von RDMA, jedoch müssen hier die Kosten beachtet werden. All diese Faktoren spielen eine wichtige Rolle und müssen optimiert werden um Latenzen unter dem 2ms Level zu erhalten und dabei eine Balance zwischen Kosten und Nutzen zu finden, was natürlich nicht immer einfach ist.

 

Anforderungen an eine gute SDS Lösung

Damit Sie nach der Einführung einer SDS Lösung wie Ceph nicht enttäuscht sind, gibt es einige Punkte zu beachten. SSDs oder (Enterprise SSD oder NVME SSD) für die Journale, in denen die Schreibvorgänge gecached werden, sowie ein 10GE Netzwerk sind nach herrschender Meinung innerhalb der Ceph Community und unseren eigenen Erfahrungen ein Muss. Für die OSD’s sollten nach Möglichkeiten SAS3 HDD’s verwendet werden. Es ist auch denkbar bei Bedarf einen Teil der OSD’s rein aus SSDs zu erstellen und gesondert zur Verfügung zu stellen. Wichtig ist zudem keine RAID Arrays zu verwenden. Ceph profitiert stark von vielen unabhängigen Festplatten. Einem schwerwiegenden Datenverlust entgehen Sie zudem indem Sie mehrere Server mit möglichst vielen Festplatten (OSD’s) bereitstellen

Die CPU sollte möglichst viele Prozessor-Kerne haben, und der Arbeitsspeicher mit etwa 1-2 GB pro OSD berechnet werden um hier keinen Flaschenhals zu generieren. Der Einsatz von RDMA muss wohl überlegt sein und kommt auf den speziellen Workload an. Werden extrem niedrige Latenzen und hohe Bandbreite über 10 GE benötigt bietet es sich eventuell eher an auf ein spezielles Storage System wie GPFS, BeeGFS oder Lustre  in Kombination mit Infiniband/Omnipath zu setzen.

Fazit zu Ceph

Zusammenfassend lässt sich sagen, dass Software Defined Storage definitiv eine gute Möglichkeit darstellt, um stetig wachsende Datenbestände einfacher zu verwalten. Jedoch hat Software Defined Storage genau wie jede andere Lösung gewisse Einschränkungen denen man sich bewusst sein muss. Im modernen IT-Betrieb wird man aber nicht auf SDS verzichten können. Die mitgebrachten Vorteile wie Skalierbarkeit, einfache Erweiterung und eine sehr hohe Verfügbarkeit werden zunehmend wichtiger.

Weiterführende Links zum Thema:

Tutorial

Einleitung: Hochverfügbarkeit mit Pacemaker und Corosync

Mit Pacemaker und Corosync können mehrere Linux-Hosts eine einfache Form der Hochverfügbarkeit (engl. High availability, kurz HA) erreichen. So können mit Pacemaker IP-Adresse, ganze Webserver oder auch File-Systeme hoch-verfügbar gemacht werden.

Anhand einer so genannten Service-IP-Adresse beschreiben wir nachfolgend das Prinzip von Pacemaker und Corosync. Pacemaker übernimmt dabei die Verwaltung der Cluster-Resourcen. Corosync kümmert sich um die Kommunikation zwischen den Hosts.

Auf diese Weise lassen sich zum Beispiel mit einer Master-Master-Replikation von mariadb/mysql hochverfügbare Datenbank-Lösungen erstellen. Mit der OpenSource-Software glusterfs lassen sich zusammen mit Pacemaker und Corosync ganze Dateisysteme als HA-Lösung konfigurieren.

Alle nachfolgend genutzten Software-Pakete (Centos, Pacemaker und Corosnyc) sind genauso wie maysql und mariadb OpenSource Produkte.

Versuchsaufbau für Corosync und HA

Für unser nachfolgendes Tutorial erstellen wir zwei identische Linux-Hosts mit CentOS die jeweils einen Netzwerkanschluss sowie eine eigene statische IPv4-Adresse im selben IP-Subnetz haben. Die Linux-Rechner sollen anschließend eine dritte IP-Adresse (nachfolgend Service-IP genannt) erhalten, die entweder auf dem einen oder dem anderen Linux-Server „gehostet“ wird.

Ziel ist es, diese Service-IP-Adresse immer erreichbar zu haben und dennoch einen der beiden Hosts für Wartungszwecke herunter fahren zu können. Auf diese Weise kann mit einfachen Mitteln eine einfache Form der Hochverfügbarkeit erreicht werden.

Hinweis: Auch wenn wir Pacemaker und Corosync hier exemplarisch unter Centos 7 einrichten, so geht das natürlich auch auf anderen Linux-Distributionen wie debian, Ubuntu oder Redhat . Hier unterscheiden sich lediglich die Kommandos für die Installation der Pakete (apt-get bei debian).

Unser Setup für das Pacemaker Tutorial:

  • 2 CentOS 7.5 Hosts mit je einer statischen IP-Adresse
  • Host 1: testdb01, 168.0.113
  • Host 2: testdb02, 168.0.114
  • Service-IP-Adresse: 168.0.115

Für alles weitere installieren wir CentOS 7.x (z.B. auf einer Vitualisierungsplattform wie VMWare oder Proxmox). Die Linux-Hosts benötigen im produktiven Betrieb 1-2 CPU-Kerne, 2 GB RAM und 20 -30 GB an Festplatte. Wer einfach nur testen will, kommt auch mit einem CPU-Kern, 1 GB RAM und 3-4 GB HDD aus.

Wir richten pro Host die statische IP-Adresse ein und lassen mit „yum-y update“ alle Updates durchlaufen. Für alles weitere deaktivieren wir den CentOS Firewalld (systemctl disable firewalld) und deaktivieren „selinux“ ( In der Datei /etc/sysconfig/selinux ersetzen Sie das die Zeile, die mit „SELINUX“ beginnt durch SELINUX=disabled )

Installation von Corosync bzw. Pacemaker

Die Softwarepakete pacemaker, pcs und corosync müssen unter Centos auf allen Hosts installiert werden die später Mitglieder des Clusters werden. Die Installation erledigen wir mit:

1
yum -y install pacemaker pcs

In der Standard-Version werden hier gleich ca 25-30 weitere anhängige Pakete mit installiert, die für den Betrieb notwendig sind. Im Anschluss daran aktivieren wir den pcsd Dienst und starten ihn:

1
2
systemctl enable pcsd.service
systemctl start pcsd.service

Damit die unterschiedlichen Hosts bzw. die Dienste auf den Hosts mit einander sprechen können, benötigen Sie einen Benutzer mit Kennwort. Während der Installation wird automatisch ein neuer User namens „hacluster“ angelegt: Diesem geben wir nun noch ein Passwort:

1
passwd hacluster

Achten Sie darauf, daß auf beiden Hosts das Passwort für den benutzer „hacluster“ nach Möglichkeit identisch ist

Cluster Dienst einrichten

Damit die Knoten miteinander kommunizieren können, tauschen wir nun erst einmal die Authentifizierungen aus:

1
2
3
4
5
[root@testdb01 mysql<strong>]# pcs cluster auth testdb01 testdb02</strong>
Username: hacluster
Password:
testdb01: Authorized
testdb02: Authorized

Die Meldung von beiden Knoten muss “Authorized” lauten – dann kommunizieren die Hosts erfolgreich miteinander.

Cluster – alte Pacemaker Konfiguration löschen

Zur Sicherheit „zerstören“ bzw. löschen wir alle bisherigen Konfigurationen auf den beiden Hosts.

Hinweis: Bei einer brandneuen Installation ist dieser Schritt nicht nötig.

1
2
3
4
5
6
[root@testdb01 mysql]# pcs cluster destroy --all
Warning: Unable to load CIB to get guest and remote nodes from it, those nodes will not be deconfigured.
testdb01: Stopping Cluster (pacemaker)...
testdb02: Stopping Cluster (pacemaker)...
testdb02: Successfully destroyed cluster
testdb01: Successfully destroyed cluster

Neues Pacemaker Cluster erstellen.

Nun erstellen wir in neues “Cluster” aus zwei Knoten bzw. Hosts. Die Hosts heißen bei uns „testdb01“ und „testdb02“. Das Cluster selbst nennen wir „testdb. Direkt nach dem Abschicken des Befehls „pcs cluster setup“ werden zuerst die Zertifikate ausgetauscht.

Voraussetzung ist, daß die beiden Hosts sich im vorherigen Schritt (pcs cluster auth) erfolgreich gegenseitig authentifiziert haben.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@testdb01 ~]# pcs cluster setup --name testdb testdb01 testdb02
Destroying cluster on nodes: testdb01, testdb02...
testdb02: Stopping Cluster (pacemaker)...
testdb01: Stopping Cluster (pacemaker)...
testdb01: Successfully destroyed cluster
testdb02: Successfully destroyed cluster
Sending 'pacemaker_remote authkey' to 'testdb01', 'testdb02'
testdb01: successful distribution of the file 'pacemaker_remote authkey'
testdb02: successful distribution of the file 'pacemaker_remote authkey'
Sending cluster config files to the nodes...
testdb01: Succeeded
testdb02: Succeeded
Synchronizing pcsd certificates on nodes testdb01, testdb02...
testdb01: Success
testdb02: Success
Restarting pcsd on the nodes in order to reload the certificates...
testdb01: Success
testdb02: Success

Konfiguration von Corosync prüfen:

Zur Sicherheit werfen wir einen Blick in die nun auf beiden Hosts vorhandene Konfig-Datei unter /etc/corosync/. Sie heißt dort „corosync.conf“

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@testdb01 ~]# more /etc/corosync/corosync.conf
totem {
version: 2
cluster_name: filecluster
secauth: off
transport: udpu
}
nodelist {
node {
ring0_addr: testdb01
nodeid: 1
}
node {
ring0_addr: testdb02
nodeid: 2
}
}
quorum {
provider: corosync_votequorum
two_node: 1
}
logging {
to_logfile: yes
logfile: /var/log/cluster/corosync.log
to_syslog: yes
}

Corosync Cluster starten

Mit dem Befehlt “pcs cluster start –all” starten wir auf einem Knoten corosync auf allen zum Cluster gehörenden Hosts.

Wichtig: Das muss nur an auf einem Host/Knoten erfolgen.

1
2
3
[root@testdb01 ~]# pcs cluster start --all
testdb02: Starting Cluster...
testdb01: Starting Cluster...

Corosync und Pacemaker aktivieren und starten

Damit wir nun etwas Praktisches tun können, müssen sowohl der corosync-Dienst als auch Pacemaker aktiviert und gestartet werden.

Auf testdb01 und testdb02 führen wir also aus

1
2
3
4
systemctl enable corosync.service
systemctl start corosync.service
systemctl enable pacemaker.service
service pacemaker start

Anschließend prüfen wir den Status mit “pcs status“. Nun sollte ‚pcs status‘ etwas sinnvolles ausgeben , auch wenn noch keine Resource vorhanden ist

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@testdb01 ~]# pcs status
Cluster name: testdb
Stack: corosync
Current DC: testdb01 (version 1.1.18-11.el7_5.2-2b07d5c5a9) - partition with quorum
Last updated: Wed Jun 13 12:50:58 2018
Last change: Wed Jun 13 12:50:55 2018 by root via cibadmin on testdb01
2 nodes configured
0 resources configured
Online: [ testdb01 testdb02 ]
No resources
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled

Wir sehen: Auf dem Knoten testdb01 sind alle drei Dienste (corosync, pacemaker und pcsd) aktiv und gestartet. Der Hinweis „no resources“ bedeutet, daß wir noch keine Resource (etwa eine IP) definiert haben.

Corosync anpassen (2 Host Szenario)

In unserem Fall von 2 Hosts mach weder ein Quorum (die Mehrheit unter den Servern) noch Stonith (Mechanismus zum „Abschiessen“ von schwächelnden Hosts) inhaltlich Sinn. Für ein Quorum bräuchten wir mindestens 3 Hosts. Mit den beiden folgenden Befehlen stellen wir sowohl das Quorum als auch stonith dauerhaft ab.

1
2
pcs property set stonith-enabled=false
pcs property set no-quorum-policy=ignore

Virtuelle Resource / Virtuelle IP anlegen

Wir möchten nun eine einfache IPv4-Adresse als einzige Resource anlegen und auf einem der beiden Hosts verfügbar machen. Mit dem folgenden Befehl wird die Service-IP für das Cluster angelegt:

1
pcs resource create &lt;Resource-Name&gt; ocf:heartbeat:IPaddr2 ip=&lt;IP-Addr&gt; cidr_netmask=&lt;Netmask&gt; op monitor interval=5s

Die Variable <Resource-Name>, <IP-Addresse> und <Netmask> ersetzen wir natürlich durch die tatsächlichen Werte.

Wichtig hierbei: Die IP-Adresse muss zum Netzwerk bzw. IP-Subnetz passen, in dem der Hosts seinen Netzwerkanschluss hat.

Wir legen nun also eine zusätzliche IP-Adresse mit dem Namen „testdb-ip“, der Nummer 192.168.0.115 sowie der Netzmaske 24 (entspricht 255.255.255.0) an, die entweder auf testdb01 oder auf testdb02 gehostet wird. Sie soll außerdem vom Cluster alle 5 Sekunden geprüft werden.

1
[root@testdb01 ~]# pcs resource create testdb-ip ocf:heartbeat:IPaddr2 ip=192.168.0.115 cidr_netmask=24 op monitor interval=5s

Anschließend prüfen wir ob die IP-Adresse auch erfolgreich vom Cluster verwaltet wird:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@testdb01 ~]# pcs status
Cluster name: testdb
Stack: corosync
Current DC: testdb01 (version 1.1.18-11.el7_5.2-2b07d5c5a9) - partition with quorum
Last updated: Wed Jun 13 12:52:35 2018
Last change: Wed Jun 13 12:52:32 2018 by root via cibadmin on testdb01
2 nodes configured
<strong>1 resource configured</strong>
Online: [ testdb01 testdb02 ]
Full list of resources:
 testdb-ip (ocf::heartbeat:IPaddr2): Starting testdb01

Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled

Ergebnis: Die Resource “testdb-ip” startet direkt auf dem Host testdb01

 

Nun prüfen wir noch am Adapter nach, ob dort ebenfalls die Service-IP vorhanden ist:

1
2
3
4
5
6
7
8
9
10
[root@testdb01 ~]# ip addr
(..)
2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 76:f3:cc:53:fa:6b brd ff:ff:ff:ff:ff:ff
inet 192.168.0.113/24 brd 192.168.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet <strong>192.168.0.115/24</strong> brd 192.168.0.255 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::3522:f3f3:80cd:7aae/64 scope link noprefixroute
valid_lft forever preferred_lft forever

Ergebnis: Der Netzwerkadapter eth0 hat zusätzlich zu seiner festen IP (192.168.0.113) noch die IP-Adresse 192.168.0.115 die wir vorher als Cluster-Reosurce erstellt haben.

 

Empfehlung: Um im Fehlerfall die Konfiguration von Pacemaker bzw. Corosync schnell wieder anlegen zu können, empfiehlt es sich auf einem der beiden Linux-Hosts die Befehle vom Anlegen des Clusters bis hin zu Einrichtung der Cluster-Resource(n) in einer Bash-Datei abzuspeichern.
Damit kann im Fehlerfall durch einfaches Löschen und neu Anlegen der Konfiguration sowie der Resourcen in 20 bis 30 Sekunden eine Cluster-Einrichtung erfolgen.

 

 

Verwaltung von Corosync / Pacemaker

Cluster-Resourcen manuell verschieben.

In der Praxis wechselt die IP-Adresse nur dann von einem Host, wenn der aktive Host herunter fährt oder der Corosync-Dienst angehalten wird. Möchte man die Cluster-Resource von Hand von einem Host auf den anderen verschieben, so geht das mit:

pcs resource move <resource-name> <nodename>

Beispiel:

1
pcs resource move testdb-ip testdb02

Cluster-Resource entfernen

So wie eine Cluster-Resource angelegt wird, so kann sie natürlich auch gelöscht bzw. entfernt werden:

Syntax: pcs resource delete <Resource-Name>

Bsp.:

1
pcs resource delete testdb-ip

 

Fehler / Troubleshooting von Corosync / Pacemaker /pcsd

Sofern immer ein Host online ist, sind Fehler bei Corosync/Pacemaker eher selten. Wenn doch einmal etwas nicht geht, dann empfiehlt sich folgende Vorgehensweise:

Dienste (Pacemaker/Corosync/pcsd) stoppen und neu starten

Alle relevanten Dienste stoppen:

1
service corosync stop; service pacemaker stop; service pcsd stop;

Alle relevanten Dienste starten:

1
service pcsd start; service pacemaker start; service corosync start;

Danach ermitteln Sie auf beiden Hosts einzeln mit “pcs status” ob die Hosts sich gegenseitig als “online” sehen und ob die Cluster-Resource(n) vorhanden sind.

Die harte Tour: Konfig neu anlegen.

Für den unwahrscheinlichen Fall, dass ein Fehler hartnäckiger ist, kann aus Zeitgründen die Konfiguration auch kurzerhandgelöscht und neu gestartet werden.

Dazu stoppen Sie auf beiden Hosts alle Dienste und löschen anschließend die Konfigurationsdateien auf beiden Hosts. Danach legen Sie die Konfiguration (wie oben beschrieben) neu an.

Das ist in vielen Fällen einfacher und vor allem schneller als eine langwierige Fehlersuche.

Vorgehen:

1
2
3
4
5
6
# Dienste stoppen
service corosync stop; service pacemaker stop; service pcsd stop;
# Konfig Dateien löschen
/etc/corosync/corosync.conf löschen
/etc/pacemaker -&gt; Dateien löschen.
#Ggf. Dienste deaktivieren

Danach noch mal neu aufsetzen wie oben beschrieben. (geht in der Regel schneller als eine lange Fehlersuche)

Weiterführende Infos

 

Das Dashboard gibt direkt nach der Anmeldung via Web eine Übersicht über den Status der pfsense

1 Was ist eine pfsense Firewall?

Pfsense ist eine Opensource Firewall-Software. D.h. die Software wird von vielen Entwicklern weltweit „kostenlos“ programmiert und kann von jedem (sowohl Einzelpersonen als auch Firmen) genutzt werden. Pfsense basiert auf FreeBDS – einem Linux Derivat. Im Gegensatz zu den meisten Linux-Systemen auf denen das Programm „iptables“ für Firewall-Regel zum Einsatz kommt, nutzt FreeBSD zur Steuerung von Netzwerk-Verkehr einen Paket-Filter. Das „pf“ von PFsense steht für Paket-Filter. In diesem Tutorial beschreibe ich Schritt für Schritt wie Sie eine pfsense installieren und die Firewall anschließend selbst konfigurieren.

PFsense kann unter https://www.pfsense.org/download/ herunter geladen werden. Auf der Website von pfsense.org kann auch direkt Firewall-Hardware gekauft werden. Für unsere Zwecke reicht aber bereits ein älterer PC. Dazu gleich mehr.

Neben pfsense gibt es noch eine Anzahl weiterer Firewalls die auf Opensource basieren.
– IPCOP (mittlerweile veraltet),  http://www.ipcop.org/
– M0n0wall: http://m0n0.ch
– Endian http://www.endian.com/de/
– OPNsense: https://opnsense.org/about/about-opnsense/ (Fork von pfsense)

Pfsense ist unter den Opensource Firewalls das zur Zeit (Stand 2017) bekannteste Projekt und hat dabei die größte aktive Anzahl an Entwickler bzw. Supportern.

2 pfsense Hardware: Virtuelle Maschine anlegen / PC vorbereiten

Um eine pfsense zu installieren benötigen Sie meistens wenig echte Hardware-Ressourcen. Wichtig sind 2 Netzwerk-Karten. Ohne zweite Netzwerk-Karte macht der Firewall wenig Sinn, da er ja nun mal zwei Netze (das interne und das externe) voneinander trennt.

Wenn die pfsense physisch installiert werden soll: 2- Kerne, 2 GB RAM, 10 -15 GB HDD. Oft ge-nügt ein alter PC (auf Celeron Basis), in den eine zweite Netzwerkkarte eingebaut wird. Wichtiger als die Leistung des Geräts ist die Zuverlässigkeit und Stabilität der Firewall. Schließlich soll die pfsense Firewall ja viele Monate bzw. Jahre zuverlässig ihren Dienst tun.

Für die pfsense gibt es fertige Distributionen für so genannte Appliances. Das sind fertige Geräte (meist auf Basis einer kleineren CPU – Atom bspw.) bei denen neben wenig RAM eine Flash-Speicherkarte eingebaut ist. Diese sind oft sehr genügsam was den Stromverbrauch angeht und reichen für kleine Firmen oder Home-Offices meistens aus.

Ebenso genügsam sind die Anforderungen wenn die pfsense z.B. unter VMWare virtualisiert wird. Hierbei wieder wichtig: 2 NICs mit je einem Bein im LAN und einem Bein im WAN.

3 pfsense installieren

3.1 Installation

Zur Installation einer pfsense legen Sie die CD ins Laufwerk, booten und folgen anschließend dem Assistenten (engl. Wizard). Auf Geräten, die von USB booten können, reicht oft auch ein bootbarer USB-Stick auf dem Sie vorher das ISO-Image von pfsense entpackt haben.
Download: https://www.pfsense.org/download/

Der Installations-Screen der pfsense

Der Installations-Screen der pfsense

Die Fragen des Installations-Assistenten bestätigen Sie mit „ok“ und lassen die Installation durch-laufen. Der Reihe nach werden nun erst die notwendigen File-Systeme angelegt, anschließend formatiert und danach mit den Bits und Bytes der pfsense-Distribution bestückt.

Bei der Installation werden die Filesysteme neu formatiert - daher vorher Daten sichern!

Bei der Installation werden die Filesysteme neu formatiert – daher vorher Daten sichern!

Der Vorgang ist je nach Geschwindigkeit der Hardware – insb. Der Festplatte – nach einigen, we-nigen Minuten fertig. Danach werden Sie aufgefordert die neu installierte Firewall neu zu booten.

Am Ende der Installation folgt der obligatorische Reboot

Am Ende der Installation folgt der obligatorische Reboot

Bestätigen Sie das, entfernen Sie die CD-ROM (egal ob physisch oder virtuelle) und rebooten die Firewall.

3.2 Konfiguration

Nach dem Reboot meldet sich die pfsense Firewall mit dem Einrichtungs-Bildschirm. Hier müssen Sie zunächst die Zuweisung der Netzwerk-Interfaces durchführen.
Tipp: Sofern Sie eine virtuelle pfsense einrichten: Schauen Sie unter VMWare nach den MAC-Adressen und notieren sich diese (meist reichen die letzten 3-4 Stellen um die Anschlüsse ausei-nander zu halten). Bei physischen Maschinen schauen Sie vorher auf die Interface-Karten oder notieren sich die MAC-Adresse im Bios.

Der wichtigste Punkt der Konfiguration: Zuweisung der Netzwerk-Schnittstellen

Der wichtigste Punkt der Konfiguration: Zuweisung der Netzwerk-Schnittstellen

Wählen Sie im obigen Screen (1) um die Zuordnung des externen (WAN) und internen (LAN) Inter-faces durchzuführen. Mit (2) ändern Sie direkt danach mindestens die LAN-Adresse der Firewall auf ihr Netzwerk ab.

Direkt danach müssen Sie von einem PC/Server im internen LAN die IP-Adresse der Firewall pin-gen können (hier im Beispiel 192.168.1.254). Sofern der Ping auf das LAN-Interface der pfsense erfolgreich isrt, wechseln Sie für alle weiteren Arbeiten auf einen PC/Notebook/Server im internen LAN.

Melden Sie sich dort mit einem Browser an der LAN-Adresse des Firewalls an. URL: https://192.168.1.254
Das initiale Passwort für die erste Anmeldung lautet „pfsense“. Der Username ist „admin“.

3.3 Wizard starten

Starten Sie im Web-Browser anschließend den Wizard, mit dem Sie DNS, Zeitzone und die Zeit-Server einrichten:

Die Einstellungen sind an sich fast selbst erklärend:

Einstellen der korrekten Zeitzone für die pfsense Firewall

Einstellen der korrekten Zeitzone für die pfsense Firewall

 

Zum Schluß ändern Sie die WAN-Adresse des externen Interfaces und ändern das Passwort für den Web-Benutzer „admin“ ab.

Last but not least: Ein sicheres Passwort für die Web-Oberfläche der pfsense

Last but not least: Ein sicheres Passwort für die Web-Oberfläche der pfsense

Damit ist der Wizard abgeschlossen und die Firewall fast betriebsbereit.

Lesetipp: Wie Sie sich selbst schwierige Passwörter gut merken können.

3.4 Minimal-Regeln

Die pfsense Firewall hat in ihrer Grund-Einstellung folgenden Regeln (siehe Screenshot weiter unen). Diese finden Sie unter Firewall => Rules.

Die Standard-Regeln für die Firewall nach der ersten Installation.

Die Standard-Regeln für die Firewall nach der ersten Installation.

Aller Netzwerk-Verkehr aus dem LAN kann von intern nach extern ist erlaubt und wird mit Network Adress Translation (NAT) von internen IP-Adressen auf externe gemappt. (Tab bzw. Rei-ter „LAN“)
Aller Netzwerkverkehr von außen nach innen wird blockiert. (Tab bzw. Reiter „WAN“)

Bitte testen Sie nun von einem Endgerät aus dem LAN heraus ob Sie eine öffentliche Adresse pingen können.
Test: Ping zu 8.8.8.8 geht? Gut. Dann machen Sie weiter

4 pfsense konfigurieren / Update der pfsense / weitere Anpassungen

4.1 Software-Updates

Jetzt ist ein guter Zeitpunkt, um die pfsense auf den aktuellen Stand der Software zu bringen. Sie erhalten die SW-Updates online aus dem Repository von pfsense:
System -> Updates -> durchlaufen lassen. => Reboot.

Achtung: Beim Reboot werden je nach Update Umfang mehrere Pakete entpackt und installiert.
Das kann ein paar Minuten dauern. Halten Sie durch – bitte nicht die Nerven verlieren. Sofern Sie die pfsense virtuell auf VMWare oder Hyper-V installiert haben, können Sie sich den Fortschritt der Installation direkt auf der System-Konsole anschauen.

4.2 DNS einstellen

Per Default ist auf der pfsense ein DNS-Resolver eingestellt. Das kann man so lassen oder den DNS-Resolver aus machen und DNS-Forward (empfohlen) einstellen.
Ein DNS-Resolver ist dabei der eigentliche DNS-Dienst. Die pfsense übernimmt also normale DNS-Aufgaben.
Beim DNS-Forwarder werden DNS Anfragen von der pfsense direkt an einen erreichbaren DNS-Server weiter geleitet.

4.3 NTP einstellen

Beim NTP-Service binden Sie den NTP-Dienst bitte an das LAN-Interface und setzen zusätzlich zum Eintrag „0.pfsense.pool.ntp.org“ den zweiten „1.pfsense.pool.ntp.org“.

Bindung des NTP-Dienstes an den internen LAN-Port

Bindung des NTP-Dienstes an den internen LAN-Port

4.4 SSH Dienst

Die pfsense sollte nur intern via ssh zu erreichen sein. Dazu müssen Sie den ssh-Dienst aber erst frei schalten: System -> advanced => Ssh erlauben.
In diesem Zusammenhang macht es Sinn, die „System Console“ mit einem Passwort zu schützen.

4.5 Weitere Services auf einer pfsense

Wer mag kann nun noch SNMP ermöglichen. Ebenso hat die pfsense die Möglichkeit einen Wake-On LAN Dienst zu betreiben. Auch ein DHCP Services ist vorhanden.

4.6 Log Einstellungen

Einstellen der Protokollierung auf der pfsense Firewall

Einstellen der Protokollierung auf der pfsense Firewall

Um später in den Auswertungen und Protokollen der pfsense immer die aktuellen Einträge oben zu haben, setzen Sie unter Status => System Logs => Settings den Haken bei „… show log entries in reverse order“.

5 Weitere Setup-Punkte auf der pfsense Firewall

Hier nur der Reihe nach weitere Einstellungen, die auf einer pfsense möglich sind.

5.1 Weitere Interfaces.

Die pfsense kann weitere Interfaces haben. Bspw. eines für eine DMZ (demilitarisierte Zone) oder für ein WLAN. Sobald die pfsense das Interface als solches erkannt hat, können Sie den Anschluss auch konfigurieren. Sofern im verbauten PC ein WLAN-Chip vorhanden ist, mit dem die pfsense bzw. Free-BSD etwas anfangen kann, so aktivieren Sie diesen unter =>Interfaces => „assign“ => Wireless.
Unter => Interfaces => „assign“ können Sie generell die weiteren Interfaces einem physischen Netzwerk-Anschluss zuweisen.

Zuweisung weiterer Interfaces z.B. für eine DMZ oder das WLAN

Zuweisung weiterer Interfaces z.B. für eine DMZ oder das WLAN

Die eigentliche Einrichtung des zusätzlichen Interfaces machen Sie danach unter => Interfaces => „Interface-Name“.

5.2 Weitere IP-Adressen

Für bestimmte Einsatzfälle können weitere externe IP-Adressen interessant sein. Diese werden der pfsense unter => Firewall => Virtual IPs eingetragen und können anschließend genutzt werden.
Einsatzfall: Die Mails an den internen Mail-Server sollen über eine zweite IP-Adresse angenommen werden.

5.3 VLANs

Für den Fall, daß Sie mehr Anschlüsse an der pfsense benötigen als Sie Adapter haben, können Sie VLANs einsetzen. Voraussetzung dafür ist allerdings, daß Sie einen VLAN-fähigen Switch nut-zen und dieser entsprechend konfiguriert ist.

5.4 Carp / pfsync

Sofern man zwei pfsense Firewalls als redundante Lösung einsetzen möchte, so bietet die pfsense auch hier eine entsprechende Funktion an. Dazu benötigen Sie zwei baugleiche Geräte – die in jedem Fall die gleiche Anzahl an Interface-Anschlüssen haben müssen.
Damit pfsync funktioniert, benötigt jede Firewall ein weiteres Interface mit dem es sich mit der Nachbar-Firewall austauschen kann. Über dieses Netzwerk wird dann ein so genannter Heartbeat ausgetauscht über den die Firewalls ermitteln welche Firewall im Moment das „führende“ System ist.

5.5 Dynamic DNS / DynDNS & Co

Nur für den Fall, daß die pfsense keine feste (=statische) IP für das WAN-Interface hat: die pfsense kann mit mehreren Dutzend Anbietern von DynDNS Lösungen umgehen. Diese tragen Sie unter => Services => Dynamic DNS ein.

DynDNS Einstellung in der Konfig der pfsense

DynDNS Einstellung in der Konfig der pfsense

Die pfsense meldet dann jeweils beim Update des WAN-Interfaces die neue externe IP an den Service-Anbieter (z.B. DynDNS).
Wichtig dabei zu wissen: Ein zuverlässiger Betrieb von Inhouse-Servern, die über das Internet erreichbar sein sollen, ist auf diesem Weg nicht zu erreichen.

5.6 Traffic Shaper

Mit dem Traffic Shaper kann Netzwerk-Verkehr priorisiert werden. Dazu gibt es grob gesagt zwei Einsatzfälle:

5.6.1 Internen Netzwerk-Verkehr nach extern priorisieren.

Der Netzwerkverkehr einiger Geräte soll hoch oder runter priorisiert werden.
Bsp.: Der Traffic der Kinder (im LAN) die ständig auf Youtube Videos schauen soll gegenüber dem restlichen Zugriffen aufs Internet runter priorisiert werden, damit die Eltern flüssig arbeiten können.
Oder: VoIP-Verkehr wird gegenüber Daten-Verkehr hoch priorisiert.

5.6.2 Verkehr nach extern über mehrere Leitungen priorisieren.

Für den Fall dass an der pfsense mehrere WAN-Anschlüsse vorhanden sind, kann der ausgehende und eingehende Verkehr über eben diese Anschlüsse intelligent verteilt werden.

Für beide Fälle empfiehlt sich die Nutzung des Wizards, mit dem die ersten Regeln für den Netz-werk-Verkehr erstellt werden.

5.7 Virtual Private Network (VPN)

Die pfsense kann mit anderen Firewalls über die folgenden Protokolle verbunden werden:
– IPSEC
– OpenVPN
– L2TP (Layer 2 Tunnel Protokoll)
Wir verwenden bei der Biteno
– IPSEC um Standorte zwischen zwei Firewalls miteinander zu vernetzen
– OpenVPN für die Einwahl von Benutzern.

In begründeten Ausnahmen kann man auch OpenVPN für die Standort-Vernetzung verwenden oder IPsec für die Einwahl von Benutzern.

Die ausführliche Beschreibung eines VPN für Benutzer auf Basis von OpenVPN auf einer pfsense haben wir im Blog des IT Dienstleisters Biteno GmbH schon einmal hier beschrieben.

6 Status / Log-Files / Was tut die pfsense

Die pfsense gibt über eine Art Dashboard direkt nach der Anmeldung in der Weboberfläche bereits einen guten Überblick über den aktuellen Zustand der Firewall:

Das Dashboard gibt direkt nach der Anmeldung via Web eine Übersicht über den Status der pfsense

Das Dashboard gibt direkt nach der Anmeldung via Web eine Übersicht über den Status der pfsense

Unter (1) erkennen Sie ob ein neues SW-Release vorhanden ist und installiert werden kann.
Unter (2) und (3) erkennen Sie auf einen Blick wie ausgelastet die pfsense ist.
Rechts oben bei (4) haben Sie alle Interfaces im Blick.
Sofern Sie weitere Software wie etwa Snort installiert haben, sehen Sie dessen letzte Meldungen unter (5).

6.1 Aktuellen Netzwerk Verkehr beobachten

Die aktuelle Auslastung der pfsense sehen Sie unter => Status => Traffic Graph. Hier sehen Sie wer in diesem Moment welche Bandbreite nutzt.

Traffic Graph in der pfsense

Traffic Graph in der pfsense

6.2 Historische Verbrauchs / Traffic-Daten

Um die vergangene Auslastung der pfsense einzusehen gab es in der Version 1.x unter => Status => RRD Graphs eine Darstellung des vergangener Auslastung der Interfaces. Seit der Version 2.x der pfsense ist das Tool etwas versteckt. Sie finden es nun unter => Status => Monitoring.

Historische Traffic-Darstellung (ehemals RRD Graph)

Historische Traffic-Darstellung (ehemals RRD Graph)

Dort müssen Sie allerdings oben links „left axis“ zuerst „Traffic“ im Drop-Down Menü auswählen.
Danach können Sie unter „Time Period“ die gewünschte Dauer einstellen.

7 Weitere Regeln für die Firewall

In den meisten Fällen möchten Sie den vorhandenen Regel-Satz für den Netzwerk-Verkehr auf der pfsense abändern.
Egal ob Sie von bestimmten PCs aus nur eingeschränkte Internet-Nutzung erlauben wollen, oder Mails von außen nach innen durchlassen möchten. Sie müssen dazu entweder eine neue Regel anlegen oder eine bestehende Regel verändern.

7.1 Ein gut gemeinter Rat zur Verwaltung von Regeln auf der Firewall

Wiederstehen Sie bitte unbedingt der Versuchung direkt in einzelne Firewall-Regeln direkt IP-Adressen einzutragen. Auf Dauer werden Sie mit wachsender Anzahl von Regeln ihr eigenes Re-gelwerk nicht mehr durchschauen. Nutzen Sie unbedingt Aliases für die Gruppierung von Hosts, Netzen oder einzelnen Ports.

7.2 Alias-Liste anlegen

Bevor Sie Regeln auf einer pfsense erstellen, sollten Sie sich kurz die Sektion Firewall => Aliases anschauen. Hier können Sie beliebige Gruppen (Aliase) bilden. Eine Gruppe kann dabei aus Hosts-Einträgen (in der Regel IP-Adressen), ganzen Netzwerken oder einzelnen TCP-Ports bestehen.
Legen Sie als Beispiel einmal eine neue Gruppe mit dem Namen SMTPSender an.

Einen Alias anlegen auf der Firewall

Einen Alias anlegen auf der Firewall

Sie müssen dazu lediglich einen möglichst sprechenden Namen wählen und die Art (Type) der Liste. Wählen Sie hier „Host(s)“ aus.
Fügen Sie der Liste nun einzelne Server oder Endgeräte zu, die Mails versenden dürfen. Das ist im Zweifel der eigene Exchange-Server – einzelne PCs (die das wirklich brauchen) und etwa der Multifunktions-Scanner der Scan-2-Email beherrscht.
Speichern Sie die Alias-Liste nun ab.

7.3 Ausgehenden SMTP Verkehr einschränken

Eine der größten Gefahren ist nach wie vor der unbemerkte Versand von Mail von infizierten PCs aus. Diese Gefahr kann man mit der pfsense aber sehr einfach eindämmen.
Als erstes Klicken Sie auf Firewall => Rules => Reiter „LAN“ und dann auf „Add“

Unter (1) haben Sie die Möglichkeit Netzwerk-Verkehr zu blockieren oder durchzulassen. Im Bild oben wir der Traffic blockiert. Weiter unten bei (2) stellen Sie das Interface ein, auf das sich die Regel bezieht und bei (3) das Netzwerk-Protokoll.
Weiter unten im Bereich Source können Sie nun einstellen, wer etwas darf oder eben auch nicht.
Im obigen Beispiel unterbinden wir bei (1) zunächst allen Traffic von intern nach extern der als Quelle (Source Port Range) SMTP – also E-Mail – aufweist.
Mit dem Haken bei „invert match“ (4) erlauben wir aber ausgesuchten Hosts, die rechts bei (5) mit SMTPSender angegeben sind, dennoch Mails zu senden.

Mit dieser Regel erlauben wir also nur ausgesuchten Einträgen der Alias-Liste „SMTPSender“ Mails auf Port 25 nach extern zu senden. Mit dieser einfachen Regel können wir sicher stellen, daß ein mit Schadcode oder einem Computer-Virus infizierter PC nicht direkt per SMTP-Protokoll Teil eines Bot-Netzwerks wird.

7.4 Emails ins Netz lassen

In vielen Fällen betreiben Kunden in ihren lokalen Netzen einen Mail-Server. Egal ob das auf einem Small Business-Server oder mit einem MS-Exchange Server realisiert wird: Dieser Server muss Mails senden können und auf spezifischen Ports mit der Außenwelt kommunizieren können.

Um das zu realisieren, benötigen wir zwei Dinge:
– Die Weiterleitung von Netzwerk-Traffic auf die interne IP des Mailservers
– Eine Regel, die diesen Traffic auch erlaubt.

7.4.1 Weiter-Leitung von eingehendem Traffic

Die Weiterleitung von Traffic wird unter => • Firewall => NAT => Port Forward eingerichtet. Klicken Sie auf „Add“.

Eine Weiterleitungs-Regel auf der pfsense einrichten

Eine Weiterleitungs-Regel auf der pfsense einrichten

Unter (1) wählen Sie den Neztwerkanschluss auf dem der Netzwerkverkehr von außen ankommt. Das ist im Zweifel „WAN“. Sofern Sie lediglich eine WAN-IP-Adresse haben steht unter (2) „WAN Address“. Beim Einsatz von mehreren IP-Adressen auf dem WAN Internface müssen Sie hier die richtige IP auswählen.
Unter (3) und (5) legen Sie den Port bzw. den Portbereich fest, dessen Verkehr weiter geleitet werden soll. In unserem Beispiel ist das Port 25 (also SMTP).
Im Feld „redirect target IP“ (4) legen Sie die interne IP-Adresse fest an die der Netzwerk-Verkehr gesendet werden soll.
Tipp: Sie können in jedem Feld in das Sie eine IP-Adresse eintragen können auch einen Alias verwenden, den Sie vorher unter => Firewall => Alias angelegt haben.

Wenn Sie im letzten Feld den Eintrag bei „Filter rule association“ so lassen wie abgebildet, so wird von der pfsense die für das Port-Forwarding notwendige Regel gleich mit erstellt.

7.4.2 Erlauben des Traffic

Wie schon erwähnt, benötigt das Port-Forwarding eine eigene Regel, die den Traffic erlaubt. Das ist insofern „logisch“ da die Standard-Regel für eingehenden Verkehr auf „block“ steht. D.h. nichts kommt rein. Daher müssen Sie entweder die Regel beim Port-Forwarding mit erstellen lassen oder nachher selbst von Hand anlegen.

Die für den SMTP-Verkehr notwendige Regel

Die für den SMTP-Verkehr notwendige Regel

Die für unser Beispiel notwendige Regel zum Weiterleiten von SMTP-Traffic sieht dann z.B. so aus: Unter (1) ist definiert, daß der nachfolgend beschriebene Verkehr durchgelassen wird („pass“).
Unter (2) definieren Sie wieder das Interface, auf dem der Traffic auf die pfsense trifft – hier „WAN“. Unter (3) könnten Sie die Herkunft noch einschränken, was in unserem Fall aber wenig Sinn macht. Bei „destination port range“ (4) wählen wir wieder bewußt nur „SMTP“ also Port 25 aus. Unter (5) „Destination“ muss dann wieder die IP-Adresse oder der Alias des Mail-Servers stehen.

Lesetipp: Wie Sie Microsoft Exchange (Version 2010) auf Windows Server R2 richtig installieren.

8 Software auf der pfsense installieren

Grundsätzlich gilt: Auf einer Firewall sollte nur Software laufen, die zum Betrieb der Firewall not-wendig ist. Sonst nichts.

Auf die pfsense Firewall können unterschiedliche Software-Pakete aus dem Repository von pfsen-se installiert werden. So kann die pfsense etwa um einen Web-Proxy wie squid oder ein Intrusion-Preventions System wie snort erweitert werden.

8.1 Open-VM Tools

Sofern die pfsense virtuell auf VMWare läuft: Open-VM-Tools verbessern die Performance der pfsense unter VMWare und ermöglichen es einen kontrollierten Shutdown der virtuellen pfsense vom vSphere Client aus.

8.2 NRPE

Der Nagios Remote Plugin Executor ist dann hilfreich, wenn im Monitoring der Status der pfsense Firewall abgefragt werden soll. NRPE läßt sich sowohl in Nagios als auch in Icinga(2) Umhgebun-gen nuzten.

Die Installation ist einfach: Paket nrpe suchen und installieren.
Wichtig: Anschließend muss NRPE konfiguriert werden, so daß möglichst nur der Monitoring-Server (namentlich per IP) auf die NRPE Installation auf der pfsense zugreifen kann.
Services => NRPE2

Das NRPE Plugin auf der pfsense richtig konfigurieren

Das NRPE Plugin auf der pfsense richtig konfigurieren

Wichtig hier: Bindung nur an die LAN Adresse und immer (den richtigen) Monitoring Server ange-ben. Das kann Nagios, Icinga oder Icinga2 (Satellit oder Master) sein.

8.3 OpenVPN Client Export

Wer später die pfsense zur Einwahl mit OpenVPN nutzen möchte, wird das Paket „openvpn-Client-export“ installieren wollen. Damit ist es sehr bequem und einfach den Remote-Benutzern ihre VPN Konfiguration und Zugangs-Informationen zukommen zu lassen.

8.4 pfBlockNG

Seit der Version 2.2.x kann die pfsense Firewall um eine Software namens pfBlockNG (NG steht für next generation) erweitert werden. Im Wesentlichen lädt die SW Listen von geographischen IP-Bereichen herunter. Auf Basis dieser alle paar Stunden aktualisierten Listen können dann Regeln erstellt werden, um bspw. bestimmte IP-Adress-Bereiche bestimmter Regionen grundsätzlich aus-zusperren.
Kurzübersicht mit Version 2.2.x https://www.youtube.com/watch?v=6rjbTxKsoBE
Tutorial zur Einrichtung unter 2.3.x https://www.youtube.com/watch?v=M81kFLEhhZQ

8.5 Squid

Squid ist ein Web-Proxy. D.h. er übernimmt die Aufgabe Webseiten aus dem Internet zu cachen und kann als Reverse-Proxy genutzt werden.
Vorteil: Mehrfach-Downloads werden vermieden. Dazu müssen aber alle Benutzer im lokalen Netz den Web-Proxy nutzen.
Aber Achtung: Der Squid speichert viel und oft auf der lokalen Festplatte der pfsense. Den Squid sollte man nur einsetzen, wenn auf der pfsense Firewall echte Platten verbaut wurden.
Nach der Installation muss der Squid Proxy konfiguriert werden. Das ist in 1-2 Minuten erledigt.
Services -> Squid
Schritt 1: Local Cache festlgen , d.h. wo und wie speichert der squid die Dateien
Schritt 2: (Tab General): Squid enablen
In der Regel wird man der Einfachheit halber den transparent mode des Squid einschalten. Dabei schaltet sich der squid zwischen den Browser des Nutzers und den Web-Server der abgefragt wird. Der Benutzer merkt davon nichts.

8.6 SquidGuard

Hier kann ein Inhaltsfilter für den Zugriff auf Webseiten eingebaut werden. Damit können dann bspw. Zugriffe auf nicht erlaubte oder nicht gewollte Inhalte unterbunden werden.

8.7 Snort auf pfsense

Snort ist ein Intrusion Detection bzw. Intrusion Prevention System. Snort ist (wie pfsense und squid auch) Opensource und kann sowohl auf einer pfsense als auch auf anderen Plattformen eingesetzt werden. Zu Snort sind weiter reichende Einstellungen auf der pfsense notwendig, so daß wir dazu eine separate Anleitung erstellen.

9 Pfsense aktualisieren / Upgrade

Die pfsense zu aktualisieren ist innerhalb der 2.3.x Reihe kein Problem. Von 2.3.1 ist der Upgrade auf 2.3.x per Web-GUI möglich. Der Update von einer alten Version 1.2.x auf 2.x sollte vorher ge-testet werden.

10 Downloads / Links

Pfsense Download: https://www.pfsense.org/download/
Pfsense Docu: https://doc.pfsense.org/index.php/Main_Page
Pfsense Forum: https://forum.pfsense.org/

Das Buch zu pfsense ist zwar schon aus dem Jahr 2009 und bezieht sich auf die 1.2er Version. Da die Konzepte darin aber grundsätzlich noch richtig sind, lohnt auch hier ein Blick hinein.
https://www.amazon.de/Pfsense-Definitive-Christopher-M-Buechler/dp/0979034280

Falls Sie bis hierhin noch nicht von der pfsense überzeugt sind, finden Sie auf Wikipedia eine Liste aller bekannten Firewall-Distributionen

https://en.wikipedia.org/wiki/List_of_router_and_firewall_distributions

Tutorial: OpenVPN auf einer pfsense Firewall einrichten

Die Einrichtung von VPN Verbindungen erfordert ein sehr gutes Verständnis, wie ein TCP/IP-Netzwerk und Netzwerk-Sicherheit grundsätzlich funktionieren. Darüber hinaus sollten Sie Grundkenntnisse in Sachen Verschlüsselung und Zertifikaten haben. Sie werden (meiner Erfahrung nach) bei der Einrichtung eines VPN an irgendeiner Stelle auf Schwierigkeiten oder Hindernisse stoßen.

Sowohl pfsense als auch OpenVPN sind Opensource-Produkte. D.h. Software-Entwickler erstellen unentgeltlich „freie“ Software, die Sie ohne Lizenzkosten nutzen dürfen. Sowohl pfsense als auch OpenVPN sind sehr gut dokumentiert und haben eine sehr lebendige Community, in der man auch (wieder ohne Kosten) Hilfe erhält. Weiterführende Links (zur Dokumentation, Tutorials, etc) finden Sie am Ende dieser Anleitung.

Nachfolgend beschreibe ich ausführlich, wie Sie

  • Einen OpenVPN Server unter pfsense grundsätzlich einrichten
  • Einzelne Benutzer mit (bzw. ohne) Benutzer-Zertifikat anlegen
  • Den Zugang für die Benutzer testen
  • Optional: Die Benutzer-Authentifizierung an ein Active-Directory anbinden.

Die Einrichtung eines VPN auf Basis von OpenVPN mit einer pfsense dauert zwischen 30 und 60 Minuten – wenn man weiß wie es geht. Bei der aller-ersten Einrichtung werden Sie (deutlich) länger brauchen und vermutlich auch auf Schwierigkeiten stoßen. Lassen Sie sich davon nicht aus dem Konzept bringen.

Hinweis: Diese Anleitung bezieht sich auf die pfsense in der Version 2.3.1-RELEASE bzw. 2.3.2-RELEASE. Das darunter liegende OpenVPN hat die Versions-Nr. 2.3.14 bzw. 2.4

Lesetipp: Wie Sie eine pfsense Firewall installieren und konfigurieren haben wir im Blog vom IT-Dienstleister Biteno GmbH bereits einmal beschrieben.

CA-Zertifikat erstellen

Der OpenVPN Dienst auf einer pfsense Firewall benötigt für das Funktionieren eine „Certificate Authority“ (kurz CA). Diese muss pro pfsense normalerweise nur einmal erstellt werden. Bitte prüfen Sie, ob die CA nicht schon besteht. Falls nicht, erstellen Sie die Certificate Authority wie folgt:

System -> Certificate Manager -> CAs -> Add

Wie Sie ihre CA nennen, spielt an sich keine Rolle – die Werte die Sie weiter unten eintragen, sind im Prinzip auch „unwichtig“. Sie müssen lediglich vorhanden sein. Wenn Sie eine pfsense Firewall im Produktiv-Einsatz bei Kunden nutzen, sollten Sie auf jeden Fall die korrekten Einstellungen (des Kunden) vornehmen, damit dessen Anwender im Zweifel wissen, mit welcher Firewall und welchen Daten Sie arbeiten.

SSL Zertifikat mit der pfsense erstellen

SSL Zertifikat mit der pfsense erstellen

Wichtig ist, dass Sie bei „Method“ den Eintrag „Create an internal Certificate Authority“ wählen.

Hinweis: Die CA benötigen Sie auf jeden Fall – egal ob die Benutzer auch ein (zusätzliches) Zertifikat erhalten oder nur per Passwort Zugriff haben.

1.2 Server-Zertifikat erstellen

Der OpenVPN Server selbst braucht später ein Server-Zertifikat. Dieses müssen Sie nun erstellen.

Dazu klicken Sie auf System -> Certificate Manager -> Certificates -> Add

Server Zertifikat mit pfsense für OpenVPN erstellen

Server Zertifikat mit pfsense für OpenVPN erstellen

Unter (1) geben Sie an, daß Sie ein internes Zertifikat („create an internal certificate“) erstellen möchten. Bei (2) wählen Sie die CA aus, die Sie schon haben bzw. im vorherigen Schritt erstellt haben. Bei (3) wählen Sie unbedingt „Server Certificate“ aus. Bei (4) tragen Sie die Daten des Kunden ein.

Wichtig ist der Eintrag unter (5): Hier wird der Common Name eingetragen. Das ist ein frei wählbarer Eintrag, der hinterher aber in der Konfiguration auftaucht. Bitte vermeiden Sie hier Umlaute oder Sonderzeichen.

Als Key Length sollten Sie mindestens 2048 bit verwenden und als Digest Algorithm z.B. sha256. Aktuell ist maximal sha512 möglich. Klicken Sie ganz unten auf „save“ und speichern das Sever Zertifikat ab.

OpenVPN Server einrichten

Bevor Sie den eigentlichen OpenVPN Server einrichten können, müssen Sie folgende Informationen beisammen haben:

  • Die CA muss erstellt sein
  • Das Server-Zertifikat muss erstellt sein
  • Sie müssen den internen IP-bereich des Netzes kennen, in dem die PFsense liegt
  • Sie brauchen ggf. einen neuen IP-Bereich für die Einwahl der remote-User
  • Die DNS-Einstellungen & DNS-Domain des Kunden-Netzes müssen Ihnen bekannt sein

Außerdem müssen Sie festlegen, ob aller Netzwerk-Traffic der VPN Nutzer durch den VPN-Tunnel gehen soll oder nicht. Die Einstellungen im Einzelnen und immer schön der Reihe nach:

1.3.1 Neuen OpenVPN Server anlegen

Um einen neuen OpenVPn Server anzulegen, navigieren Sie im Webpanel ihrer pfsense Firewall zu VPN ->OpenVPN -> Servers -> Add

OpenVPN Server auf der pfsense Firewall erstellen

OpenVPN Server auf der pfsense Firewall erstellen

Unter (1) treffen Sie die erste und ggf. auch wichtigste Einstellung: Möchten Sie die Benutzer „nur“ mit Benutzer-Name und Passwort in ihr Netz lassen (Einstellung: „remote Access (User Auth)“?

Oder möchten sie die Sicherheit erhöhen und für jeden Benutzer ein individuelles zertifikat erstellen. Das wäre dann Server Mode: „Remote Access (SSL/TLS + User Auth)“.

Wählen Sie unter (2) ihre Authentifizierungs-methode. Bis das OpenVPN wirklich funktioniert wählen Sie hier zunächst “Local Database”. Damit werden die Usernamen und Passwörter in der lokalen Datenbank der pfsense gesucht. Die weiteren Einstellungen zu Protokoll, Interface und Port lassen Sie so wie sie in den Vorgaben stehen. Sofern Sie möchten, können Sie diese Einstellungen später jederzeit ändern.

Bei (3) geben Sie einen beschreibenden Namen des OpenVPN Servers ein. Auf die Funktion hat die Bezeichnung keine Auswirkung.

Hinweis: In den allermeisten Fällen wird als Interface „WAN“ richtig sein. Ändern Sie das „empfangende“ Interface nur, wenn Sie eine atypische Situation haben – bspw. Die VPN-User in einer DMZ entgegen nehmen.

1.3.2 Cryptographic Settings

Im nun folgenden Schritt werden die Kryptographie-Einstellungen des OpenVPN Servers konfiguriert:

Kryptographische Einstellungen auf der pfsensen für das OpenVPN

Kryptographische Einstellungen auf der pfsensen für das OpenVPN

Unter (1) müssen Sie eine bestehende Peer-Certificate-Authority auswählen. In aller Regel haben Sie dafür auch nur genau eine vorhandene CA auf der pfsense. Unter „Server Certificate“ wählen Sie das vorher erstellte Server-Zertifikat für den OpenVPN Server aus.

Bei den eigentlichen Krypto-Settings ändern Sie unter (3) die Diffie-Hellmann (DH) Einstellungen von 1024 auf mindestens 2048 bits.

Die eigentlichen Verschlüsselungs-Einstellungen ändern Sie bei „Encryption Algorithm“ (4) aus. Wählen Sie hier einen Mechanismus mit mindestens 256-bit aus. Hier gilt: Je höher die Zahl, desto größer der Aufwand den Schlüssel zu knacken. Im Umkehrschluss gilt: Je höher die Zahl, desto mehr hat die Firewall mit der Berechnung zu tun. Alle weiteren Einstellungen lassen Sie auf dem Default.

1.3.3 Tunnel-Einstellungen

Im nun folgenden Teil nehmen Sie Netzwerk-Einstellungen für die VPN-User vor:

Tunnel Einstellungen des OpenVPN auf der pfsense

Tunnel Einstellungen des OpenVPN auf der pfsense

Unter (1) „IPV4 Tunnel Network“ geben Sie das Netzwerk an, aus dem die VPN-Benutzer ihre IP-Adresse bekommen. Das sollte sich vom lokalen Netzwerk (in dem die pfsense Firewall steht) unterscheiden.

Bsp.

Ihr lokales Netzwerk ist 192.168.0.0/24, dann geben Sie unter (1) z.B. 192.168.100.0/24 ein. Damit bekommen die remote User dann IP-Adressen von 192.168.100.1 bis 192.168.100.25x.

Unter (2) tragen Sie das lokale Netzwerk ein, in dem die pfsense steht. In unserem Beispiel wäre das 192.168.0.0/24.

Hinweis: Mit dem Haken bei „redirect Gateway“ bestimmen Sie ob aller traffic vom remote user durch das VPN geht oder nicht. Falls Sie den remote Usern den Zugang zu weiteren Netzwerken ermöglichen möchten oder aus Sicherheitsgründen allen traffic (bspw. Über einen Proxy-Server) überprüfen möchten, so setzen Sie den Haken hier. Rein technisch wird dadurch auf dem PC/Notebook des Anwenders die Default Route durch den Tunnel gesetzt.

1.3.4 Client Settings und advanced client Settings

Einstellungen des Kunden-Netzes in der pfsense für den OpenVPN-Tunnel

Einstellungen des Kunden-Netzes in der pfsense für den OpenVPN-Tunnel

In diesem Teil der Einstellungen tragen Sie die Netzwerk-Vorgaben wie DNS-Default Domain (2) und die zu verwendenden DNS Server (3) ein.

Unter (1) kann man einstellen, ob jeder Client seine eigene IP bekommt oder gleich sein eigenes Subnetz mit einer /30 Maske. Lassen Sie das im Zweifel auf „One IP Address per client“.

1.3.5 Advanced Configuration

Unter „advanced Configuration“ können Sie z.B. weitere Routen definieren. Diese werden mit ‚push „route Netz Netzmaske“ angegeben. Bsp.: push „route 192.168.1.0 255.255.255.0“

Als letzte Einstellungsmöglichkeit können Sie die Ausführlichkeit (verbosity) des Logs von OpenVPN einstellen. Lassen Sie diesen Wert zunächst bei „3“.

Last but not least: Klicken Sie nun noch auf „Save“ und speichern Sie den neuen OpenVPN Tunnel.

1.4 Firewall-Regeln erstellen:

Damit ihre Benutzer sich anmelden können, benötigen Sie nun noch zwei Regel auf der pfsense Firewall: Eine um die Anmeldung zu ermöglichen, eine weitere um den VPN-Verkehr ins Netz zu lassen.

1.4.1 UDP auf das WAN-Interface

1.4.2 VPN Traffic durch die pfsense

1.5 Gruppe für VPN-Benutzer einrichten

Sie benötigen für die korrekte Berechtigung der Benutzer eine Benutzer-Gruppe auf der pfsense. Falls Sie später die Authentifizierung an ihre Microsoft-AD anbinden, muss diese Gruppe unbedingt so heißen wie ihre Berechtigungsgruppe im Active Directory. Legen Sie also zunächst eine neue Gruppe an:

System -> User Manager -> Groups > Add

Erstellen Sie zunächst eine Gruppe mit dem Kontext „local“ – also eine Gruppe auf der pfsense selbst. Bearbeiten Sie die Gruppe anschließend so, dass die Rechte der Gruppe so aussehen:

Berechtigungen der Benuzter-Gruppe für den VPN-Zugriff

Berechtigungen der Benuzter-Gruppe für den VPN-Zugriff

1.6 Benutzer anlegen

Für den ersten Zugriff benötigen Sie einen lokalen Benutzer auf der pfsense. Diesen legen Sie an unter:

System -> User Manager .> Users -> Add
Neben dem Namen müssen sie natürlich ein Passwort vergeben. Außerdem nehmen Sie den Benutzer in die Gruppe für VPN Benutzer auf.

1.7 Zertifikat für Benutzer

Sofern der OpenVPN Server mit Passwort und (!) Zertifikat arbeitet, benötigt der Benutzer sein eigenes, ganz persönliches Zertifikat. Das Benutzer-Zertifikat legen Sie bei (oder nach) der Erstellung des Benutzers an.

Haken Sie dazu das Feld neben „Certificate“ an (“Click to create a user certificate”) und geben dem Zertifikat einen Namen (z.B. Benutzername-vpn-zertifikat). Der Name ist nur für Sie wichtig, damit Sie später die Benutzer-Zertifikate auseinander halten können.

Zertifikat und Einstellungen für Benutzer

Die Software für den remote-Zugang sowie das Benutzer-Zertifikat und die Einstellungen für den Benutzer exportieren Sie bequem unter: VPN -> OpenVPN -> Client Export

Sofern Sie als „Server Mode“ beim OpenVPN-Server „Remote Access(User Auth)“ gewählt haben, gibt es für alle Benutzer eine Konfigurations-Datei. Diese beinhaltet bspw. die IP-Adresse des Servers, die Authentifizierungs-Einstellungen und das Master-Zertifikat des Servers.

Wenn Sie als „Remote Access (SSL/TLS & User Auth)“ eingestellt haben, dann hat jeder Benutzer sein eigenes Installations-Paket. Das beinhaltet dann das individuelle Zertifikat des Benutzers, das bei jedem Anwender ein anderes ist, sowie die Einstellungen für das VPN sowie das Server-Zertifikat.

Tipp: Laden Sie VPN -> OpenVPN -> Client Export immer den Windows-Installer herunter. In ihm ist alles enthalten, was der Benutzer braucht. Lediglich seinen Benutzernamen und das Passwort benötigt der Anwender noch.

Installieren Sie nun das gerade exportierte Software-Paket. Bitte beachten Sie dass Sie die OpenVPN mit Administrator-Rechten auf dem PC/Notebook ausführen müssen. Testen Sie anschließend die Verbindung, in dem Sie auf das Icon von OpenVPN rechts klicken und „Verbinden“ wählen.

Wenn alles funktioniert, dann erscheint das Icon von OpenVPN anschließend in gün:

OpenVPN-Icon in der Taskleiste

OpenVPN-Icon in der Taskleiste

2 OpenVPN mit Active Directory-Integration

Wenn Sie mehr als 4-5 Benutzer haben, die OpenVPN für ihren remote-Zugang verwenden, sollten Sie eine AD-Integration einrichten.

Vorteile:

  • Sie müssen den Benutzern keinen zweiten Login (auf der PFsense) einrichten
  • Der Benutzer kann ich mit seinem AD-Nutzernamen und Passwort anmelden
  • Lediglich die Mitgliedschaft in einer AD-Gruppe definiert, ob ein AD-Benutzer mit OpenVPN arbeiten kann.

Um eine AD-Integration zu erstellen, müssen Sie folgendes tun:

  • Einrichten einer Gruppe im AD für die VPN-Benutzer
  • Erstellen einer LDAP-Verbindung von der pfsense zum AD
  • Einrichten der Authentifizierung zwischen der pfsense Firewall und dem AD für die OpenVPN-Benutzer
  • Erstellen einer lokalen Gruppe auf der pfSense mit dem gleichen Namen wie die AD-Gruppe sowie den Berechtigungen für OpenVPN
  • Anpassung der OpenVPN Installation

Die Einrichtung an sich ist nicht schwierig. Allerdings liegt der Teufel oft im Detail. Wenn Sie die nachfolgende Anleitung Schritt für Schritt durchgehen, sollte es aber klappen.

2.1 Einrichten einer Gruppe im AD für die VPN-Benutzer

Damit später klar erkennbar ist, welcher Benutzer den remote Zugang mit OpenVPN auf der pfsense benutzen darf und wer nicht, legen Sie als erstes eine Gruppe im Active Directory an.

Geben Sie dieser Gruppe einen sprechenden Namen „VPNUsers“ (oder VPNBenutzer“). Vermeiden Sie Leerzeichen oder Sonderzeichen. Fügen Sie diejenigen Benutzer-Accounts zu der Gruppe hinzu, die später das VPN nutzen dürfen.

Notieren Sie den Gruppennamen und beachten Sie welche Buchstaben groß und welche klein geschrieben werden. Die pfsense Firewall basiert auf Linux(bzw. bsd) und ist damit „case-sensitive“, d.h. sie unterscheidet Groß- und Kleinschreibung.

2.2 Ermitteln des LDAP-Kontextes

Um die pfsense später mit dem Active Directory sprechen zu lassen, müssen wir wissen, in welchen „Organizational Units“ die Benutzer liegen, deren Passwort wir prüfen möchten. Org Units sind die Container (bzw. Ordner) in denen die Benutzer angelegt sind.

Wichtig: Jeder Benutzer kann nur in einem Container (bzw. einer OU) auf einmal sein.

Dazu ermitteln Sie zunächst den LDAP-Kontext.

  • Öffnen Sie auf einem Domain Controller den ADSI Editor (Start -> Systemsteuerung >Verwaltung -> ADSI Editor)

Dort finden Sie auf oberster Ebene die Darstellung ihrer AD im LDAP-Format.

Wenn bspw. Die Domain itsc.local heißt, dann entspricht das in LDAP:

„DC=itsc,DC=local“ . Bitte beachten Sie das Komma (kein Semikolon)

LDAP-Einstellungen ermitteln mit dem ADSI Editor

LDAP-Einstellungen ermitteln mit dem ADSI Editor

Erweitern Sie nun auf der linken Seite den Baum, bis Sie den Container ihrer Benutzer gefunden haben:

Um obigen Beispiel haben wir also die Ober-OU „itscBenutzer“ unterhalb des Kontextes „itsc.local“. Unterhalb von „itscBenutzer“ finden Sie weitere OUs, die einzelnen Abteilungen entsprechen. In diesen sind in dieser Domain die Benutzer angelegt.

Bitte prüfen Sie im Benutzer-Manager ob hier tatsächlich Benutzer vorhanden sind.

Hinweis: Anstatt des im Microsoft-Windows Server vorhandenen ADSI Editors können Sie auch jeden anderen LDAP-Browser verwenden.

2.3 Benutzer für die Authentifizierung anlegen

Damit später die pfsense Firewall mit dem AD Informationen austauschen kann, benötigen wir einen lesenden Zugang zur AD. Dazu legen Sie jetzt einen Benutzer im Active-Directory an. Diesen nennen Sie bitte sprechend z.B. „pfsense“.

Vergeben Sie ein Passwort und notieren Sie dieses.

Wichtig: Stellen Sie das Konto so ein, daß das Passwort nie abläuft und nicht geändert werden muss.

2.4 LDAP-Verbindung in der pfsense einrichten

Die pfsense Firewall kann neben der lokalen Authentifizierung mit (beliebig vielen) LDAP- oder Radius-Servern sprechen.

Öffnen Sie dazu nun die Weboberfläche der pfsense. Dort navigieren Sie zu:

System -> User Manager -> Authentication Servers -> Klicken Sie auf „Add“ um eine neue LDAP-Verbindung einzurichten:

Abb. Oberer Teil der Maske „LDAP-Server Settings“

LDAP-Server zur Authentifizierung einrichten

LDAP-Server zur Authentifizierung einrichten

Vergeben Sie unter (1) einen sprechenden Namen. Als Auth-Typ stellen Sie bei (2) LDAP ein.

Hostname: bitte immer die IP unter (3) eintragen. Sonst sind sie auf funktionierendes DNS angewiesen.

Den Transport (4) stellen Sie auf TCP-Standard ein. Bei (5) Search Scope wählen Sie „entire Subtree“. Damit wird sichergestellt, dass Sie weiter unten nur den obersten Container einer OU auswählen müssen.

Bei (6) tragen Sie unter „Base DN“ die Werte ein, die Sie mit dem ADSI-Editor ermittelt haben. Bei Base-DN benötigen wir nur die oberste Domain-Ebene also „DC=itsc,DC=local“ wenn die Domain „itsc.local“ heißt.

Im darunter liegenden Feld (7) Authentication Containers müssen Sie nun die oberste OU für Benutzer eintragen, die Sie vorher mit dem ADSI-Editor ermittelt haben.

LDAP-Einstellungen in der pfsense Firewall

LDAP-Einstellungen in der pfsense Firewall

 

Im unteren Teil der Maske „LDAP Server Settings“ klicken Sie auf „extended query“ und setzen den Haken bei (1). Anschließend fügen Sie bei (2) folgendes ein:

memberOf=CN=<GRUPPENNAME>,DC=itsc,DC=local

Ersetzen Sie <GRUPPENNAME> durch den Namen der Gruppe, die Sie im Active-Directory angelegt haben. Achten Sie bitte auf Groß-Kleinschreibung. Sofern Ihre Domain anders (also itsc.local) heißt, so ändern Sie den hinteren Teil (DC=itsc,DC=local) entsprechend.

Tipp: Beim erstmaligen Einrichten empfehle ich, den Haken bei „extended Query“ zunächst weg zu lassen, bis die grundsätzliche Authentifizierung gegen die AD funktioniert. Das bedeutet, dass erst einmal jeder Benutzer, der ein funktionierendes Passwort hat, sich mittels OpenVPN anmelden kann.

Bei (3) entfernen Sie den Haken und fügen bei „Bind credentials“ (4) den Benutzer in der Form „domain\benutzer“ und bei (5) das Passwort ein. Nutzen Sie dazu den Domain-User, den Sie vorhin gerade angelegt haben.

Bei „initial Template“ (6) wählen Sie bitte „Microsoft AD“ aus. Die nachfolgenden Felder lassen Sie so wie Sie vorausgewählt sind.

LDAP prüfen innerhalb der pfsense

LDAP prüfen innerhalb der pfsense

Wenn Sie nun alles richtig eingetragen haben, klicken Sie (etwa in der Mitte der Maske) auf den blauen Button „Select a container“. Jetzt wird live in der AD folgendes geprüft:

  • Ist eine Anmeldung möglich?
  • Welche Container gibt es (noch)?

Wenn jetzt nichts passiert oder Sie eine Fehlermeldung erhalten, dann überprüfen Sie bitte die Eingaben.

Hinweis: Bitte beachten Sie das im Feld „Authentication Containers“ bereits ein valider Eintrag stehen muss, BEVOR Sie auf den blauen Button klicken.

LDAP-Container bzw. LDAP-OUs

LDAP-Container bzw. LDAP-OUs

Wenn wie im obigen Bild weitere Container (2) erkannt worden sind, funktioniert die Verbindung zum AD. Sie können nun noch weitere Container auswählen – müssen das aber nicht, wenn Sie vorher unter „search scope“ „entire subtree“ ausgewählt haben.

Speichern Sie zum Schluß die neue LDAP-Verbindung ab in dem Sie auf „Save“ klicken.

Gruppe für VPN Benutzer anlegen.

Legen Sie nun unter System-> User Manager -> Groups eine Benutzer-Gruppe an.

Dieser Gruppe geben Sie (1) den exakt gleichen Namen wie in der AD. (Groß/Kleinschreibung beachten).

Benutzer-Gruppe für VPN Benutzer

Benutzer-Gruppe für VPN Benutzer

Bei (2) wählen Sie unter „Scope“ den Eintrag „Remote“ (nicht lokal). peichern Sie die Gruppe ab.

Der gerade erstellten Gruppe geben Sie anschließend folgende Rechte:

Berechtigungen der Benuzter-Gruppe für den VPN-Zugriff

Berechtigungen der Benuzter-Gruppe für den VPN-Zugriff

Hinweis: Die Gruppe braucht keine Mitglieder. Diese werden aufgrund des Scopes (remote) im AD abgefragt.

OpenVPN Server anpassen

Zum Schluss müssen wir dem bestehenden OpenVPN Server noch diese neue Authentifizierungs-Möglichkeit mitteilen. Dazu öffnen Sie unter VPN -> OpenVPN -> Servers ihren Einwahl-Server.

Authentifizierungs-Backend für OpenVPN in der pfsense Firewall ändern

Authentifizierungs-Backend für OpenVPN in der pfsense Firewall ändern

Klicken Sie im Feld „Backend for authentication“ auf die vorher erstellte LDAP-Integration. (muss danach blau hinterlegt sein) und klicken Sie (unten) auf speichern.

Hinweis: Ein OpenVPN kann mehrere Authentifizierungs-Server abfragen. Es schadet also nicht wenn Sie neben dem LDAP auch „Local Database“ anhaken.

Ein sich anmeldender Benutzer wird immer zuerst beim LDAP-Server bzw. ihrer AD abgefragt bevor die lokale Datenbank von pfsense kontaktiert wird

Zugang für Benutzer

Innerhalb von pfsense gibt es eine komfortable Funktion eine fertige Software für Notebooks bzw. PCs pro Benutzer zu erzeugen, in der alle Daten für die Verbindung (außer dem Passwort) enthalten sind.

Um diese zu nutzen, müssen Sie den sog. „OpenVPN Client Export“ zunächst installieren. Gehen Sie zu System -> Package Manager -> Available Packages. Suchen Sie nach „openvpn-client-export“ und installieren das Software-Paket auf der pfsense.

Zugangs-Software aus pfsense exportieren

Sobald das Paket Open-VPN Client Export installiert ist, klicken Sie auf:

VPN -> OpenVPN -> „Client Export“

Export der Einstellungen (Settings) mit oder ohne Software zur Verbindung mit OpenVPN

Export der Einstellungen (Settings) mit oder ohne Software zur Verbindung mit OpenVPN

Dort haben Sie die Möglichkeit, die OpenVPN Software als Installer für einen Benutzer inklusive aller Einstellungen und Zertifikate für unterschiedliche Plattformen herunter zu laden.

Sie können natürlich auch „nur“ die Konfiguration herunter laden.

Laden Sie im Zweifel den Windows-Installer herunter und installieren Sie die OpenVPN-Client Software auf dem Rechner/Notebook mit dem Sie bzw. der Kunde von unterwegs oder zuhause auf das Firmen-Netz zugreifen möchte.

Testen Sie die Einwahl. Funktioniert alles? Falls ja – sehr gut!

Falls nicht: Machen Sie eine Pause und gehen danach die Konfiguration noch mal Schritt für Schritt durch. Wenn das keinen Erfolg bringt, dann gehen Sie die Troubleshooting-Liste (weiter unten im Text) Schritt für Schritt durch. In der Regel sind es beim VPN Kleinigkeiten, die nicht stimmen – und die Einwahl verhindern.

OpenVPN-Client von Securepoint (Windows)

Die Firma Securepoint bietet einen kostenfreien Client für PC/Notebook an, der mit OpenVPN funktioniert.

Vorteil:

  • Sieht professioneller aus als die Software von OpenVPN
  • Läuft und funktioniert ohne lokale Administrator-Rechte auf dem PC/Notebook
  • Der Securepoint-Client kann Benutzername und Passwort speichern > Das ist in der Regel für die Anwender komfortabler und bietet daher mehr Komfort

Sie können die Software unter http://sourceforge.net/projects/securepoint/files/ kostenlos herunter laden. Mit dem Securepoint Client können Sie auch unterschiedliche VPN-Einstellungen bzw. unterschiedliche VPN-Einwahlen abspeichern:

Damit Sie mit dem Securepoint Client arbeiten können, müssen Sie vorher den Client-Export durchgeführt haben. Diese Einstellungen können Sie anschließend im Securepoint Client importieren.

Import-Möglichkeit im kostenlosen Securepoint-Client für OpenVPN

Import-Möglichkeit im kostenlosen Securepoint-Client für OpenVPN

Zugangs-Software für Mac-user

Für Macbook-User, Grafiker und alle andere Style-Iconen gibt es die folgenden Software-Produkte um OpenVPN auf einem Macintosh zu nutzen:

Kostenlose Software: https://tunnelblick.net/

Kostenpflichtige Software https://www.sparklabs.com/viscosity (9 USD pro User)

VPN Troubleshooting

Bei VPNs – egal ob IPSEC oder OpenVPN – kann man beliebig viel falsch machen. Schon klein(st)e Fehler führen oft zur Fehlfunktion bzw. zum Nicht- Funktionieren des VPN.

Bei der Fehlersuche von VPNs ist es deshalb sehr wichtig, dass Sie extrem strukturiert vorgehen. Das bedeutet:

  • Dokumentieren Sie alles!
    • Was funktioniert – schreiben Sie es auf.
    • Was funktioniert nicht – notieren Sie es.
  • Ändern Sie nur einen Parameter / Schalter auf einmal
  • Bringen Sie Zeit mit. Troubleshooting im VPN ist zeitlich gesehen immer „open end“.

Grundsätzlich gilt: Nur eine Änderung auf einmal. Danach testen und Log auswerten. Danach die nächste Änderung und so weiter.

OpenVPN mit AD

Bitte schauen Sie zuerst ins Log von OpenVPN auf der pfsense Firewall. Finden sich hier Einträge? Wenn ja, was sagen Sie aus?

Googlen Sie im Zweifel nach der Fehlermeldung. Die Chancen stehen in der Regel gut, dass schon einmal ein Netzwerk-Administrator vor Ihnen den gleichen Fehler in einem Forum gepostet hat.

4.1.1 OpenVPN

Status -> System Logs -> OpenVPN

Sind hier irgendwelche Einträge vorhanden, die auf Fehler hinweise?

Wenn sie gar keine Einträge finden, dann erhöhen Sie das Debug-Level um eine Ziffer nach oben.

4.1.2 Test mit einem lokalen User

Zu allererst sollten Sie die Authentifizierung mit einem lokalen Benutzer auf der PFsense Firewall testen. Legen Sie einen lokalen Benutzer an, setzen sie das Passwort und weisen sie den Benutzer der Gruppe für VPN Zugang zu.

Anschließend laden Sie sich das Paket (Client Export) herunter und probieren die Anmeldung via OpenVPN an der Pfsense Firewall.

Wenn die Anmeldung nun funktioniert, dann gehen sie (sofern Sie gegen die AD authentifizieren möchten) zum nächsten Punkt. Falls es hier schon „klemmt“, dann prüfen Sie noch mal die Einstellungen des eingerichteten OpenVPN Servers.

4.1.3 Gruppe prüfen.

Sollte mit dem lokalen User keine Anmeldung möglich sein, dann setzen Sie vorübergehend die Rechte der VPN-Benutzer-Gruppe hoch. Weisen Sie – nur vorübergehend – alle verfügbaren Rechte der VPN-User-Gruppe zu.

Versuchen Sie die Anmeldung erneut. Klappt`s jetzt? Falls ja, entfernen Sie die nicht notwendigen Rechte schrittweise wieder, bis Sie die maximal notwendigen Rechte in der Gruppe haben, die für eine Remote-Anmeldung notwendig sind.

4.1.4 Debug Log erhöhen

Schalten Sie im OpenVPN Server das Logging eine Zahl höher (bspw: von 3 auf 4). Bitte nur auf Werte von größer als 5 setzen, wenn Sie diese Einstellung nach 10 Minuten wieder runter stellen. Ein hoher Debug-Wert belastet den Firewall (und dessen Festplatte) durch das Schreiben von extrem vielen Log-Zeilen.

4.1.5 OUs ausweiten

Um überhaupt eine Authentifizierung gegenüber der AD zu erzielen, haken Sie temporär alle OUs in der Maske an:

LDAP-Container bzw. LDAP-OUs

LDAP-Container bzw. LDAP-OUs

Wenn mit allen angehakten Kreuzchen die Einwahl möglich ist, haken Sie Schritt für Schritt die nicht mehr notwendigen OUs ab bis sie diejenigen gefunden haben, die für die Einwahl nötig sind.

4.1.6 LDAP prüfen

Bitte laden Sie sich von https://technet.microsoft.com/de-de/sysinternals/adexplorer.aspx den LDAP Explorer herunter.

Installieren sie ihn und starten Sie die Software (im Netz mit dem Active Directory). Melden Sie sich mit dem Benutzer-Account der pfsense in der Active Directory Struktur am Microsoft-Directory an. Prüfen Sie ob Sie die richtigen Bezeichnungen haben für:

  • Domain: DC=……,DC=local ?? richtig
  • Benutzer-OU:
  • LDAP-Name der Gruppe:

Prüfen Sie ob Sie die „echten“ Werte in den Einstellungen des „LDAP-Authentication Servers“ exakt so eingetragen haben.

Weiterführende Hinweise

Wenn auch diese Anleitung nicht reicht… finden Sie hier weitere Hilfe:

Pfsense Forum: https://forum.pfsense.org/index.php

Pfsense Dokukemtation https://doc.pfsense.org/index.php/Main_Page

Pfsense Howtos: https://doc.pfsense.org/index.php/Category:Howto

Viel Erfolg beim Einsatz von OpenSource-Produkten, OpenVPN und mit der pfsense Firewall.