Benutzer-Werkzeuge

Webseiten-Werkzeuge


geschuetzte_dienste

Übersicht Dokumentation

Geschützte Dienste

HTTP Basic Authentication

umgangssprachlich: htaccess!

Einrichtung

Die Grundidee liegt darin, die entsprechenden Dienste in einem per .htaccess geschützten Verzeichnis bereitzustellen. Dazu wird ein Wrapper-Verzeichnis eingerichtet wie hier beschrieben.

In der Datei /etc/apache2/sites-available/default werden für die Wrapper-Verzeichnisse z.B. /opt/security_services mit folgenden Direktiven ein Verzeichnisschutz eingerichtet

AuthType Basic
AuthName "Gesicherte Dienste "
AuthUserFile /home/myuser/htauth/htuser
Require valid-user

In der Datei /home/myuser/htauth/htuser befinden sich die Angaben zu den Benutzern

Editiert wird diese Datei am einfachsten mit

htpasswd benutzername

OpenVPN

Server einrichten

sudo apt-get install openvpn

Es werden folgende (im folgenden wichtige) Verzeichnisse angelegt:

Für das Erzeugen der Schlüssel:

./usr/share/doc/openvpn/examples/easy-rsa/2.0/

Und OpenVPN eben:

./etc/openvpn

Keys erzeugen

Quelle

Neues Verzeichnis anlegen (z.B. in /opt/)

sudo mkdir /opt/easy-rsa2/

rüberkopieren:

cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/*  /opt/easy-rsa2/

Vars anpassen:

vim /opt/easy-rsa2/vars

Hier folgendes anpassen:

# In how many days should the root CA key expire?
export CA_EXPIRE=3650

Laufzeit des Zertifikats eben … kann man aber so stehenlassen

export KEY_COUNTRY="DE"
export KEY_PROVINCE="BB"
export KEY_CITY="Brandenburg"
export KEY_ORG="MeineFirma"
export KEY_EMAIL="meine@mailadresse.com"

abspeichern! [ESC] :wq

cd /opt/easy-rsa2/
. ./vars
./clean-all

CA-Key und CA-Cert erzeugen: (einmal und dann nie wieder!)

./build-ca

Diffie-Hellman Parameter erzeugen

./buid-dh

Server Schlüssel bauen:

. ./vars
./build-key-server server01

Natürlich als Servernamen einen sinnvollen Namen verwenden, die Abfragen durchentern, ggf. noch sinnvolle Angaben nachtragen

Nun wurden im Verzeichnis /opt/easy-rsa2/keys etliche Dateien erzeugt. Wir benötigen:

  • ca.cert
  • dh1024.pem
  • server01.crt
  • server01.key

Verzeichnis im openvpn-Arbeitsverzeichnis anlegen:

mkdir /etc/openvpn/keys

und die Dateien dorthin kopieren:

cp /opt/easy-rsa2/keys/ca.cert /etc/openvpn/keys
cp /opt/easy-rsa2/keys/dh1024.pem /etc/openvpn/keys
cp /opt/easy-rsa2/keys/server01.crt /etc/openvpn/keys
cp /opt/easy-rsa2/keys/server01.key /etc/openvpn/keys

Client-Schlüssel bauen:

. ./vars
./build-key-pass vpnclient01

Es wurden nun die folgenden Schlüssel für den Client erstellt:

  • ca.crt
  • vpnclient01.crt
  • vpnclient01.key

Wichtig: Anderen Hostnamen als bei der Server-Schlüsseln verwenden! Diese Keys müssen auf einem sicheren Weg an den Client geschickt werden. Diese Dateien dürfen nicht verändert werden, also NICHT via WebServer zum Dowload anbieten, da dann die Zeichensätze evtl. angepasst werden. Am Besten ist es, die Dateien zu packen (tar -cvf …) und so weiterzugeben.

Server starten

Verzeichnis anlegen: /etc/openvpn/keys

Keys rüberkopieren:

  • ca.crt
  • server01.crt
  • server01.key

Im Verzeichnis /etc/openvpn/keys Konfigurationsdatei anlegen:

vim /etc/openvpn/vpn1.conf

folgenden Inhalt reinkopieren:

server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk
port 1194 # Auf Port 1194 horchen
proto udp # Protokoll UDP, für TCP: proto tcp-server
dev tap # evtl. tap0 unter Linux

# Hier die Pfade anpassen um auf die erstellten Keys zu verweisen
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server01.crt
key /etc/openvpn/keys/server01.key

# Falls eine PKCS#12 Datei verwendet wird, statt ca/cert/key diese Zeile verwenden
# pkcs12 server.p12
dh /etc/openvpn/keys/dh1024.pem

# float # wenn Clients ihre IPs während der Verbindung wechseln (Modemeinwahl)

ping-timer-rem
keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten Timeout fuer Clientverbindung

verb 3 # Zum Debugging erhöhen

# Wenn Vista verwendet wird, diese Zeilen einkommentieren
# route-method exe
# route-delay 2

Starten des Servers:

openvpn --config /etc/openvpn/vpn1.conf

Dann sollten allerhand Meldungen kommen - und am Ende irgendwas von „Initialization Sequence Completed“ stehen. Finger weg - laufenlassen!

Client einrichten & starten

Hier wird das Vorgehen bei einem Windows-Client beschrieben, was ja meist zutreffen sollte.

Installationspaket openVPN runterladen:

Beim Installationsvorgang meckert Windows, das irgendwas nicht freigegeben oder zertifiziert sei → Ignorieren und weitermachen.

Nach erfolgreicher Installation sollte eine neue Netzwerkkarte in den Eigenschaften der Netzwerkumgebung (Rechtsklick auf „Netzwerkumgebung“) auftauchen, die „LAN-Verbindung2“ oder ähnlich heisst. Rechtsklick, Eigenschaften aufrufen: Dort sollte unter „Verbindung herstellen über:“ folgender Eintrag zu sehen sein „TAP-WIN32 Adapter V8“ - Wenn nicht, ist es nicht die richtige Karte, die nächste bitte und schauen … wenn gefunden, dann die Netzwerkkarte umbenennen (mit F2) auf „openvpn1“.

Im Verzeichnis „C:\Programme\OpenVPN\config“ folgendes tun:

Schlüssel (aus Abschnitt: Schlüssel erzeugen) dorthin kopieren. Alternativ kann man auch ein Verzeichnis angeben, dann ist der Pfad in der Konfigurationsdatei anzugeben, Die dann mit doppelten Backslashes (\\) angeben.

In der Form „C:\\Programme\\OpenVPN\\config\\keys\\ca.crt“).

Datei vpn01.txt anlegen und mit Editor öffnen. Folgenden Inhalt reinkopieren:

Die erste Zeile muss so angepasst werden, dass dort die IP des VPN-Servers steht (Bei mir zum Testen war das die 192.168.1.144 und beide unterhalten sich auf Port 1194, auch dass kann man noch konfigurieren, aber dann natürlich auch in der Server-Konfiguration.

client

remote 192.168.1.144 1194 # Hostname/externe IP des Servers/Routers, Port entsprechend anpassen

proto udp # Protokoll UDP, für TCP: proto tcp-client

dev tap # evtl. tap0 unter Linux
# Hier die Pfade anpassen um auf die erstellten Keys zu verweisen

ca ca.crt
cert vpnclient01.crt
key vpnclient01.key
# Falls eine PKCS#12 Datei verwendet wird, statt ca/cert/key diese Zeile verwenden
# pkcs12 server.p12

ns-cert-type server # verhindert Man-in-the-Middle Attacken

verb 3 # Zum Debugging erhöhen

# Wenn Vista verwendet wird, diese Zeilen einkommentieren
# route-method exe
# route-delay 2

vpn01.txt nach vpn01.ovpn umbenennen.

Start durch Rechtsklick auf die vpn01.ovpn, Auswahl: „Start OpenVPN on this config file“

Es geht ein DOS-Fenster auf und es erscheinen allerhand Meldungen, die letzte müsste hier auch wieder „Initialization Sequence Completed“ heissen. Auf dem Server sollten nun auch verschiedene Meldungen kommen, die die Verbindung des Clients anzeigen.

Voila! Der Tunnel steht.

Nun kann in einem weiteren DOS-Fenster (Start → ausführen → cmd eintippen) mittels des Befehls „ipconfig“ überprüft werden, dass es nun eine weitere aktive Netzwerkverbindung am Ethernetadapter openvpn1 mit der IP 10.8.0.2 gibt.

WebServer anpassen

Es ist nun möglich den Apache-WebServer mit der „offenen“ IP-Adresse (hier 192.168.1.146) anzusprechen (http://192.168.1.146/) im Browser aufrufen, wie auch über die sichere Verbindung mit der IP-Adresse (10.8.0.1) anzusprechen (http://10.8.0.1/) aber das bringt natürlich nichts da der WebServer ja nur auf die sichere Verbindung antworten soll.

Dazu müssen in der Konfigurationsdatei folgende Einträge erfolgen:

vim /etc/apache2/sites-enabled/000-default 
 <Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      deny from 192.168.
      allow from 10.8.0.
 </Directory>

Der Eintrag „deny from 192.168.“ schliesst alle Anfragen aus dem Netz 192.168.*.* aus und der Eintrag „allow from 10.8.0.“ erlaubt alle Anfragen aus dem Netz 10.8.0.*. Nach eintrag Apachen restarten:

/etc/init.d/apache2 restart

Nun sollten Anfragen vom Client-Browser mit http://192.168.1.146/ ins leere laufen und die Anfragen mit der IP http://10.8.0.1/ eine Website anzeigen.

Da diese Apache-Einstellungen auch für den Mapserver gelten, der ja eine cgi-bin-Anwendung ist, sollten nun nur noch die Dienste über den sicheren Tunnel beantwortet werden.

geschuetzte_dienste.txt · Zuletzt geändert: 2017/05/18 10:43 (Externe Bearbeitung)