OpenVPN – Zugriffe einzelner Benutzer einschränken
Es ist in einer normalen VPN Umgebung gang und gäbe, dass sich mehrere Benutzer via VPN einwählen.
Oftmals soll für jeden einzelnen Benutzer schon an dieser Stelle die Zugriffe eingeschränkt werden, weitab von Logins und Zugängen innerhalb der im Netzwerk bereitgestellten Applikationen.
OpenVPN bietet hier leider keine Möglichkeit das ganze auf den sich verbindenden Benutzer (z.B. Common Name im Zertifkat) zu beziehen und hier gleich versch. Regeln zu hinterlegen.
Das ganze muss auf der Routingebene abgehandelt werden.
In unserem Fall sollten die Zugriffe für externe Mitarbeiter und Dienstleister stark eingeschränkt werden, während normale Mitarbeiter weitaus mehr Freiheiten haben sollen.
Um das umzusetzen sind für die versch. Zugriffe leider 2 Instanzen des OpenVPN Servers notwendig, die unabhängig voneinander konfiguriert werden müssen.
Das ganze kann bequem über die server.conf erfolgen.Wichtige Einstellungen die sich in beiden Instanzen unterscheiden müssen sind hier:
#Our Server IP
ifconfig 192.168.222.1 255.255.255.0#dynamic clients from 10.0.0.2-10.0.0.254
ifconfig-pool 192.168.222.100 192.168.222.150# Port
port 1194
Danach eben den Server mit den entsprechenden Configs starten.
/usr/sbin/openvpn –writepid /var/run/openvpn.server.pid –daemon ovpn-server –status /var/run/openvpn.server.status 10 –cd /etc/openvpn –config /etc/openvpn/server.conf
/usr/sbin/openvpn –writepid /var/run/openvpn_extern.server.pid –daemon ovpn-server –status /var/run/openvpn_extern.server.status 10 –cd /etc/openvpn_extern –config /etc/openvpn_extern/server.conf
In unserem Fall eben eine Instanz für die Mitarbeiter und eine für die externen Dienstleister.
Nun haben aber beide Netze noch die vollen Zugriffsrechte und könnten alle Server im LAN erreichen.
Hier kommt nun IPTABLES und entsprechende Regeln ins Spiel.
Erstmal suchen wir, welches Interface die VPN Connections von extern bearbeitet
tap1 Link encap:Ethernet Hardware Adresse 00:ff:87:b9:13:c8
inet Adresse:192.168.223.1 Bcast:192.168.223.255 Maske:255.255.255.0
In unserem Fall also tap1.
Wir wollen jetzt erstmal den Zugriff auf das komplette LAN abschalten, und auch auf den OpenVpN Server
iptables -A FORWARD -i tap1 -p all -j DROP
iptables -A INPUT -i tap1 -d 192.168.223.0/24 -j DROP
Der Client kann jetzt keinerlei Verbindungen mehr ins Netzwerk aufbauen, kann sich aber weiterhin verbinden.
Jetzt wollen wir den Zugriff auf eine einzelne Applikation (z.B. SBS Intranet Webseite) freischalten. Der SBS hat bei uns die IP 192.168.1.1. Die Regel muss unbedingt vor der DROP Regel stehen, da IPTABLES Sequentiell von oben nach untern vorgeht. Deswegen setzen wir sie mit -I 1 nach vorne!
iptables -I FORWARD 1 -p tcp -i tap1 -d 192.168.1.1 –dport 80 -j ACCEPT
Das sollte den Zugriff ermöglichen.
So kann man jetzt einzelne Applikationen nach und nach freischalten.
