Ordnerstruktur des Servers
tree /etc/openvpn
/etc/openvpn/
|-- ccd
|-- client
| |-- client01
| |-- client02
| |-- client03
| `-- client04
|-- server
`-- ssl
Vorlagen
Server
cat /etc/openvpn/server.conf
dev tun
mode server
tls-server
topology subnet
server 1.2.3.0 255.255.255.0
route-gateway 1.2.3.1
cipher AES-256-GCM
keepalive 10 30
client-to-client
client-config-dir ccd/
dh ssl/dh4096.pem
ca ssl/admin.ca
cert ssl/admin.crt
key ssl/admin.key
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so /etc/pam.d/login
Client
cat /etc/openvpn/client/template.ovpn
dev tun0
remote 2.3.4.5
cipher AES-256-GCM
tls-client
pull
auth-user-pass
<ca>
</ca>
<cert>
</cert>
<key>
</key>
Neuen Nutzer anlegen
Für einen neuen Nutzer mit statischer IP benötigt man drei Dinge:
- Client-Zertifikat
- eine Konfigurationsdatei, die nutzerspezifische Einstellungen überträgt
- POSIX-Nutzer mit Passwort
Erstellen der Zertifikate
mkdir -p /etc/openvpn/client/new-user
cd !$
openssl genrsa -out new-user.key 4096
openssl req -new -key new-user.key -out new-user.csr
...
Common Name (e.g. server FQDN or YOUR name) []: NewUser
...
openssl x509 -req -days 3650 -in user.csr -CA ../../ssl/admin.ca -CAkey ../../ssl/admin.ca.key -CAcreateserial -out new-user.crt
openssl x509 -subject -noout -in new-user.crt
statische IP an den Common Name des Nutzers zuweisen
echo "ifconfig-push 1.2.3.4 255.255.255.0" > /etc/openvpn/ccd/NewUser
Nutzer ohne Shell und Heimatverzeichnis erstellen
useradd new-user -d /nonexistent -s /usr/bin/nologin
passwd new-user
.ovpn-Datei für den Client
Nachdem die template.ovpn-Vorlage irgendwohin kopiert wurde (ich empfehle /etc/openvpn/client/new-user/new-user.ovpn), kann man mit Vim ganz einfach die Zertifikate mit :0read /etc/openvpn/client/new-user/new-user.crt einfügen:
Anschließend kann der Client die Datei mit NetworkManager importieren.