Jan 082016
 

Neues Projekt: Grundstück Überwachungskamera.

Anforderungen

  • Die Kameras sollen via LAN Kabel (PoE) angeschlossen werden. Kein WiFi!. Bei mehreren Kameras und längeren Distanzen verlangsamt das die ganze WiFi Netz! Ausserdem kann man die WiFi Kameras sehr einfach mit einem Jammer neutralisieren
  • Die aussen LAN Ports sollen geschützt werden – nur berechtigte Geräte dürfen das Netzt nutzen. Für jedes andere Gerät soll der Port sofort gesperrt werden. Ein Schutz nur über MAC Adresse ist nicht akzeptabel (sehr einfach zum hacken)
  • Bei Kamera movement detection soll das Bild auf dem NAS gespeichert werden


Meine Lösung

  • Kameras: Als Kameras setze ich die Axis M3026 FullHD Kameras. Diese besitzen ein LAN Port, werden über PoE gespiesen und unterstützen 802.1X mit EAP-TLS Authentifizierung
  • Netzelemente: Hier kommt der Zyxel GS1900-24E Switch zum Einsatz
  • PoE Einspeisung über den TP-LINK PoE Injector TL-POE150S
  • Radius Server für Authentifizierung: Synology Radius Server (FreeRadius). DSM Version 5.2-5644
  • Video Aufnahme – über de Synology Survilance Station

Hier möchte ich Euch hauptsächlich Konfiguration der Netzwerkelementen (Switch, Radius, Kamera) und die Generierung und Einspielung der Zertifikaten beschreiben – was für einen Newbie ziemlich komplex ist.

Ich werde hier nicht erklären was die einzelne Elemente bedeuten (dafür hat man Google), dafür eine BettyBossy Anleitung geben die einen reibungslosen Setup ermöglichen und als Stütze für jeden der mit TLS Radius Authentifizierung zu kämpfen hat.

Aktivitäten Übersicht

  1. Radius auf Synology installieren
  2. Switch Radius abfragen erlauben
  3. Radius Zertifikate generieren
  4. Radius Konfiguration Anpassungen
  5. Zertifikate auf der Kamera installieren
  6. Switch Port auf 802.1x Authentifizierung umstellen

1. Radius auf Synology installieren

1.1. Auf dem DSM Package Center starten
1.2. Im Search Box radius eingeben.
1.3. Radius Server installieren.
Am Ende sollte eine neue Icon im Main Menu erscheinen – Radius Sever
radius-installed

2. Switch Radius abfragen erlauben
Der Switch selber kann nicht entscheiden ob er den Port freischalten kann oder nicht, dies wird mit einer Radius Abfrage erledigt. Der Radius antwortet aber nicht jedem Client. Der Switch muss im Radius konfiguriert werden.

2.1. Starte Radius Server auf der DSM
2.2. Unter Clients drücke auf Add
2.3. Konfiguriere das Netzwerkelement
Wichtig ist hier die richtige IP Adresse. Secret key definierst du selber und das ist das Passwort was später auf dem Switch bei Radius Konfiguration eingetragen wird.
radius-client-added

3. Radius Zertifikate generieren

Das war der schwierigste Teil – vor allem herauszufinden wie und was gemacht werden muss. Da DSM teilweise die Server Zertifikate für Radius aus dem Control Panel -> Security -> Certificates nimmt, und der CA Zertifikat automatisch von der DSM generiert wird, führt das zu einer Zertifikaten Inkonsistenz wenn man für die HTTPS ein Zertifikat z.B. bei Thawte gekauft hat. Diese werden nicht funktionieren mit den selbst generierten Zertifikaten für Kameras.

Ich habe mich entschieden die RADIUS Zertifikaten mittels Anpassungen der Konfiguration vollständig von der DSM Zertifikaten zu entkoppeln. Dank dem kann ich für mein internes Netz selber Zertifikate signieren. Für WAN (https) nutze ich die gekauften Zertifikate.

3.1. Login via ssh an die Synology
ssh root@192.168.2.x

3.2. Gehe in den Zertifikaten Verzeichnis von Radius
cd /var/packages/RadiusServer/target/etc/raddb/certs/

3.3. Jetzt werden wir alle Zertifikate generieren (CA, für Radius und Cameras). Meine Zertifikaten Anleitung baut auf dieser Anleitung auf: http://wiki.innovaphone.com/index.php?title=Howto:802.1X_EAP-TLS_With_FreeRadius

3.3.1. Generiere privat und public key‘s für das CA Zertifikat
openssl genrsa -out ca.key 1024

3.3.2. Erstelle ein CA Zertifikat Konfiguration File
vi ca.conf

und copy-paste folgenden Text
[ req ]
default_bits = 1024
distinguished_name = req_DN
string_mask = nombstr

[ req_DN ]
countryName = "1. Country Name (2 letter code)"
countryName_default = CH
countryName_min = 2
countryName_max = 2
stateOrProvinceName = "2. State or Province Name (full name) "
stateOrProvinceName_default = Bern
localityName = "3. Locality Name (eg, city) "
localityName_default = Bern
0.organizationName = "4. Organization Name (eg, company) "
0.organizationName_default = magnet
organizationalUnitName = "5. Organizational Unit Name (eg, section) "
organizationalUnitName_default = Certificate Authority
commonName = "6. Common Name (eg, CA name) "
commonName_max = 64
commonName_default = magnet
emailAddress = "7. Email Address (eg, name@FQDN)"
emailAddress_max = 40
emailAddress_default = lukas@.com

die einzelne _default Werte musst du für dich anpassen.

3.3.3. Generiere CA signatur request
openssl req -config ca.conf -new -key ca.key -out ca.csr

3.3.4. Erstelle CA extension File
vi ca.ext

und copy-paste folgenden Text

extensions = x509v3

[ x509v3 ]
basicConstraints = CA:true,pathlen:0
nsCertType = sslCA,emailCA,objCA
crlDistributionPoints = URI:http://www.deineweb.ch/ca/mustermann.crl
nsCaPolicyUrl = "http:// www.deineweb.ch/ca/policy.htm"
nsCaRevocationUrl = "http:// www.deineweb.ch/ca/heimpold.crl"
nsComment = "Meine Eigene CA"

3.3.5. Erstelle ein selbst signiertes CA Zertifikat
openssl x509 -days 3650 -extfile ca.ext -signkey ca.key -in ca.csr -req -out ca.crt

3.3.6. Generiere privat und public key‘s für Radius Zertifikat
openssl genrsa -out server.key 1024

3.3.7. Erstelle ein Server Zertifikat Konfiguration File
vi server.conf

und copy-paste folgenden Text
[ req ]
default_bits = 1024
distinguished_name = req_DN
string_mask = nombstr

[ req_DN ]
countryName = "1. Country Name (2 letter code)"
countryName_default = CH
countryName_min = 2
countryName_max = 2
stateOrProvinceName = "2. State or Province Name (full name) "
stateOrProvinceName_default = Bern
localityName = "3. Locality Name (eg, city) "
localityName_default = Bern
0.organizationName = "4. Organization Name (eg, company) "
0.organizationName_default = magnet
organizationalUnitName = "5. Organizational Unit Name (eg, section) "
organizationalUnitName_default = Certificate Authority
commonName = "6. Common Name (eg, CA name) "
commonName_max = 64
commonName_default = nasHome
emailAddress = "7. Email Address (eg, name@FQDN)"
emailAddress_max = 40
emailAddress_default = lukas@.com

die einzelne _default Werte musst du für dich anpassen.

3.3.8. Erstelle Server Zertifikat extension File
vi server.ext

und copy-paste folgenden Text

extensions = x509v3
[ x509v3 ]
nsCertType = server
keyUsage = digitalSignature,nonRepudiation,keyEncipherment
extendedKeyUsage = msSGC,nsSGC,serverAuth

3.3.9. Erstelle eine Datei mit dem Seriennummer des Zertifiaktes
echo -ne '01' > ca.serial

3.3.10. Generiere Server Zertifikat signatur request
openssl req -config server.conf -new -key server.key -out server.csr

3.3.11. Generiere privat und public key‘s für die Kameras
openssl genrsa -out cameras.key 1024

3.3.12. Erstelle ein Server Zertifikat Konfiguration File
vi cameras.conf

und copy-paste folgenden Text
[ req ]
default_bits = 1024
distinguished_name = req_DN
string_mask = nombstr

[ req_DN ]
countryName = "1. Country Name (2 letter code)"
countryName_default = CH
countryName_min = 2
countryName_max = 2
stateOrProvinceName = "2. State or Province Name (full name) "
stateOrProvinceName_default = Bern
localityName = "3. Locality Name (eg, city) "
localityName_default = Bern
0.organizationName = "4. Organization Name (eg, company) "
0.organizationName_default = magnet
organizationalUnitName = "5. Organizational Unit Name (eg, section) "
organizationalUnitName_default = Certificate Authority
commonName = "6. Common Name (eg, CA name) "
commonName_max = 64
commonName_default = cameras
emailAddress = "7. Email Address (eg, name@FQDN)"
emailAddress_max = 40
emailAddress_default = lukas@.com

die einzelne _default Werte musst du für dich anpassen.

3.3.13. Erstelle Server Zertifikat extension File
vi client.ext

und copy-paste folgenden Text

extensions = x509v3

[ x509v3 ]
nsCertType = client,email,objsign
keyUsage = digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment

3.3.14. Generiere Lameras Zertifikat signatur request
openssl req -config cameras.conf -new -key cameras.key -out cameras.csr

3.3.15. Generiere den Kameras Zertifikat
openssl x509 -days 730 -extfile cameras.ext -CA ca.crt -CAkey ca.key -CAserial ca.serial -in cameras.csr -req -out cameras.crt

4. Radius Konfiguration Anpassungen
4.1. Kopiere die generierten Zertifikate in einen von deiner Shared Ordner. Wir werden dann den ca.crt, cameras.crt und cameras.key brauchen.
cp * /volume1/my_shared_directory/directory

4.2. Jetzt muss der Radius auf unsere Zertifikate um konfiguriert werden:
vi ../eap.conf

Die original DSM Parameter mit # auskommentieren:
# private_key_file = /usr/syno/etc/ssl/ssl.key/server.key
# certificate_file = /usr/syno/etc/ssl/ssl.crt/server.crt
# CA_file = ${cadir}/ca.crt
# CA_path = ${cadir}

und folgende Parameter setzen:
private_key_file = ${certdir}/server.key
certificate_file = ${certdir}/server.crt
CA_file = ${certdir}/ca.crt
CA_path = ${certdir}

4.3. Schlussendlich muss der Radius neu gestartet werden:
/var/packages/RadiusServer/scripts/start-stop-status restart

Hinweis: Falls der Radius nicht starten sollte, kann er im Debuggin modus gestartet werden um den Fehler herauszufinden:
/var/packages/RadiusServer/target/sbin/radiusd -X

5. Zertifikate auf der Kamera installieren
5.1. Gehe im Kamera Web Config zu: System Options -> Security -> Certificates
5.2. Zuerst installiere den Server/Client Zertifikat (oberes Fenster). Drücke auf Install certificate…
camera-camera-cert

5.3. Installiere den CA Zertifikat (unteres Fenster). Drücke auf Install certificate…
camera-ca-cert

5.4. Beide Zertifikate sollen dann in den Zertifikatlisten sichtbar sein:
camera-cert-installed

5.5. Jetzt kann die IEEE 802.1X/EAPOL using EAP-TLS Authentifizierung aufgesetzt werden.
Einfach alles wie auf dem Screenshot konfigurieren und Save drücken.
camera-8021setup

Hinweis: Bei dir wird ein Unauthorized angezeigt werden da der Switch noch nicht konfiguriert wurde!

6. Switch Port auf 802.1X Authentifizierung umstellen
Das ist der letzte Schritt. Auf dem Switch wird der 802.1x Radius Server konfiguriert und der entsprechende Port auf 802.1X Authentifizierung um konfigurieren.

6.1. Switch Radius Konfiguration. Gehe auf dem Switch zu: Configuration -> AAA -> Auth Method und drücke auf Add.
Konfiguriere wie auf dem Screenshot unten
switch-aaa-auth

6.2. Konfiguriere RADIUS Verbindung. Configuration -> AAA -> Radius.
switch-aaa-radius

6.3. Konfiguriere den Port der über 802.1x authentifiziert werden soll (wo die Kamera angeschlossen ist). Configuration -> Security -> 802.1X. Dann im Sheet Port den Port auswählen und Edit drücken.

Parameter State auf Authentication setzen.
switch-aaa-port

Fertig! Wenn du alles richtig gemacht hast, sollte die Kamera immer noch über die IP Adresse erreichbar sein und im IEEE 802.1X ein Authenticated erscheinen.

Falls die Kamera nicht erreichbar ist (wurde auf dem Port geblocked) empfehle ich folgendes Vorgehen:
1. Authentifizierung auf dem Port ausschalten (so ist die Kamera wieder erreichbar).
2. Im DSM über Web GUI im Radius Server die Logs anschauen. Vergesse nicht die Refresh Taste zu drücken!
3. Im Log solltest du sehen ob ein Authentifikation versuch überhaupt stattgefunden hat. Falls du keine Einträge siehst, dann wurde der Radius/AAA auf dem Switch falsch konfiguriert.
4. Bei Zertifikat Problemen z.B. unknow CA authority Fehler – hast du entweder ein schritt vergessen oder den Radius nach der Zertifikaten Generierung nicht neu gestartet.

Ich hoffe das hilft euch schmerzlos eure Überwachung Kameras über einen gesicherten Port ins Netzt integrieren.

 Posted by at 22:26

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*