Networking/Virtual Private Network (VPN)/de

From Snom User Wiki

Jump to: navigation, search
Languages: English • Deutsch


Contents

Übersicht

Author: Hirosh Dabui
Übersetzung: Sascha Kruszka

Das snom370 unterstützt jetzt, durch eine spezielle Firmware, das Einbinden in abgesicherte VoIP-Infrastrukturen durch die Verwendung der OpenVPN-Technologie. Snom entschied sich OpenVPN zu nutzen weil es kompatibel zu SSL/TLS, RSA Zertifikaten und X509 PKI, NAT, DHCP und TUN/TAP virtual devices ist.

OpenVPN ist Open Source und steht unter der GPL.

Mit OpenVPN, speziell für das snom370 kann:

  1. jedes Paket des Telefons über nur einen UDP/TCP-Port getunnelt werden
  2. es besetht keinerlei Notwendigkeit mehr auf secure sip, srtp und stun zurückgreifen zu müssen
  3. jede Art der Verschlüsselung die durch OpenSSL unterstützt wird
  4. zwischen static-key und Zertificat-basierter Verschlüsselung kann gewählt werden
  5. static, preshared keys oder dynamic key exchange via TLS oder Absicherung durch Benutzername/Passwort kann verwendet werden
  6. Tunnel-Verbindung durch NAT hindurch
  7. Tunnel-Verbindung durch Firewalls hindurch
  8. OpenVPN bietet Cross-Platform Support, läuft unter: Linux, Windows 2000/XP und höher, OpenBSD, FreeBSD, NetBSD, Mac OS X, PocketPC and Solaris.
  9. uvm.

Installation auf dem snom370

Seit Version 7.3.23 veröffentlicht snom eine offizielle VPN-Firmware (--> Download Instructions).


Nach dem Firmwareupdate muss via Webinterface (oder Provisionierung) die Einstellung. VPN auf an gesetzt werden, danach wird das Feld "Unkomprimierter VPN Konfig. Tarball" angezeigt. Bitte fügen sie in das Feld die HTTPS-URL zum Tarball (https://username:password@host:port) ein, in der sich die OpenVPN Konfiguration befindet. Lesen sie weiter unten, wie genau das Tarball erstellt werden kann.



Die Quellen die in snom VoIP Telefonen Verwendung finden und unter der GPL stehen, können hier heruntergeladen werden. Der originale GPL Lizenztext kann hier heruntergeladen werden.

Einrichten von X509 PKI /Pre-Shared key

In diesem Abschnitt wird erklärt, wie durch die Verwendung von X509 PKI, eine Client/Server VPN-Infrastruktur aufgebaut werden kann. Der einfachste Weg um eine Client-Konfiguration für das snom-Telefon zu erstellen ist dies auf einem Linux-System zu tun und zu testen. Nach erfolgreichem Test kann die Konfiguration in das Tarball gepackt werden. Bitte beachten Sie, dass sämtliche Pfade in der Testkonfiguration an die des Telefons zu /openvpn/filename geändert werden müssen. Die Konfigurationsdatei für das Telefon muss zu vpn.cnf umbenannt werden.

Die Mechanismen um Certificate Authority (CA), Zertifikate und Schlüssel (keys) für Server/Clients zu erstellen finden sie hier. Eine ausführliche Beschreibung (Howto) wie man einen zertifikatbasierten OpenVPN-Server auf einem Debian Linux installiert und einrichtet finden Sie hier. Dort finden sie auch eine ausführliche Beschreibung wie de Zertifikate erstellt werden können.

Zur Verfügung stehende TLS Verschlüsselungen

DHE-RSA-AES256-SHA
DHE-DSS-AES256-SHA
AES256-SHA
EDH-RSA-DES-CBC3-SHA
EDH-DSS-DES-CBC3-SHA
DES-CBC3-SHA
DHE-RSA-AES128-SHA
DHE-DSS-AES128-SHA
AES128-SHA
RC4-SHA
RC4-MD5
EDH-RSA-DES-CBC-SHA
EDH-DSS-DES-CBC-SHA
DES-CBC-SHA
EXP-EDH-RSA-DES-CBC-SHA
EXP-EDH-DSS-DES-CBC-SHA
EXP-DES-CBC-SHA
EXP-RC2-CBC-MD5
EXP-RC4-MD5

Beispiel für X509 PKI

vpn.cnf für das Telefon

client
dev tun

# Are we connecting to a TCP or
# UDP server?  Use the same setting as
# on the server.
;proto tcp
# or tcp and no more nat problems, it is a hit to RTP
#  (TCP(UDP(RTP))) :)
proto udp
 
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
# or insert an ip here
remote openvpn.snom.com 1194
 
# Choose a random host from the remote
# list for load-balancing.  Otherwise
# try hosts in the order specified.
;remote-random
 
# Keep trying indefinitely to resolve the
# host name of the OpenVPN server.  Very useful
# on machines which are not permanently connected
# to the internet such as laptops.
resolv-retry infinite
 
#  Most clients don't need to bind to
# a specific local port number.
nobind

# Try to preserve some state across restarts.
persist-key
persist-tun

# If you are connecting through an
# HTTP proxy to reach the actual OpenVPN
# server, put the proxy server/IP and
# port number here.  See the man page
# if your proxy server requires
# authentication.
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]

# Wireless networks often produce a lot
# of duplicate packets.  Set this flag
# to silence duplicate packet warnings.
;mute-replay-warnings

# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
ca /openvpn/ca.crt
cert /openvpn/phone1.crt
key /openvpn/phone1.key
 
# Verify server certificate by checking
# that the certicate has the nsCertType
# field set to "server".  This is an
# important precaution to protect against
# a potential attack discussed here:
#  http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the nsCertType
# field set to "server".  The build-key-server
# script in the easy-rsa folder will do this.
ns-cert-type server
 

# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.
#comp-lzo

# Set log file verbosity.
verb 0

# Silence repeating messages
;mute 20
ping 10
ping-restart 60


server.cnf auf dem Server

# Which local IP address should OpenVPN
# listen on? (optional)
;local a.b.c.d

# Which TCP/UDP port should OpenVPN listen on?
 # If you want to run multiple OpenVPN instances
# on the same machine, use a different port
# number for each one.  You will need to
# open up this port on your firewall.
port 1194

# TCP or UDP server?
;proto tcp
proto udp

# "dev tun" will create a routed IP tunnel,
# "dev tap" will create an ethernet tunnel.

;dev tap
dev tun


# SSL/TLS root certificate (ca), certificate
# (cert), and private key (key).  Each client
# and the server must have their own cert and
# key file.  The server and all clients will
# use the same ca file.
#
# See the "easy-rsa" directory for a series
# of scripts for generating RSA certificates
# and private keys.  Remember to use
# a unique Common Name for the server
# and each of the client certificates.
#
# Any X509 key management system can be used.
# OpenVPN can also use a PKCS #12 formatted key file
# (see "pkcs12" directive in man page).
ca keys/ca.crt
cert keys/openvpn.snom.com.crt 
key keys/openvpn.snom.com.key  # This file should be kept secret

# Diffie hellman parameters.
# Generate your own with:
#   openssl dhparam -out dh1024.pem 1024
# Substitute 2048 for 1024 if you are using
# 2048 bit keys. 
dh dh1024.pem

# Configure server mode and supply a VPN subnet
# for OpenVPN to draw client addresses from.
# The server will take 10.8.0.1 for itself,
# the rest will be made available to clients.
# Each client will be able to reach the server
# on 10.8.0.1. Comment this line out if you are
# ethernet bridging. See the man page for more info.
server 10.30.0.0 255.255.255.0

# Maintain a record of client <-> virtual IP address
# associations in this file.  If OpenVPN goes down or
# is restarted, reconnecting clients can be assigned
# the same virtual IP address from the pool that was
# previously assigned.
ifconfig-pool-persist ipp.txt



# Uncomment this directive to allow different
# clients to be able to "see" each other.
# By default, clients will only see the server.
# To force clients to only see the server, you
# will also need to appropriately firewall the
# server's TUN/TAP interface.
# very important for proxies, b2bua comment it out, more secure
client-to-client 


# The keepalive directive causes ping-like
# messages to be sent back and forth over
# the link so that each side knows when
# the other side has gone down.
# Ping every 10 seconds, assume that remote
# peer is down if no ping received during
# a 120 second time period.
keepalive 10 120


# Select a cryptographic cipher.
# This config item must be copied to
# the client config file as well.
;cipher BF-CBC        # Blowfish (default)
;cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES

# Enable compression on the VPN link.
# If you enable it here, you must also
# enable it in the client config file.
# snom phones doesn't support this
;comp-lzo

# The maximum number of concurrently connected
# clients we want to allow.
;max-clients 100

# The persist options will try to avoid
# accessing certain resources on restart
# that may no longer be accessible because
# of the privilege downgrade.
persist-key
persist-tun
 
# Output a short status file showing
# current connections, truncated
# and rewritten every minute.
status openvpn-status.log

# By default, log messages will go to the syslog (or
# on Windows, if running as a service, they will go to
# the "\Program Files\OpenVPN\log" directory).
# Use log or log-append to override this default.
# "log" will truncate the log file on OpenVPN startup,
# while "log-append" will append to it.  Use one
# or the other (but not both).
;log         openvpn.log
;log-append  openvpn.log

# Set the appropriate level of log
# file verbosity.
#
# 0 is silent, except for fatal errors
# 4 is reasonable for general usage
# 5 and 6 can help to debug connection problems
# 9 is extremely verbose
verb 0

# Silence repeating messages.  At most 20
# sequential messages of the same message
# category will be output to the log.
;mute 20

Beispiel Pre-Shared-key

Eine verschlüsselte Verbindung zwischen 10.5.0.1 und 10.5.0.2 wird mittels pre-shared key (static.key) hergestellt.

Server

mode p2p
port 1194  
dev tun 
proto udp  

ifconfig 10.5.0.1 10.5.0.2  

 
secret static.key

ping 10  
ping-restart 180  
ping-timer-rem  
ping-restart 

verb 0

Telefon (vpn.cnf)

mode p2p                                                                        
remote 192.168.0.188 1194    
proto udp                           
dev tun                                            
                                                                                 
ifconfig 10.5.0.2 10.5.0.1                           
                                                                                         
                  
secret /openvpn/static.key                                                               
                                                                                
ping 10                
ping-restart 180   
ping-timer-rem   
ping-restart 
                                                                                
verb 0

Beispiel eines VPN snom370 Tarball

Erstellen eines Tarball:

cd /etc/openvpn
chown -Rf root:root *
chmod -R 700 *
tar cvpf vpnclient.tar *

Die erstellte Datei (vpnclient.tar) muss auf einem HTTPS oder HTT-Server dem Telefon zur Verfügung gestellt werden.

vpnclient.tar

Bitte achten sie darauf das alle Pfadangaben nach /openvpn zeigen und die Konfigurationsdatei vpn.cnf heißt.

Wenn eine VPN-Verbindung zustande gekommen ist wird in der Taskleiste des Telefons das VPN-Symbol angezeigt.

FAQ - Häufige Fehler

Alles wurde nach dieser Anleitung gemacht, aber das Telefon scheint das Zertifikat nicht zu akzeptieren. Was ist falsch?

Es muss ein ein NTP server den das Telefon auch erreichen kann, nicht durch das VPN, konfiguriert sein. Andernfalls wird das Telefon ein Falsches Datum haben und alle Zertifikate ablehnen weil es annimmt das sie nicht gültig sind....

Kann das Telefon als VPN-Router benutzt werden?

Ja. Dazu müssen die Folgenden Befehle auf das Telefon "gepushed" werden. Zur Erklärung: VLAN 3 ist der NET-Port und VLAN 2 ist der PC-PORT des Telefons.

Nachdem die folgende Konfiguration auf dem Telefon appliziert wurde, können am PC-Port andere Netzwerkgeräte angeschlossen werden die dann automatisch durch das VPN verbunden sind.

echo "sysSwVLanSetPortConfig 0 0 2" > /proc/driver/switch_api
echo "sysSwVLanSetPortConfig 1 0 3" > /proc/driver/switch_api
echo "sysSwVLanAddTableEntry 2 5 4" > /proc/driver/switch_api
echo "sysSwVLanAddTableEntry 3 6 4" > /proc/driver/switch_api
echo "sysSwVLanSetVLanCtrlPort 0 1 0" > /proc/driver/switch_api
echo "sysSwVLanSetVLanCtrlPort 1 1 0" > /proc/driver/switch_api
echo "sysSwVLanSetVLanCtrlPort 2 1 0" > /proc/driver/switch_api
echo "sysSwVLanUpdVLanCtrlVAware 1" > /proc/driver/switch_api
vconfig add eth0 2
ifconfig eth0 0.0.0.0 up
ifconfig eth0.2 10.10.0.5 netmask 255.255.255.0 up
vconfig add eth0 3
ifconfig eth0.3 192.168.201.101 netmask 255.255.0.0 up

Siehe auch...

Virtuelles Privates Netz (VPN) Debian/snom Howto

Konferenzmaterial

Asterisk mit OpenVPN snom370

Partner Implementierung zur Interoperabilität

Verfügbare Out-of-the-Box Lösungen

Zusammen mit unserem Partner Ciphron Ciphronwurde eine einfache Lösung entwickelt um snom Telefone für VPN zu konfigurieren und mit einem entfernten Netzwerk sicher zu verbinden: SecurePhoneNetwork. Die Ciphwall ist einfach zu handhaben und funktioniert Out-of-the-Box.

Folgende Funktionen kann die Ciphwall für sie übernehmen:

  • Verwaltung der Zertifikate
  • Verwerfen von erstellten Zertifikaten
  • Provisionierung der Telefone
  • Installation eines VPN-Client auch unter Windows mit nur 3 Klicks

Die Ciphwall ist kompatibel zu jeder PBX, benötigt keinerlei Lizenzen und basiert auf OpenBSD.

3cx

http://www.3cx.com/support/secure-calls-openvpn.html

VPN unter Debian

How To für Debian

Personal tools
Interoperability