Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Zellescher Weg 12
Willers-Bau A217
Tel. +49 351 - 463 - 35653
Sebastian Liebscher ([email protected])
Kompetenzzentrum für Videokonferenzdienste (VCC)
Einsatz von OpenSIPS als SIP-Server für Videokonferenzsysteme
20. Workshop Videokonferenzen im Wissenschaftsnetz
2Sebastian Liebscher
Inhalt
OpenSIPS – ein Open Source Projekt
Überblick zur Installation / grundlegenden Konfiguration
Bedienung
– OpenSIPS Control Panel
– Einstellungen am SIP-Endgerät
– Kontrollmöglichkeiten / Fehlersuche
– Rufmöglichkeiten
Nutzung von TLS / Zertifikatsmanagement
Nutzung weiterer Module / Skripting
– Beispiele: Domain, Dialplan
– Schutz der SIP-Endgeräte / Maßnahmen zum Spamschutz
3
OPENSIPS –EIN OPEN SOURCE PROJEKT
Einsatz von OpenSIPS als SIP-Server für Videokonferenzsysteme
Sebastian Liebscher
4
OpenSIPS – ein Open Source Projekt
OpenSIPS steht für: Open SIP Server
Open Source: http://www.opensips.org
Funktionalitäten: (http://www.opensips.org/About/Features)
– SIP Registrar
– SIP Router / Proxy
– SIP Redirect Server
– u.v.m.
Weitreichende Anpassungsmöglichkeiten:
– vorgefertigte Module
– eigene Skriptsprache
Läuft auf Linux-basierten Systemen
Derzeit verwendete Version im VCC: 2.2.4-1 auf Debian 8 („jessie“)
Sebastian Liebscher
5
ÜBERBLICK ZUR INSTALLATION / GRUNDLEGENDEN KONFIGURATION
Einsatz von OpenSIPS als SIP-Server für Videokonferenzsysteme
Sebastian Liebscher
6
Überblick zur Installation / grundlegenden Konfiguration I
Empfehlung:
– Verwendung eines offiziellen Repositorys zum Erhalt der Pakete
– offiziell verfügbar: Debian/Ubuntu, RedHat/CentOS/Fedora
– Repositorys sind mit Schlüsseln versehen
– Module als Pakete einfach installierbar (auch nachträglich)
Alternative:
– Nutzung von Tarballs oder Checkout über GIT/SVN
– Kompilierung über mitgeliefertes Tool menuconfig möglich
– Compile Flags / Module dabei auswählbar
– Abhängigkeiten müssen manuell aufgelöst werden
Sebastian Liebscher
7
Überblick zur Installation / grundlegenden Konfiguration II
Einstellungen in /etc/hosts, /etc/hostname, /etc/resolv.conf setzen
Wichtige Pfade zu Konfigurationsdateien:
– /etc/opensips/, /etc/default/, /etc/init.d/
Anpassungen in /etc/opensips/opensipsctlrc, /etc/opensips/osipsconsolerc:
– SIP-Domäne, Datenbankverbindung, …
Erzeugung der notwendigen Datenbanken mittels opensipsdbctl create
Tool zur Erstellung von Konfigurations- /Skriptvorlagen: osipsconfig
Sebastian Liebscher
7
Überblick zur Installation / grundlegenden Konfiguration II
Einstellungen in /etc/hosts, /etc/hostname, /etc/resolv.conf setzen
Wichtige Pfade zu Konfigurationsdateien:
– /etc/opensips/, /etc/default/, /etc/init.d/
Anpassungen in /etc/opensips/opensipsctlrc, /etc/opensips/osipsconsolerc:
– SIP-Domäne, Datenbankverbindung, …
Erzeugung der notwendigen Datenbanken mittels opensipsdbctl create
Tool zur Erstellung von Konfigurations- /Skriptvorlagen: osipsconfig
Sebastian Liebscher
7
Überblick zur Installation / grundlegenden Konfiguration II
Einstellungen in /etc/hosts, /etc/hostname, /etc/resolv.conf setzen
Wichtige Pfade zu Konfigurationsdateien:
– /etc/opensips/, /etc/default/, /etc/init.d/
Anpassungen in /etc/opensips/opensipsctlrc, /etc/opensips/osipsconsolerc:
– SIP-Domäne, Datenbankverbindung, …
Erzeugung der notwendigen Datenbanken mittels opensipsdbctl create
Tool zur Erstellung von Konfigurations- /Skriptvorlagen: osipsconfig
– erzeugte Konfigurationsdatei: /etc/opensips/opensips.cfg
– Anpassungen nötig, z.B. bei den IP-Adressen, der Datenbankverbindung,den Dateipfaden etc. (markiert mit # CUSTOMIZE ME)
Sebastian Liebscher
7
Überblick zur Installation / grundlegenden Konfiguration II
Tool zur Erstellung von Konfigurations- /Skriptvorlagen: osipsconfig
– erzeugte Konfigurationsdatei: /etc/opensips/opensips.cfg
– Anpassungen nötig, z.B. bei den IP-Adressen, der Datenbankverbindung,den Dateipfaden etc. (markiert mit # CUSTOMIZE ME)
– einzelne manuelle Einträge
Sebastian Liebscher
8
Überblick zur Installation / grundlegenden Konfiguration III
Nutzung von Log-Files:
– Eintrag in /etc/rsyslog.conf: local1.* -/var/log/opensips.log
– Neustart rsyslog
Manueller Start: opensips -f /etc/opensips/opensips.cfg
Start von OpenSIPS als Service:
– Änderungen in /etc/defaults/opensips, (evtl. auch /etc/init.d/opensips)
– Nutzung: /etc/init.d/opensips {start|stop|restart|force-reload|status}
Erforderliche DNS + DNS-SRV-Einträge:
– A-Record: sip-domain => OpenSIPS-Server
– DNS-SRV-Records: {_sip|_sips}.{_tcp|_udp|_tls}.sip-domain=> OpenSIPS-Server, Port {5060|5061}
Sebastian Liebscher
9
BEDIENUNGEinsatz von OpenSIPS als SIP-Server für Videokonferenzsysteme
Sebastian Liebscher
10
OpenSIPS Control Panel I
Grafische Benutzeroberfläche für OpenSIPS, php-basiert
Download: http://controlpanel.opensips.org/ als Tarball oder SVN Checkout
Paketabhängigkeiten:libapache2-mod-php5, php5, php5-cli, php5-gd, php5-mysql, php-pear, php5-xmlrpc
Installationen: pear install MDB2, pear install MDB2#mysql, pear install log
Einbindung in Apache2 z.B. mittels Alias- und Directory-Statements
Erforderlich: php.ini: short_open_tag = On
Datenbankerweiterung notwendig:
– Einfügen von ocp_admin_privileges.mysql,cdrs.mysql, tables.mysql in die Datenbank
– Einrichtung erster Nutzer in Tabelle ocp_admin_privileges:INSERT INTO ocp_admin_privileges values('admin','admin',md5('admin:admin'),'all','all')
Sebastian Liebscher
11
OpenSIPS Control Panel II
Weitere Anpassungen in den php-Dateien:
– Dateipfade, Datenbankverbindung, OpenSIPS fifo-Queue
Eintrag in /etc/crontab:
– * * * * * root cd /var/www/opensips-cp/cron_job/;php get_opensips_stats.php > /dev/null
Beispiele für die Nutzung:
– Eintrag von SIP-Domänen
– Anlegen von Zugängen / Accounts
– Anzeige aktiver Calls, vergangener Calls
– Direktzugriff auf verschiedene Module / Tabellen der Datenbank
Achtung: Nicht alle Daten der Datenbank / Module sind abgebildet, es können aber eigene Menüpunkte programmiert werden
Sebastian Liebscher
11
OpenSIPS Control Panel II
Weitere Anpassungen in den php-Dateien:
– Dateipfade, Datenbankverbindung, OpenSIPS fifo-Queue
Eintrag in /etc/crontab:
– * * * * * root cd /var/www/opensips-cp/cron_job/;php get_opensips_stats.php > /dev/null
Beispiele für die Nutzung:
– Eintrag von SIP-Domänen
– Anlegen von Zugängen / Accounts
– Anzeige aktiver Calls, vergangener Calls
– Direktzugriff auf verschiedene Module / Tabellen der Datenbank
Achtung: Nicht alle Daten der Datenbank / Module sind abgebildet, es können aber eigene Menüpunkte programmiert werden
Sebastian Liebscher
11
OpenSIPS Control Panel II
Weitere Anpassungen in den php-Dateien:
– Dateipfade, Datenbankverbindung, OpenSIPS fifo-Queue
Eintrag in /etc/crontab:
– * * * * * root cd /var/www/opensips-cp/cron_job/;php get_opensips_stats.php > /dev/null
Beispiele für die Nutzung:
– Eintrag von SIP-Domänen
– Anlegen von Zugängen / Accounts
– Anzeige aktiver Calls, vergangener Calls
– Direktzugriff auf verschiedene Module / Tabellen der Datenbank
Achtung: Nicht alle Daten der Datenbank / Module sind abgebildet, es können aber eigene Menüpunkte programmiert werden
Sebastian Liebscher
12
Einstellungen am SIP-Endgerät
Bei Geräten die auch andere Protokolle (z.B. H.323) beherrschen:
– Aktivierung SIP als Protokoll
– „Lauschen“ auf Port 5060 bzw. 5061
Auswahl Transportprotokoll (TCP, UDP, TLS)
URI (name@sip-domain), z.B. [email protected]
Login mit erzeugten Credentials
SIP-Proxy (OpenSIPS-Server)
Sebastian Liebscher
13
Kontrollmöglichkeiten / Fehlersuche
Am SIP-Endgerät
Sebastian Liebscher
13
Kontrollmöglichkeiten / Fehlersuche
Am SIP-Endgerät
Mittels netstat –tulpn | grep opensips
Sebastian Liebscher
13
Kontrollmöglichkeiten / Fehlersuche
Am SIP-Endgerät
Mittels netstat –tulpn | grep opensips
In den Logs: /var/logs/opensips.log
Sebastian Liebscher
13
Kontrollmöglichkeiten / Fehlersuche
Am SIP-Endgerät
Mittels netstat –tulpn | grep opensips
In den Logs: /var/logs/opensips.log
Im OpenSIPS Control Panel, z.B.:
– laufende Calls: Dialog
– abgeschlossene Calls: CDR Viewer
Sebastian Liebscher
13
Kontrollmöglichkeiten / Fehlersuche
Sebastian Liebscher
13
Kontrollmöglichkeiten / Fehlersuche
Sebastian Liebscher
13
Kontrollmöglichkeiten / Fehlersuche
Am SIP-Endgerät
Mittels netstat –tulpn | grep opensips
In den Logs: /var/logs/opensips.log
Im OpenSIPS Control Panel, z.B.:
– laufende Calls: Dialog
– abgeschlossene Calls: CDR Viewer
In der Datenbank, z.B.:
– fehlgeschlagene Rufe: Tabelle missedCalls
– angemeldete SIP-Endgeräte: Tabelle location
Sebastian Liebscher
13
Kontrollmöglichkeiten / Fehlersuche
Am SIP-Endgerät
Mittels netstat –tulpn | grep opensips
In den Logs: /var/logs/opensips.log
Im OpenSIPS Control Panel, z.B.:
– laufende Calls: Dialog
– abgeschlossene Calls: CDR Viewer
In der Datenbank, z.B.:
– fehlgeschlagene Rufe: Tabelle missedCalls
– angemeldete SIP-Endgeräte: Tabelle location
Mittels Kommandozeilen-Tools, z.B.:
– Serverstatistiken: opensipsctl monitor
– angemeldete SIP-Endgeräte: opensipsctl ul show, opensipsctl online
Sebastian Liebscher
13
Kontrollmöglichkeiten / Fehlersuche
Am SIP-Endgerät
Mittels netstat –tulpn | grep opensips
In den Logs: /var/logs/opensips.log
Im OpenSIPS Control Panel, z.B.:
– laufende Calls: Dialog
– abgeschlossene Calls: CDR Viewer
In der Datenbank, z.B.:
– fehlgeschlagene Rufe: Tabelle missedCalls
– angemeldete SIP-Endgeräte: Tabelle location
Mittels Kommandozeilen-Tools, z.B.:
– Serverstatistiken: opensipsctl monitor
– angemeldete SIP-Endgeräte: opensipsctl ul show, opensipsctl online
Sebastian Liebscher
14
Rufmöglichkeiten
Varianten bzgl. Registrationsstatus:
– „intern“ zu „intern“, d.h. nur am Server registrierte SIP-Endgeräte dabei:• Kurzwahl des Username bzw. Alias möglich (SIP-Endgeräte fügen
dann eigene SIP-Domäne hinzu)• natürlich auch Rufe mittels name/alias@sip-domain möglich
– „intern“ zu „extern“: Rufe mittels uri@other-sip-domain
– „extern“ zu „intern“: Rufe mittels name/alias@sip-domain
Sebastian Liebscher
14
Rufmöglichkeiten
Varianten bzgl. Registrationsstatus:
– „intern“ zu „intern“, d.h. nur am Server registrierte SIP-Endgeräte dabei:• Kurzwahl des Username bzw. Alias möglich (SIP-Endgeräte fügen
dann eigene SIP-Domäne hinzu)• natürlich auch Rufe mittels name/alias@sip-domain möglich
– „intern“ zu „extern“: Rufe mittels uri@other-sip-domain
– „extern“ zu „intern“: Rufe mittels name/alias@sip-domain
Sebastian Liebscher
14
Rufmöglichkeiten
Varianten bzgl. Registrationsstatus:
– „intern“ zu „intern“, d.h. nur am Server registrierte SIP-Endgeräte dabei:• Kurzwahl des Username bzw. Alias möglich (SIP-Endgeräte fügen
dann eigene SIP-Domäne hinzu)• natürlich auch Rufe mittels name/alias@sip-domain möglich
– „intern“ zu „extern“: Rufe mittels uri@other-sip-domain
– „extern“ zu „intern“: Rufe mittels name/alias@sip-domain
Varianten bzgl. Transportprotokoll:
– TCP / UDP / TLS möglich auf Sender- und Empfangsseite (9 Varianten)
– einzige „Hürde“ ist für TLS das Zertifikatsmanagement
Sebastian Liebscher
15
NUTZUNG VON TLS / ZERTIFIKATSMANAGEMENT
Einsatz von OpenSIPS als SIP-Server für Videokonferenzsysteme
Sebastian Liebscher
16
Nutzung von TLS / Zertifikatsmanagement I
Antrag / Erhalt Zertifikate über DFN-PKI:
– Erstellung Zertifikatsrequest mittels openssl
Zertifikat für OpenSIPS-Server:
– Zertifikatsprofil: VoIP Server
– eindeutiger Name: DNS-Name OpenSIPS-Server
– alternative Namen: DNS-Name OpenSIPS-Server und SIP-Domäne
Zertifikate für SIP-Endgeräte:
– nicht unbedingt notwendig bzw. Build-In-„Standard-Zertifikat“ möglich
– analog zu Server, Verwendung DNS-Name des SIP-Endgeräts
Allgemein: DFN-PKI-Stammzertifikate bei OpenSIPS-Server / SIP-Endgeräten als vertrauenswürdige CA zu hinterlegen
Sebastian Liebscher
17
Nutzung von TLS / Zertifikatsmanagement II
Erforderliche Änderungen in /etc/opensips/opensips.cfg:
Fallstrick bei Timeouts:
– modparam("tls_mgm","tls_send_timeout", zeitwert)
– modparam("tls_mgm","tls_handshake_timeout", zeitwert)
Falls nicht alle SIP-Endgeräte ein überprüfbares Zertifikat besitzen:
– require_cert auf 0 oder verify_cert auf 0 setzen
– Überprüfung des SIP-Endgeräts dann nicht am Zertifikat möglich, aber Verbindungsaufbau verschlüsselt
Sebastian Liebscher
17
Nutzung von TLS / Zertifikatsmanagement II
Erforderliche Änderungen in /etc/opensips/opensips.cfg:
Fallstrick bei Timeouts:
– modparam("tls_mgm","tls_send_timeout", zeitwert)
– modparam("tls_mgm","tls_handshake_timeout", zeitwert)
Falls nicht alle SIP-Endgeräte ein überprüfbares Zertifikat besitzen:
– require_cert auf 0 oder verify_cert auf 0 setzen
– Überprüfung des SIP-Endgeräts dann nicht am Zertifikat möglich, aberVerbindungsaufbau verschlüsselt
Sebastian Liebscher
17
Nutzung von TLS / Zertifikatsmanagement II
Erforderliche Änderungen in /etc/opensips/opensips.cfg:
Fallstrick bei Timeouts:
– modparam("tls_mgm","tls_send_timeout", zeitwert)
– modparam("tls_mgm","tls_handshake_timeout", zeitwert)
Falls nicht alle SIP-Endgeräte ein überprüfbares Zertifikat besitzen:
– require_cert auf 0 oder verify_cert auf 0 setzen
– Überprüfung des SIP-Endgeräts dann nicht am Zertifikat möglich, aberVerbindungsaufbau verschlüsselt
Sebastian Liebscher
18
Nutzung von TLS / Zertifikatsmanagement III
Möglichkeit unterschiedlicher Einstellungen für TLS-Verbindungen:
– eingehende TLS-Verbindungen zum OpenSIPS-Server: server_domain
– ausgehende TLS-Verbindungen vom OpenSIPS-Server: client_domain
– ist Socket-basiert (IP-Adresse:Port)
Sebastian Liebscher
19
NUTZUNG WEITERER MODULE / SKRIPTING
Einsatz von OpenSIPS als SIP-Server für Videokonferenzsysteme
Sebastian Liebscher
20
Beispiele: Domain, …
Hilfreich für Skripting:
– https://www.opensips.org/Documentation/Script-CoreVar-2-2
– https://www.opensips.org/Documentation/Script-CoreFunctions-2-2
– https://www.opensips.org/Documentation/Script-Statements-2-2
Modul Domain:
– Änderung in /etc/opensips/opensips.cfg nötig
– Angabe SIP-Domänen in Datenbank / über OpenSIPS Control Panel
– angegebene SIP-Domänen sind „lokal“
– Überprüfung, dass mindestens eine Seite (Rufer, Gerufener) lokal ist
Sebastian Liebscher
21
Beispiele: …, Dialplan
Umschreibung von Strings, typischerweise der Request -URI
String matching bzw. Regex matching
Angabe der Regeln in Datenbank / über OpenSIPS Control Panel:
Nutzung in /etc/opensips/opensips.cfg:
– dp_translate("0","$ru/$ru");
Sebastian Liebscher
22
Schutz der SIP-Endgeräte / Maßnahmen zum Spamschutz I
SIP-Endgeräte sollten nach Registrierung nicht von „außen“über Port 5060 / 5061 direkt erreichbar sein (Umgehung des Servers):
– bei einigen Geräten direkt einstellbar bzw. Firewall, ACL, …
– Signalisierung über OpenSIPS-Server erzwungen(Medienströme (RTP/SRTP) direkt über dynamisch ausgehandelte Ports)
Überwiegender Anteil der SIP-Spamcalls hat folgende Form (To-URI):
– numbers@ip-address
SIP-Spamcalls kommen noch am OpenSIPS-Server an
Block der Requests mit IP-Adresse als SIP-Domäne (/etc/opensips/opensips.cfg):
Sebastian Liebscher
23
Schutz der SIP-Endgeräte / Maßnahmen zum Spamschutz II
Reguläre Rufe zu registrierten Endgeräten müssen erfolgen durch:
– name/alias@sip-domain, wobei sip-domain ein DNS-Name ist
Sebastian Liebscher
24
ZUSAMMENFASSUNGEinsatz von OpenSIPS als SIP-Server für Videokonferenzsysteme
Sebastian Liebscher
25
Zusammenfassung
Installation / Konfiguration nicht selbsterklärend, Dokumentation gut nutzbar, trotzdem recht zeitintensiv, Methode Trial & Error
OpenSIPS Control Panel erleichtert typische Tätigkeiten
Zahlreiche Stellen an denen Fehler gesucht werden können erzwingen einen gewissen Überblick
Gute Nutzbarkeit des Zertifikatsmanagements gegeben
Einarbeitung in Skriptsprache, Konsolenarbeit etc. unerlässlich
Zahlreiche Module und die Möglichkeit von Eigenentwicklungen bieten großen Spielraum
Einfacher Spamschutz für SIP-Endgeräte umsetzbar
Sebastian Liebscher