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.