Angenommen, wir richten ein Unternehmens-VPN ein und möchten separate Zugriffsrichtlinien für drei verschiedene Benutzerklassen festlegen:
System administrators -- full access to all machines on the network
Employees -- access only to Samba/email server
Contractors -- access to a special server only
Der grundlegende Ansatz besteht darin, (a) jede Benutzerklasse in ihren eigenen virtuellen IP-Adressbereich zu unterteilen und (b) den Zugriff auf Computer zu steuern, indem Firewall-Regeln eingerichtet werden, die die virtuelle IP-Adresse des Clients eingeben.
Nehmen wir in unserem Beispiel an, wir haben eine variable Anzahl von Mitarbeitern, aber nur einen Systemadministrator und zwei Auftragnehmer. Unser IP-Zuweisungsansatz besteht darin, alle Mitarbeiter in einen IP-Adresspool aufzunehmen und dann dem Systemadministrator und den Auftragnehmern feste IP-Adressen zuzuweisen.
Beachten Sie, dass eine der Voraussetzungen für dieses Beispiel darin besteht, dass auf dem OpenVPN-Server eine Software-Firewall ausgeführt wird, mit der Sie bestimmte Firewall-Regeln definieren können. In unserem Beispiel wird davon ausgegangen, dass es sich bei der Firewall um Linux iptables handelt.
Lassen Sie uns zunächst eine virtuelle IP-Adresszuordnung nach Benutzerklasse erstellen:
Class Virtual IP Range Allowed LAN Access Common Names
Employees 10.8.0.0/24 Samba/email server at 10.66.4.4 [variable]
Sys Admins 10.8.1.0/24 Entire 10.66.4.0/24 subnet sysadmin1
Contractors 10.8.2.0/24 Contractor server at 10.66.4.12 contractor1, contractor2
Als nächstes übersetzen wir diese Map in eine OpenVPN-Serverkonfiguration. Stellen Sie zunächst sicher, dass Sie die oben genannten Schritte ausgeführt haben, um das Subnetz 10.66.4.0/24 allen Clients zur Verfügung zu stellen (während wir das Routing so konfigurieren, dass der Clientzugriff auf das gesamte Subnetz 10.66.4.0/24 möglich ist, legen wir dies fest Zugriffsbeschränkungen mithilfe von Firewall-Regeln zum Implementieren der obigen Richtlinientabelle.
Definieren Sie zunächst eine statische Einheitennummer für unsere Tun-Schnittstelle, damit wir später in unseren Firewall-Regeln darauf verweisen können:
dev tun0
Definieren Sie in der Serverkonfigurationsdatei den Mitarbeiter-IP-Adresspool:
server 10.8.0.0 255.255.255.0
Fügen Sie Routen für die IP-Bereiche Systemadministrator und Auftragnehmer hinzu:
route 10.8.1.0 255.255.255.0
route 10.8.2.0 255.255.255.0
Da wir bestimmten Systemadministratoren und Auftragnehmern feste IP-Adressen zuweisen, verwenden wir ein Client-Konfigurationsverzeichnis ccd
:
client-config-dir ccd
Platzieren Sie nun spezielle Konfigurationsdateien im ccd
Unterverzeichnis, um die feste IP-Adresse für jeden Nicht-Mitarbeiter-VPN-Client wie folgt zu definieren.
ccd/sysadmin1
Datei:
ifconfig-push 10.8.1.1 10.8.1.2
ccd/contractor1
Datei:
ifconfig-push 10.8.2.1 10.8.2.2
ccd/contractor2
Datei:
ifconfig-push 10.8.2.5 10.8.2.6
Jedes Paar von ifconfig-Push-Adressen repräsentiert die IP-Endpunkte des virtuellen Clients und Servers. Sie müssen aus aufeinanderfolgenden / 30 Subnetzen entnommen werden, um mit Windows-Clients und dem TAP-Windows-Treiber kompatibel zu sein. Insbesondere muss das letzte Oktett in der IP-Adresse jedes Endpunktpaars aus diesem Satz entnommen werden:
[ 1, 2] [ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18]
[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]
[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]
[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]
[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]
[101,102] [105,106] [109,110] [113,114] [117,118]
[121,122] [125,126] [129,130] [133,134] [137,138]
[141,142] [145,146] [149,150] [153,154] [157,158]
[161,162] [165,166] [169,170] [173,174] [177,178]
[181,182] [185,186] [189,190] [193,194] [197,198]
[201,202] [205,206] [209,210] [213,214] [217,218]
[221,222] [225,226] [229,230] [233,234] [237,238]
[241,242] [245,246] [249,250] [253,254]
Damit ist die OpenVPN-Konfiguration abgeschlossen. Der letzte Schritt besteht darin, Firewall-Regeln hinzuzufügen, um die Zugriffsrichtlinie abzuschließen.
Quelle: https://openvpn.net/index.php/open-source/documentation/howto.html#policy