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.