Category Archives: IT-Management

WPA2 Enterprise mit FreeRADIUS und DD-Wrt in 5 Minuten

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

Installation

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

apt-get install freeradius 

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

ipaddr = IPv4Intern
interface = ethIntern

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

Benutzernamenfilter

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

Um Zeile 79 Policy-Statement filter_username einkommentieren.

Client einrichten

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

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

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

Benutzer hinzufügen

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

# Lokale User
user1    Password = "meinGeheimesKennwort"

DD-Wrt konfigurieren

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

Bidirektionale IP-Benchmarks mit iperf durch NAT-Gateways

Um die Geschwindigkeit der Anbindung zwischen zwei Punkten im Internet zu messen wird der Benchmark iperf eingesetzt. Leider beinhaltet dieser in der Standardversion keine Möglichkeit als Client auch Daten zu empfangen und so nicht nur den Upload vom Client zum Server, sondern auch den Download vom Server zum Client zu messen. Matt Tierney stellt in seinem GitHub-Repository eine mit dem Patch von Prof. Lucas Nussbaum (iperf reverse mode) versehene iperf Version zur Verfügung, die dieses Problem löst.

Diese gepatchtet Version ist sehr empfehlenswert. Zusammengefasst kann damit in beide Richtungen der Maximaldurchsatz gemessen werden, ohne im Router zuhause Ports öffnen zu müssen. Das neue --reverse Flag macht es möglich.

 

Unitymedia DOCSIS Segmentauslastung mit Munin und DVB-C USB Stick messen

Als Anfang Dezember 2012 meine Kabel-Internet Anbindung in Kernzeiten unter die vom Provider nach DIN Norm 66274-2 versprochenen 75MBit/sec sank wollte ich wissen, warum. Da der Provider keine genaueren technischen Details zur Funktion des eingesetzten DOCSIS 3.0 System bietet, habe ich mich selbst informiert und im Anschluss ein munin Plugins entwickelt. Das Plugin erzeugt die folgenden Graphen und bietet die folgenden Detailinformationen:

sundtek_docsis_bandwidth-day_small

  • Auslastung jedes DVB-C Kanals im Downstream
  • Gesamtauslastung
  • Jeweils (inoffiziell erfragte) Grenzwerte für Warnungen und kritische Zustände
    (Sodass ihr direkt ablesen könnt, ob es sich lohnt eine Störung zu melden)

sundtek_docsis_bandwidth-pinpoint=1363422618,1363530618Bildschirmfoto - 17.03.2013 - 15:32:51

DOCSIS Allgemein

Um die Graphen lesen zu können ist Hintergrundwissen zu DVB-C und DOCSIS notwendig. DOCSIS bietet ein geteiltes Medium, dass auf Kanälen basiert, die unter den Kunden aufgeteilt werden. Es stehen also für mehrere hundert Benutzer insgesamt 380 Mbit/sec im Downstream zur Verfügung. Bei Unitymedia werden die folgenden acht DVB-C Kanäle benutzt.

  • 542MHz
  • 578MHz
  • 586MHz
  • 594MHz
  • 602MHz
  • 618MHz
  • 626MHz
  • 634MHz

Jeder dieser Kanäle hat bei EuroDOCSIS 3.0 eine Brutto-Datenrate von 55MBit/sec (siehe Folie 4)  von der minus Tara ungefähr 47,5MBit/sec Netto-Datenrate für die TCP/IP-Nutzlast übrig bleibt. Das bedeutet auf allen acht Kanälen gemeinsam stehen etwa 380Mbit/sec zur Verfügung, was auch den Ergebnissen von Unitymedia in Feldtests entspricht. Um die Auslastung dieser acht Kanäle zu messen bedarf es nur eines verhältnismäßig preisgünstigen DVB-C USB-Sticks.

Hardware

Nach Tests zur Messung der Segmentauslastung durch Florian Strankowski eignet sich der MediaTV Digital Home DVB-CT Stick der Firma Sundtek besonders gut. Treiber für Linux die auf Anhieb unter Debian funktionieren lassen sich aus dem Support-Forum des Herstellers beziehen. Darüber hinaus ist für mein Plugin nur das Programm dvbsnoop erforderlich.

apt-get install dvbsnoop

Download

Das Plugin kann via GitHub aus dem Repository munin-sundtek_docsis bezogen werden.

Linux USB-Thermometer TEMPer mit Munin für unter 20 Euro

Wer günstig mit Linux Temperaturen messen möchte, kann das jetzt. Für unter 20 Euro vertreibt der Anbieter M-Ware auf Amazon den RDing TEMPer1.2 USB-Temperatursensor. Doch etwas Vorsicht ist geboten, denn die neue Version 1.2 ist nicht mit den verfügbaren Perl-Bibliotheken oder Munin-Plugin kompatibel.


Wird der neue als gold TEMPer betitelte Sensor angeschlossen ergibt sich folgendes Bild:

[1816401.763718] usb 2-1: Product: TEMPerV1.2
[1816401.763724] usb 2-1: Manufacturer: RDing
[1816401.782819] input: RDing TEMPerV1.2 as /devices/pci0000:00/0000:00:10.0/usb2/2-1/2-1:1.0/input/input44
[1816401.783419] generic-usb 0003:0C45:7401.004F: input,hidraw0: USB HID v1.10 Keyboard [RDing TEMPerV1.2] on usb-0000:00:10.0-1/input0
[1816401.798144] generic-usb 0003:0C45:7401.0050: hiddev0,hidraw1: USB HID v1.10 Device [RDing TEMPerV1.2] on usb-0000:00:10.0-1/input1
[1817325.787837] udev[26706]: starting version 164

Nach längerer Suche im Internet wird klar, dass für die neue Version eine spanische Firma (ISP-SL) verantwortlich zeichnet, die auch hier einen entsprechenden Treiber zur Verfügung stellt. Damit geht die Installation der Software dann ganz schnell wie folgt.

apt-get install build-essentials libusb-dev
wget "http://www.isp-sl.com/pcsensor-1.0.0.tgz"
tar xvzf pcsensor-1.0.0.tgz
cd pcsensor-1.0.0
make clean
make pcsensor
make rules-install
cp pcsensor /usr/local/bin/

Um die udev Regeln zu aktivieren muss jetzt der Computer neugestartet werden, oder der entsprechende Dienst mit dem Befehl /etc/init.d/udev reload neugestartet werden. Alternativ tut es auch ein abziehen und wiedereinstecken des TEMPer Moduls.

Hat alles geklappt, liefert die Eingabe des Befehl pcsensor jetzt die gewünschten Daten.

# pcsensor 
2012/12/08 19:53:33 Temperature 71.83F 22.12C

Um auch dauerhaft einen Überblick über die gemessene Temperatur zu behalten, eignet sich ein Munin-Plugin (Abbildung folgt).

RDing TEMPer 1.2

RDing TEMPer 1.2

Das ist schnell geschrieben und könnte wie folgt aussehen.

#!/bin/sh
# Where is pcsensor located?
PCSENSOR="/usr/local/bin/pcsensor"

if [ ! -e ${PCSENSOR} ]; then
	echo "Cannot find pcsensor executable" >&2
	exit -1
fi

case $1 in
   config)
	echo "
graph_title TEMPer USB Thermometer
graph_vlabel Celsius
graph_info This graph shows the temperatur reported by the attached TEMPer USB Thermometer.
graph_category Sensors
temp.label temp
temp.draw AREA
temp.colour FFD700
# < water freezes, > high fever
temp.warning 4:40
# sensor max
temp.critical -40:120
	"
        exit 0;;
esac

echo -n "temp.value "
${PCSENSOR} -cm | head -n1

Zusammengefasst lässt sich sagen, dass der TEMPer nicht leich in Betrieb zu nehmen war. Nicht, weil die Software nicht zur Verfügung stand, sondern weil der Sensor schlicht ohne Handbuch oder Treiber oder Informationen über Bezugsquellen für Treiber geliefert wurde. Das ist schade, aber bei einem Preis von unter 20 Euro zu verschmerzen.

Fritz!Box Cable mit Munin überwachen ohne alternative Firmware

Das Überwachen einer Fritz!Box 6360 Cable mit nicht anpassbarer Firmware von Unitymedia, Kabel-BW oder Kabel Deutschland gestaltet sich leider nicht einfach. Um trotzdem die wichtigsten Leitungswerte in das Netzwerkmonitoring Werkzeug Munin einzubinden, habe ich ein Plugin geschrieben.

Fritz!DOCSIS Munin Plugin (Repository)

Zum Verfahren gibt es nicht mehr zu sagen, als die Kommentare des Quelltexts zu zitieren:

// DISCLAIMER: Now comes the funny part!
// 1. AVM enclosed a LUA table in <code> tags. First we get the LUA table out!
// 2. Then we parse the LUA table to an array using a parser for World of Warcraft (it's everywhere, mh?)
// 3. Now we "decode" (read: de-fuckup) the LUA table to proper SNMP keys for DOWNSTREAM and UPSTREAM

Um es kurz zu machen, folgen die drei Graphentypen die das Plugin erzeugen kann.

Downstream

Für jeden Downstream Kanal den Powerlevel in dBmV und die Leitungsdämpfung in dB.

Downstream Fehler

Für jeden Downstream Kanal sowohl die korrigierbaren wie auch die unkorrigierbaren Fehler.

Upstream

Für jeden Upstream Kanal den Powerlevel in dBmV.

Die Graphen sehen nach einigen Tagen zum Beispiel wie folgt aus.

Das Plugin ist in einem GitHub Repository gespeichert und seit mehreren Wochen erfolgreich in Betrieb.

Habt ihr eigene Skripte für die Fritz!Box ohne SNMP geschrieben? Vielleicht sogar für Munin? Über einen Kommentar würde ich mich freuen! Sollte jemand von Unitymedia diesen Blogpost lesen: Bitte installiert doch einen SNMP Daemon.

TVHeadend mit Monit überwachen

Was nützt ein TV-Server im lokalen Netzwerk, wenn der Dienst nicht genauso gut verfügbar ist, wie das Signal aus der Kabeldose? Oder zumindest annähernd. Die Überwachungssoftware Monit kann TVHeadend überwachen und bei Absturz neustarten.

Monit Installation

Zuest wird die Überwachungssoftware Monit installiert.

apt-get install monit

In der Konfigurationsdatei /etc/monit/monitrc müssen drei Paragraphen wie folgt angepasst werden, indem sie einkommentiert (# Zeichen entfernen) werden.

set daemon  120
     with start delay 240
set eventqueue
     basedir /var/monit
     slots 100
set httpd port 2812 and
     use address $serverIP
     allow $lokalesSubnetz/$cidr

TVHeadend Überwachung

Eine neue Datei in /etc/monit/conf.d/tvheadend wie folgt anlegen.

check process tvheadend with pidfile /var/run/tvheadend.pid
   start program = "/etc/init.d/tvheadend start"
   stop  program = "/etc/init.d/tvheadend stop"
   if failed host localhost port 9981 then restart
   if failed host localhost port 9982 then restart
   if 5 restarts within 5 cycles then timeout

SNMP mit Munin

Wer im SoHo-Bereich bisher Munin für das Netzwerk Monitoring eingesetzt hat, kann beim neuen Switch oder AccessPoint eine böse Überraschung erleben. Ohne munin-node kein Monitoring. Dabei unterstützt Munin SNMP fähige Geräte sehr elegant; wenn man ein paar Vorraussetzungen beachtet.

SNMP wird in Munin eingebunden, indem ein munin-node die SNMP-Informationen zur Verfügung stellt. Auf dem gewählten Host (bestenfalls ein Linux System), kann Munin die unterstützten Plugins des SNMP fähigen Geräts selbst finden. Hier am Beispiel eines Netgear GS716T (sehr einfacher WebSmart Switch) mit dem Hostnamen coreswitch.

1. Unterstützte Plugins aktivieren

munin-node-configure --snmp coreswitch --snmpversion 2c --snmpcommunity meineROsnmpCOMMUNITY --suggest --shell

Die manpage von munin-node-configure verrät, dass hier auch die SNMP Versionen 1 und 3 unterstützt werden. Der Befehl liefert auf Basis der SNMP MIB des Switches direkt Shellbefehle, die alle unterstützten Interface- und Informations-Plugins in die laufende Munin Konfiguration einbinden. Sehr komfortabel.

2. Neues Gerät in munin.conf eintragen

Hier ist der erste Fallstrick versteckt. Munin erwartet, dass der Node-Name in der Konfigurationsdatei exakt dem Hostnamen entspricht (in diesem Fall coreswitch). Wählt man einen eigenen Namen, kommt es bereits zu Problemen.

[coreswitch]
    address 127.0.0.1
    use_node_name no

3. SNMP Community und Version in /etc/munin/plugin-conf.d/munin-node festlegen

Hier gibt es zu beachten, dass mit dem regulären Ausdruck in eckigen Klammern (hier snmp_coreswitch*), alle Plugins die für den Switch im ersten Schritt aktiviert wurden, abgedeckt sein müssen. Im Zweifelsfall lässt sich das mit ls /etc/munin/plugins/snmp_coreswitch* nocheinmal prüfen.

# added by hand
[snmp_coreswitch*]
env.community meineROsnmpCOMMUNITY
env.version 2

Nach fünf Minuten sind die ersten Graphen des neuen SNMP Geräts erstellt. Weitere Informationen zur SNMP Einbindung in Munin finden sich im Wiki des Projekts.

Wer unbedingt einen anderen Node-Namen in der Datei munin.conf (und damit im Webinterface) benutzen möchte, kann das, indem in der Datei /etc/munin/plugin-conf.d/munin-node unter der SNMP Community mittels env.host die IP-Adresse oder Hostname des SNMP Geräts angegeben wird.

IT-Management was ist das?

Informationstechnologien begleiten uns jeden Tag privat, auf der Arbeit und oft auch, wenn wir es am wenigsten vermuten. Aber warum macht die IT so oft Probleme? Warum fällt mein Internetzugang so oft aus? Warum kann ich am Arbeitsplatz nicht drucken? Wieso hat jetzt schon wieder ein Virus das Unternehmensnetzwerk übernommen? Und viel wichtiger: Warum passieren diese Ausfälle und Probleme überhaupt und was kann man tun?

Weiterlesen