VPN-Server mit Debian – TecArt-CRM Developer-Wiki

VPN-Server mit Debian

Aus TecArt-CRM Developer-Wiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Hinweise

Die in der Anleitung angegebenen Namen für den Server (im Beispiel gate) müssen durch den Namen des verwendeten Servers ersetzt werden.

Kommt es während der Verbindung zu Problemen, kann in den Optionsdateien in einer neuen Zeile debug eingefügt werden. Dadurch werden erweiterte Informationen zur Verbindung in die Log-Datei /var/log/syslog geschrieben.

WICHTIG: Um die Forwarding-Funktionen des Kernels zu nutzen, muss IPv4-Forwarding aktiviert sein. Dazu muss in der Datei /etc/sysctl.conf die Zeile

net.ipv4.ip_forward=1

eingefügt werden. Außerdem kann die Option auch ohne Reboot temporär mit folgendem Befehl übernommen werden:

root@server~: sysctl -w net.ipv4.ip_forward=1

Sollte es während der Einrichtung zu Problemen kommen kann die Forwarding-Diagnosehilfe unter http://poptop.sourceforge.net/dox/diagnose-forwarding.phtml nützlich sein.

Installation

Zur Installation des VPN-Server-Daemons muss lediglich

root@server~: aptitude install pptpd

eingegeben werden.

Konfiguration

Die erste Anpassung des Servers ist die IP-Konfiguration des VPN-Servers. Dazu wird zuerst die IP und das Netz des lokalen Netzwerks per ifconfig ermittelt und dann in die /etc/pptpd.conf eingetragen. Hierbei steht localip für die IP des Servers, remoteip für die des Clients. Die Anzahl der in remoteip angegebenen IPs (als IP-Range) ist gleichzeitig auch die maximale Anzahl Simultan verbundener Clients.

root@server~: cp /etc/pptpd.conf /etc/pptpd.conf.bak && cat <<CONFIGDATA > /etc/pptpd.conf
option /etc/ppp/pptpd-options
#debug
logwtmp
bcrelay eth1
localip 10.10.10.50
remoteip 10.10.10.251-254
CONFIGDATA

Außerdem müssen die Standard-Optionen an die lokale Netzwerkumgebung des VPN-Servers angepasst werden.

root@server~: cp /etc/ppp/pptpd-options /etc/ppp/pptpd-options.bak && cat <<CONFIGDATA > /etc/ppp/pptpd-options
name gate
chapms-strip-domain
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 10.10.10.2
ms-dns 10.10.10.12
proxyarp
lock
CONFIGDATA
root@server~:  cp /etc/ppp/options /etc/ppp/options.bak && cat <<CONFIGDATA > /etc/ppp/options
asyncmap 0
auth
crtscts
lock
hide-password
modem
#debug
domain tecart.local
name gate
login
lcp-echo-interval 30
lcp-echo-failure 4
noipx
# ---<End of File>---
CONFIGDATA

Anwenden der neuen Konfiguration

Sind alle Einstellungen gespeichert, muss der pptpd-Server neugestartet werden. Dies erfolgt mit dem folgenden Befehl:

root@server~: /etc/init.d/pptpd restart

Skripts: vpnuseradd und vpnuserdel

Um einfach neue VPN-Nutzer mit einem zufällig erstelltem Passwort erstellen zu lassen, kann wie folgt ein Skript angelegt werden:

root@server~: touch /usr/sbin/vpnuseradd && chmod +x /usr/sbin/vpnuseradd && cat <<VPNSCRIPTDATA > /usr/sbin/vpnuseradd
#!/bin/bash

SERVER="gate"

genpasswd() {
    local l=\$1
        [ "\$l" == "" ] && l=30
        tr -dc A-Za-z0-9_ < /dev/urandom | head -c \${l} | xargs
}
PW=\$(genpasswd)

echo "\$1            \$SERVER    \"\$PW\"        *" >> /etc/ppp/chap-secrets
useradd --password "\$PW" "\$1"

echo -e "User \$1 added. \n\nNew password is: \$PW\n"

VPNSCRIPTDATA

Dieses Skript legt einen Nutzer für die MSCHAPv2-Authentifizierung an, welcher in der Datei /etc/ppp/chap-secrets mit Passwort hinterlegt wird. Außerdem wird der Nutzer im System mit seinem Passwort registriert, um die Anmeldung per VPN zu ermöglichen.

Das Skript kann dann wie folgt aufgerufen werden:

root@server~: vpnuseradd testuser

User testuser added. 

New password is: bRe4wuWruzanewrethenEcec4epeFa

Um einen User wieder zu entfernen, kann ebenfalls ein Skript verwendet werden. Dieses wird wie folgt angelegt:

root@server~: touch /usr/sbin/vpnuserdel && chmod +x /usr/sbin/vpnuserdel && cat <<VPNSCRIPTDATA > /usr/sbin/vpnuserdel
#!/bin/bash

LINENO=\$(cat /etc/ppp/chap-secrets | grep -nE "^\$1" | head -c1)
LINENO=\$((\$LINENO + 1))
sed \${LINENO}d /etc/ppp/chap-secrets > ~/chap-secrets-tmp && \
mv ~/chap-secrets-tmp /etc/ppp/chap-secrets && \
userdel \$1 && \
rm ~/chap-secrets-tmp && \
echo "User \$1 removed from VPN- and system userlist"

VPNSCRIPTDATA

Dieses kann dann wie folgt verwendet werden:

root@server~: vpnuserdel testuser