Inhaltsverzeichnis

n

Kommunikation mit der Kamera

Aus dem Intranet im SOHO is der Zugriff auf die Kamera, ja direkt ohne Umwege über die private IP-Adresse (192.168.100.60) bzw. über den FQDN (M22M-WEST.nausch.org) möglich.

Stufe 1: Apache reverse proxy

Möchten wir nun direkt aus dem WWW auf unsere Kamera zugreifen, so könnten wir freilich einen festen beliebigen Port auf den Webserver der Kamera weiterreichen. Weitaus eleganter finde ich die Variante, bestimmte Anfragen auf den V-Host unseres Apachen von diesem an den Webserver der Kamera weiterzureichen.

Hierzu nutzen wir die reverse proxy Funktionalitäten unseres Webservers.

Die Definition unseres V-Hostes legen wir also wie folgt an:

#
# camera.nausch.org
#
<VirtualHost *:80>
        ServerAdmin webmaster@nausch.org
        ServerName camera.nausch.org:80
        ServerAlias camera.nausch.org *.camera.nausch.org
        ServerPath /
        DocumentRoot "/var/www/html/camera"
        <Directory "/var/www/html/camera">
                Options FollowSymLinks
                Order allow,deny
                Allow from all
        </Directory>
        DirectoryIndex index.html index.php
        ErrorLog logs/camera_error.log
        CustomLog logs/camera_access.log combined
        <IfModule mod_proxy.c>
                RewriteEngine     On
                RewriteLogLevel   1
                ProxyRequests     Off
                RewriteRule       ^/admin/(.*)   https://192.168.100.60/admin/$1   [P,L]
                RewriteRule       ^/cgi-bin/(.*) https://192.168.100.60/cgi-bin/$1 [P,L]
                RewriteRule       ^/control/(.*) https://192.168.100.60/control/$1 [P,L]
                RewriteRule       ^/decor/(.*)   https://192.168.100.60/decor/$1   [P,L]
                RewriteRule       ^/help/(.*)    https://192.168.100.60/help/$1    [P,L]
                RewriteRule       ^/record/(.*)  https://192.168.100.60/record/$1  [P,L]
                RewriteRule       ^/webcam/(.*)  https://192.168.100.60/$1         [P,L]
        </IfModule>
</VirtualHost>

Die Rewrite-Funktion müssen wir nutzen, da sonst die Adressierung der vom Webserver der Kamera zum Webbroser des Nutzers zurückgeschickten Adressen nicht passen würde. In unserem Fall werden somit die Adressen richtig in webcam.nausch.org/webcam/ ergänzt. Ohne diese Rewrite-Funktionalität würden die Adressen ohne webcam zurückgeschickt, was unweigerlich bei weiteren Clientzugriffen zum Scheitern verurteilt wäre.

Stufe 2: Zugriffsschutz mittels .htaccess

Mit der vorgenannten Konfiguration kann nun natürlich jedermann auf Bereiche der Kamera zugreifen, die wir so nicht wünschen. Denn was sich schließlich alles im cgi-bin-Verzeichnis der Webcam an Scripten tummelt, ist so ohne weiteres nicht für uns ersichtlich. Wir schützen also unser DocumentRoot mittels einer .htaccess-Datei.

AuthType Basic
AuthName "Wetterwebcam der Wetterstation Pliening"
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL "ldap://ldap.domain.de:389/dc=domain,dc=de?uid"
Require ldap-user webcam-root
#
# camera.nausch.org
#
<VirtualHost *:80>
        ServerAdmin webmaster@nausch.org
        ServerName camera.nausch.org:80
        ServerAlias camera.nausch.org *.camera.nausch.org
        ServerPath /
        DocumentRoot "/var/www/html/camera"
        <Directory "/var/www/html/camera">
                Options FollowSymLinks
                AllowOverride AuthConfig
                Order allow,deny
                Allow from all
        </Directory>
        DirectoryIndex index.html index.php
        ErrorLog logs/camera_error.log
        CustomLog logs/camera_access.log combined
        <IfModule mod_proxy.c>
                RewriteEngine     On
                RewriteLogLevel   1
                ProxyRequests     Off
                RewriteRule       ^/admin/(.*)   https://192.168.100.60/admin/$1   [P,L]
                RewriteRule       ^/cgi-bin/(.*) https://192.168.100.60/cgi-bin/$1 [P,L]
                RewriteRule       ^/control/(.*) https://192.168.100.60/control/$1 [P,L]
                RewriteRule       ^/decor/(.*)   https://192.168.100.60/decor/$1   [P,L]
                RewriteRule       ^/help/(.*)    https://192.168.100.60/help/$1    [P,L]
                RewriteRule       ^/record/(.*)  https://192.168.100.60/record/$1  [P,L]
                RewriteRule       ^/webcam/(.*)  https://192.168.100.60/$1         [P,L]
        </IfModule>
</VirtualHost>

Die Authentifizierung erfolgt nunmehr gegen unseren zentralen LDAP-Server.

Der Zugriffsschutz greift damit aber NUR für das Hauptverzeichnis camera.nausch.org, NICHT für die Unterverzeichnisse, die wir an unsere Mobotix-Kamera weiterreichen. Damit auch diese geschützt werden, erweiteren wir unsere erste V-Host-Definition entsprechend:

#
# camera.nausch.org
#
<VirtualHost *:80>
        ServerAdmin webmaster@nausch.org
        ServerName camera.nausch.org:80
        ServerAlias camera.nausch.org *.camera.nausch.org
        ServerPath /
        DocumentRoot "/var/www/html/camera"
        <Directory "/var/www/html/camera">
                Options FollowSymLinks
                AllowOverride AuthConfig
                Order allow,deny
                Allow from all
        </Directory>
        <Location "/admin">
                AuthType Basic
                AuthName "Wetterwebcam der Wetterstation Pliening"
                AuthBasicProvider ldap
                AuthzLDAPAuthoritative off
                AuthLDAPURL "ldap://ldap.domain.de:389/dc=domain,dc=de?uid"
                Require ldap-user webcam-root
        </Location>
        <Location "/cgi-bin">
                AuthType Basic
                AuthName "Wetterwebcam der Wetterstation Pliening"
                AuthBasicProvider ldap
                AuthzLDAPAuthoritative off
                AuthLDAPURL "ldap://ldap.domain.de:389/dc=domain,dc=de?uid"
                Require ldap-user webcam-root
        </Location>
        <Location "/control">
                AuthType Basic
                AuthName "Wetterwebcam der Wetterstation Pliening"
                AuthBasicProvider ldap
                AuthzLDAPAuthoritative off
                AuthLDAPURL "ldap://ldap.domain.de:389/dc=domain,dc=de?uid"
                Require ldap-user webcam-root
        </Location>
        <Location "/decor">
                AuthType Basic
                AuthName "Wetterwebcam der Wetterstation Pliening"
                AuthBasicProvider ldap
                AuthzLDAPAuthoritative off
                AuthLDAPURL "ldap://ldap.domain.de:389/dc=domain,dc=de?uid"
                Require ldap-user webcam-root
        </Location>
        <Location "/help">
                AuthType Basic
                AuthName "Wetterwebcam der Wetterstation Pliening"
                AuthBasicProvider ldap
                AuthzLDAPAuthoritative off
                AuthLDAPURL "ldap://ldap.domain.de:389/dc=domain,dc=de?uid"
                Require ldap-user webcam-root
        </Location>
        <Location "/record">
                AuthType Basic
                AuthName "Wetterwebcam der Wetterstation Pliening"
                AuthBasicProvider ldap
                AuthzLDAPAuthoritative off
                AuthLDAPURL "ldap://ldap.domain.de:389/dc=domain,dc=de?uid"
                Require ldap-user webcam-root
        </Location>
        <Location "/webcam">
                AuthType Basic
                AuthName "Wetterwebcam der Wetterstation Pliening"
                AuthBasicProvider ldap
                AuthzLDAPAuthoritative off
                AuthLDAPURL "ldap://ldap.domain.de:389/dc=domain,dc=de?uid"
                Require ldap-user webcam-root
        </Location>
        DirectoryIndex index.html index.php
        ErrorLog logs/camera_error.log
        CustomLog logs/camera_access.log combined
        <IfModule mod_proxy.c>
                RewriteEngine     On
                RewriteLogLevel   1
                ProxyRequests     Off
                RewriteRule       ^/admin/(.*)   https://192.168.100.60/admin/$1   [P,L]
                RewriteRule       ^/cgi-bin/(.*) https://192.168.100.60/cgi-bin/$1 [P,L]
                RewriteRule       ^/control/(.*) https://192.168.100.60/control/$1 [P,L]
                RewriteRule       ^/decor/(.*)   https://192.168.100.60/decor/$1   [P,L]
                RewriteRule       ^/help/(.*)    https://192.168.100.60/help/$1    [P,L]
                RewriteRule       ^/record/(.*)  https://192.168.100.60/record/$1  [P,L]
                RewriteRule       ^/webcam/(.*)  https://192.168.100.60/$1         [P,L]
        </IfModule>
</VirtualHost>

Somit ist nunmehr auch der Zugriff auf die Unterverzeichnisse der Mobotix-Kamera gesichert; d.h nicht mehr Gott und die Welt haben Zugriff auf die Kamera, in dem Sie die Adresse https://cam1.nausch.org/cgi-bin/guestimage.html eingeben.

Stufe 3: Webcam-User

Damit der Zugriff auf die gesicherten Bereiche der Kamera auch mit dem richtigen Systemuser erfolgt, legen wir den vorgenannten User webcam-root aus unserem zentralen Verzeichnisserver, noch in der Mobotix-Kamera an. Hierzu wählen wir im Admin-Menü den Punkt Sicherheit - Benutzer und Kennwörter aus und tragen dort den User webcam-root mit den entsprechenden Rechten ein.