Diese Anleitung richtet sich an Nutzer, die sich mit der grundsätzichen Konfiguration eines Apache-Web-Servers auskennen!
Ich betreibe ein kleines Netzwerk mit einigen Windowsrechnern, einer Fritz!Box als Router, einem Debian-Server (zwei Domains) und einem Raspberry als Monitor für die Heizungsanlage.
Anfragen aus dem Internet (Port 80 und 443) erfolgen an die reale Domain http://www.example.dyndns.org, solche aus dem Heimnetzwerk (nur Port 80) an die fiktive Domain myServer.xx.
#~# ls /etc/apache2/sites-enabled/
010-example.dyndns.conf -> /etc/apache2/sites-available/example.dyndns.org
020-myserver.conf -> ../sites-available/myserver.xx
- Die Fritz!Box (192.168.x.1) leitet alle Anfragen aus dem Internet für die Ports 80 und 443 am den Server (192.168.x.113) weiter.
- Die Windows-Datei hosts regelt das Routing im Heimnetzwerk.
- Alle Anfragen für http://www.example.dyndns.org auf Port 80 (HTTP) werden durch den Server auf HTTPS (Port 443) umgeleitet.
- Alle Anfragen für myServer.xx werden über den Port 80 abgewickel.
- Die Zugangsberechtigung für die Webseiten wird - wie bei Apache üblich - über die .htaccess geregelt
.
.
.
# Standardsicherheit
AuthType Basic
# Vollständiger Pfad zur Kennwortdatei
AuthUserFile /var/www/.passwd/.htpasswd
#Keinen zulassen
Require all denied
# Gueltiger User erforderlich
Require valid-user
# Gueltiger IP-Bereich erforderlich
Require ip 192.168.x
.
.
.
Alles anzeigen
Aus dem Heimnetzwerk lassen sich die Seiten des Raspberry leicht über http://192.168.x.130 erreichen. Etwas komplizerter ist das aus dem Internet wenn man gleichzeitig zum Datenschutz eine Kennwort-abfrage möchte. Da alle Anfragen aus dem Internet - dank Frizt!Box - auf dem ApacheSever (192.168.x.113) landen muss dieser sie an den Raspberry (192.168.x.130) weiterleiten.
#~# cat dir /etc/apache2/sites-enabled/010-example.dyndns.conf
##########################################
# Default und Rueckfall WebSite
##########################################
<VirtualHost *:80>
ServerName www.example.dyndns.org
RewriteEngine on
RewriteRule ^/(.*) https://www.example.dyndns.org/$1 [R=permanent,L]
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.dyndns.org
DocumentRoot /var/www/default/
ServerAdmin admin@example.dyndns.org
<Directory /var/www/default>
AllowOverride all
</Directory>
SSLEngine on
SSLCertificateKeyFile /etc/apache2/ssl/default.key
SSLCertificateFile /etc/apache2/ssl/default.cert
</VirtualHost>
.
.
.
##########################################
# Raspery-Heizung
##########################################
<VirtualHost *:80>
ServerName hzg.example.dyndns.org
ServerAdmin admin@example.dyndns.org
RewriteEngine On
RewriteRule ^/(.*) https://hzg.example.dyndns.org/$1 [R=permanent,L]
</VirtualHost>
<VirtualHost *:443>
ServerName hzg.example.dyndns.org
SSLProxyEngine On
ProxyPass / https://192.168.x.130/
ProxyPassReverse / https://192.168.x.130/
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
SSLEngine on
SSLCertificateKeyFile /etc/apache2/ssl/hzg.key
SSLCertificateFile /etc/apache2/ssl/hzg.cert
</VirtualHost>
Alles anzeigen
Die Webseiten des Raspberry sind jetzt - ungeschützt - aus dem Internet erreichbar! Das Programm lighttpd kennt zwar eine .htpasswd, daber keine .htaccess. Hier kommt die Datei /etc/lighttpd/conf-available/05-auth.conf als Muster ins Spiel. Sie ist die Vorlagen für meine Eigenkreation 06-my_auth.conf.
#~# cat /etc/lighttpd/conf-available/06-my_auth.conf
###################################################
# ./06-my_auth.conf #
# Verhindernen des Zugriffs aus dem Internet ohne #
# Kennwort-Abfrage! Der Zugriff aus dem Internet #
# erfolgt über den Apache-Server 192.168.x.113 #
###################################################
server.modules += ( "mod_auth" )
$HTTP["remoteip"] =~ "192\.168\.x\.113" {
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/home/pi/.passwd/.htpasswd_hzg"
auth.require = ( "/" =>
(
"method" => "basic",
"realm" => "",
"require" => "valid-user"
),
)
}
Alles anzeigen
Für den Pi gilt für alle Anfragen aus dem Internet der Debian-Server (192.168.x.113) als Quelle und genau für diese eine IP-Adresse wird eine Kennwort-Abfrage vorgeschrieben.
Die Datei /home/pi/.passwd/.htpasswd_hzg wir - wie auch bei Apache - so erstellt:
Die Begriffe BENUTZER und KENNWORT sind natürlich entsprechend zu ändern.
Nicht vergessen die Eigenkreation zu "enablen" und ggf. die Datei 05-auth.conf zu "unablen"!
#~# ls /etc/lighttpd/conf-enabled/
06-my_auth.conf -> ../conf-available/06-my_auth.conf
10-cgi.conf -> ../conf-available/10-cgi.conf
10-fastcgi.conf -> ../conf-available/10-fastcgi.conf
10-ssl.conf -> ../conf-available/10-ssl.conf
10-userdir.conf -> ../conf-available/10-userdir.conf
15-fastcgi-php.conf -> /etc/lighttpd/conf-available/15-fastcgi-php.conf
Vielleicht habe ich euch ja nichts neues erzählt, aber ich habe nach einer Lösung vergeblich gesucht.