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:
.. highlight:: bash
::
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:\Programme\OpenVPN\config\\*
abgelegt.
Hier ist der Inhalt der Datei *C:\Programme\OpenVPN\config\client.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.