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.