Samba via OpenVPN absichern

  • Datum: 17.05.2015

  • Distribution: Debian 9

  • Ziel: Auf einem im Internet laufenden Host soll eine Samba-Freigabe erstellt werden, wobei der Zugriff der Clients über OpenVPN geschieht.

Einrichtung von Samba

Nach der Installation von Samba mit apt-get install samba smbclient ist es ratsam, die originale Konfigurationsdatei umzubenennen:

mv /etc/samba/smb.conf  /etc/samba/smb.conf_orig

und mit einer einfachen, sicheren smb.conf zu beginnen:

[global]
   bind interfaces only = yes
   interfaces = 127.0.0.1, 10.4.0.1

[free]
  path = /srv/free
  writeable = yes

Nun fehlt noch ein dedizierter Benutzer, mit dem auf die Samba-Freigaben zugegriffen werden soll:

useradd -d /nodir -s /bin/false otto
smbpasswd -a otto

Die Daemons können mit service samba restart neu gestartet werden, um die geänderte Konfiguration einzulesen.

Einrichtung von OpenVPN

Es muss zuerst wieder das OpenVPN-Paket installiert werden, danach wird für erste Versuche der Pre-Shared-Key erzeugt:

cd /etc/openvpn
openvpn --genkey --secret my.key

Für höhere Sicherheit sollte man ihn später durch Zertifikate ersetzen.

Dieser Schlüssel muss nun auf sichere Weise (z.B. via scp oder mit Hilfe eines verschlüsselten Zip-Archives) auf die Client-Rechner kopiert werden.

Konfiguration auf dem Server

Distribution: Debian 9

In der Datei /etc/openvpn/server.conf sollte folgendes stehen:

dev tap
ifconfig 10.4.0.1 255.255.255.0
secret /etc/openvpn/my.key
cipher AES-256-CBC
auth-nocache

HINWEIS: Der Dateiname /etc/openvpn/server.conf wird direkt so erwartet. Es darf aber prinzipiell auch ein Symlink sein, der auf die eigentliche Datei zeigt, die z.B. im Unterverzeichnis server liegt und ganz anders heißt.

Nun noch den Daemon mit

systemctl enable openvpn
systemctl start openvpn

aktivieren und starten. Gelingt das nicht ohne weiteres, kann es an dem noch nicht geladenen Modul tun liegen. Also einfach

modprobe tun

ausführen. Den VPN-Verbindungsaufbau kann man mit

tail -f /var/log/syslog

beobachten.

Konfiguration auf einem Linux-Client

Distribution: Debian 9

In der Datei /etc/openvpn/client.conf steht in etwa das Folgende drin:

dev tap
remote my.vserver.tld
ifconfig 10.4.0.2 255.255.255.0
secret /etc/openvpn/my.key
cipher AES-256-CBC
### Wenn komplettes Host-an-Netz umgesetzt werden soll (Szenario "Road-Warrior"):
#route-gateway 10.4.0.1
#redirect-gateway

Der oben erzeugte Schlüssel my.key muss hier natürlich vorliegen, vor dem Starten des OpenVPN-Daemons kann es auch hier evl. wieder erforderlich sein, das Modul tun zu laden.

Weiterhin erfolgt das Aktivieren und Starten des Daemons wie oben beim Debian-Server.

Ein erster Test mit ping -c3 10.4.0.1 sollte zeigen, dass der Tunnel funktioniert.

Konfiguration auf einem Windows-Client

Nach dem Downloaden der Software und entsprechender Installation wird der Schlüssel sowie die Konfigurationsdatei client.ovpn unter C:ProgrammeOpenVPNconfig\ abgelegt.

Hier ist der Inhalt der Datei C:ProgrammeOpenVPNconfigclient.ovpn:

dev tap
remote my.vserver.tld
ifconfig 10.4.0.3 255.255.255.0
secret C:\\Programme\\OpenVPN\\config\\my.key
cipher AES-256-CBC
#route-gateway 10.4.0.1
#redirect-gateway

Der Tunnel wird hier über das OpenVPN-Icon im Systray gestartet. Danach sollte ebenfalls ein ping 10.4.0.1 möglich sein.

Testings/Nacharbeiten

Unter Linux kann man sich jetzt auf sichere Art mit

smbclient -Uotto //10.4.0.1/free

auf den Samba-Server einloggen und das Share benutzen.

AUSBLICK: Damit der VPN-Server nicht nur jeweils eine Verbindung akzeptiert, muss das allowing multiple clients to connect to a single OpenVPN server umgesetzt werden.