Deployment of TLS support with Open SIP Express Router



Similar documents
NAT TCP SIP ALG Support

1 SIP Carriers. 1.1 Tele Warnings Vendor Contact Versions Verified Interaction Center 2015 R2 Patch

Practical VoIP Peering. Klaus Darilion enum.at

Spirent Abacus. SIP over TLS Test 编 号 版 本 修 改 时 间 说 明

SER Authentication with Radius and LDAP

Acano solution. Third Party Call Control Guide. March E

Installation / Configuration Manual. TLS and srtp

Configuring the Dolby Conference Phone with Cisco Unified Communications Manager

LifeSize Transit Deployment Guide June 2011

SECURE YOUR NETWORK WITH FIREWALL BUILDER

Interoperability between IPv4 and IPv6 SIP User Agents

Achieving High Availability with Websphere Application Server SIP Container and F5 BIG-IP Local Traffic Manager

TLS and SRTP for Skype Connect. Technical Datasheet

1.1.3 Versions Verified SIP Carrier status as of 18 Sep 2014 : validated on CIC 4.0 SU6.

How to Configure the Avaya IP Office 6.1 for use with Integra Telecom SIP Solutions

How to configure HTTPS proxying in Zorp 6

This presentation discusses the new support for the session initiation protocol in WebSphere Application Server V6.1.

BlackBerry Enterprise Service 10. Secure Work Space for ios and Android Version: Security Note

SIP and PSTN Connectivity. Jiri Kuthan, iptel.org September 2003

Firewall Builder Architecture Overview

Avaya IP Office 8.1 Configuration Guide

Data Collection and Analysis: Get End-to-End Security with Cisco Connected Analytics for Network Deployment

Basic Vulnerability Issues for SIP Security

Application Note Multiple SIParator Distribution

Best Practices for SIP Security

SSL Tunnels. Introduction

How To Guide. SIP Trunking Configuration Using the SIP Trunk Page

PPreferredID = "P-Preferred-Identity" HCOLON PPreferredID-value. *(COMMA PPreferredID-value)

Case Study 2 SPR500 Fall 2009

Unifying Information Security. Implementing TLS on the CLEARSWIFT SECURE Gateway

Emerald. Network Collector Version 4.0. Emerald Management Suite IEA Software, Inc.

How to configure HTTPS proxying in Zorp 5

SBClient SSL. Ehab AbuShmais

Configuring Personal Firewalls and Understanding IDS. Securing Networks Chapter 3 Part 2 of 4 CA M S Mehta, FCA

Configuration of Applied VoIP Sip Trunks with the Toshiba CIX40, 100, 200 and 670

A host-based firewall can be used in addition to a network-based firewall to provide multiple layers of protection.

SIP Trunking using Optimum Business Sip Trunk Adaptor and the Zultys MX250 IP PBX

Connecting with Vonage

Firewall Introduction Several Types of Firewall. Cisco PIX Firewall

Enabling Users for Lync services

Kerio Operator. User Guide. Kerio Technologies

DEPLOYMENT GUIDE Version 1.2. Deploying the BIG-IP LTM for SIP Traffic Management

Management, Logging and Troubleshooting

FreeRADIUS server. Defining clients Access Points and RADIUS servers

Integrating a Hitachi IP5000 Wireless IP Phone

Using FreePBX with Twilio Elastic SIP Trunking

Step 1: Checking Computer Network Settings:

Multimedia Communication in the Internet. SIP: Advanced Topics. Dorgham Sisalem, Sven Ehlert Mobile Integrated Services FhG FOKUS

Enterprise SSL Support

Cisco Configuring Commonly Used IP ACLs

Building Robust IPTSP Based on Open Source Technology. Anowar Hasan Sabir, BDCOM Online Ltd. Bangladesh

Firewall Support for SIP

How to configure SSL proxying in Zorp 6

VoIPon Tel: +44 (0) Fax: +44 (0)

Beginning OpenVPN 2.0.9

HTTP Reverse Proxy Scenarios

How To Set Up An Ip Firewall On Linux With Iptables (For Ubuntu) And Iptable (For Windows)

Load Balancer Configuration for Redundancy for SIP Federation

IBM WebSphere Application Server Communications Enabled Applications Setup guide

Unified Communications in RealPresence Access Director System Environments

Working With Virtual Hosts on Pramati Server

OfficeMaster Gate (Virtual) Enterprise Session Border Controller for Microsoft Lync Server. Quick Start Guide

Architecture and Data Flow Overview. BlackBerry Enterprise Service Version: Quick Reference

nexvortex Setup Guide

NF1Adv VOIP Setup Guide (for Pennytel)

CTS2134 Introduction to Networking. Module Network Security

This chapter describes how to set up and manage VPN service in Mac OS X Server.

ACS 5.x and later: Integration with Microsoft Active Directory Configuration Example

Grandstream Networks, Inc. XML Configuration File Generator User Guide

Adaptive Log Exporter Users Guide

The Trivial Cisco IP Phones Compromise

VoIP Service Reference

Dialogic 4000 Media Gateway Series as a Survivable Branch Appliance for Microsoft Lync Server 2010

1 SIP Carriers Warnings Vendor Contact Vendor Web Site : Versions Verified SIP Carrier status as of 9/11/2011

Developing Higher Density Solutions with Dialogic Host Media Processing Software

nexvortex Setup Guide

3rd Party VoIP Phone Setup Guide (Panasonic b)

Clientless SSL VPN Users

Application Note. Firewall Requirements for the Onsight Mobile Collaboration System and Hosted Librestream SIP Service v5.0

Application Note. Onsight Connect Network Requirements v6.3

1 Recommended Readings. 2 Resources Required. 3 Compiling and Running on Linux

Barracuda Networks Web Application Firewall

Encrypted File Transfer - Customer Testing

v7.8.2 Release Notes for Websense Content Gateway

Digital certificates and SSL

Managing the SSL Certificate for the ESRS HTTPS Listener Service Technical Notes P/N REV A01 January 14, 2011

7.1. Remote Access Connection

NF1Adv VOIP Setup Guide (for Generic VoIP Setup)

Analysis of a VoIP Attack

How To Set Up A Cisco Expressway Trunk On A Cnet Cnet Trunk On An Unidenm (Cisco Vcnet) Vcntl On A Uniden Mt.Net (Cnet Trunk) On A Multi

PowerChute TM Network Shutdown Security Features & Deployment

APACHE WEB SERVER. Andri Mirzal, PhD N

Tunnels and Redirectors

BrightStor ARCserve Backup for Linux

VoIP some threats, security attacks and security mechanisms. Lars Strand RiskNet Open Workshop Oslo, 24. June 2009

To ensure you successfully install Timico VoIP for Business you must follow the steps in sequence:

Security Guide. BlackBerry Enterprise Service 12. for ios, Android, and Windows Phone. Version 12.0

Viking VPN Guide Linux/UNIX

Transcription:

Deployment of TLS support with Open SIP Express Router The aim of this guide is to describe how to implement the TLS support on a proxy OpenSER (http://www.openser.org/). TLS is an optional part of the OpenSER's core, not a module. As defined in SIP RFC 3261, is a mandatory feature for proxies and can be used to secure the SIP signaling on a hop-by-hop basis (not end-to-end). TLS works on top of TCP. 1 The TLS support was originally developed by Peter Griffiths and posted as a patch on SER development mailing list. The TLS support was simultaneously added in both projects. In SER, the support was committed in a separate "experimental" CVS tree, as patch to the main CVS tree. In OpenSER, the support was integrated directly into the CVS tree, as a built-in component. This support act as a security tool, as described by the authors on the related doc (available at http://www.openser.org/docs/tls.html) that providers adopt to prevent for a user to receive calls from totally unknown people or, in the worst case, to receive unwanted calls. It is possible to check trusted calls (i.e. from a client with verified identity) and untrusted calls (i.e. from a client whose identity is not verified)just by changing the phone ring. It is possible to setting up multiple rings manipulating the Alert-Info header. In the example we refer only to the hardphones: 1. CISCO ATA 2. CISCO 7960 3. SNOM Tools and software 2 Proxy servers OpenSER v1.2.x installed on Fedora 7 linux machines OpenSSL required on both proxy to run crypto functions OpenSSLl o libssl >= 0.9.6 OpenSSL-dev o libssl-dev MySQL database for authenticating trusted user; Setting up a Certification Authority (using openserctl script) 2 Client softphone X-Lite for Mac

Installation The first step is to install the O.S. linux (we used Fedora 7) and compile OpenSER with TLS support from the rpm files available at http://www.openser.org/pub/openser/latest/packages/fedora/7/. No matter how you do it, the important is the version (1.2.x). We used the yum package installer and it worked fine. First of all we need to setting up the certification authority using the openserctl script: On a root shell type the command: 2 openserctl tls rootca this will produce a private-key and the self-signed certificate authority on /etc/openser/tls/ Then generate and sign the proxy openser certificates by typing openserctl tls usercert foobar.cnf Actually you can copy and rename the foobar.cnf file into the proxy name file; then you need to edit it and a directory /etc/openser/tls/foobar/ will be created with private key, certificate etc. Keep in mind that the calist.pem file is always needed for a verifier in order to trust the certificate signer. Obviously then you have to copy the proxy certificate related directory on his local disc in order to be accessed, so the next step is to putting the certificate, private key and CA list in /etc/openser/tls/foobar/ of the other proxy and setting the following parameters: set up ser to use the certificate : tls_certificate=/etc/openser/tls/foobar/cert.pem set up ser to use the private key : tls_private_key=/etc/openser/tls/foobar/privkey.pem set up ser to use the CA list (optional - make sens only if tls_verify is turned on) tls_ca_list=/etc/openser/tls/foobar/calist.pem

Configuration and first call After the installation cut and paste the following basic config file and modify it (foobar is replaced by stefano and ip address are converted from public to local for privacy purposes): # $Id: openser.cfg,v 1.6.2.1 2006/07/17 15:51:03 klaus_darilion Exp $ # # simple quick-start config script # # ----------- global configuration parameters ------------------------ debug=3 fork=no log_stderror=yes 3 check_via=no dns=no rev_dns=no listen=192.168.1.88 port=5060 children=4 #fifo="/tmp/openser_fifo" # tls_verify=on disable_tls = 0 listen = tls:192.168.1.88:5061 tls_verify_server = 1 tls_verify_client = 1 tls_require_client_certificate = 1 tls_method = TLSv1 #TLS specific settings tls_certificate="/etc/openser/tls/stefano/stefano-cert.pem" tls_private_key="/etc/openser/tls/stefano/stefano-privkey.pem" tls_ca_list="/etc/openser/tls/stefano/stefano-calist.pem" alias=_dns_alias_ # ------------------ module loading ---------------------------------- loadmodule "/usr/lib/openser/modules/mysql.so" loadmodule "/usr/lib/openser/modules/sl.so" loadmodule "/usr/lib/openser/modules/tm.so" loadmodule "/usr/lib/openser/modules/rr.so" loadmodule "/usr/lib/openser/modules/maxfwd.so" loadmodule "/usr/lib/openser/modules/usrloc.so" loadmodule "/usr/lib/openser/modules/registrar.so" loadmodule "/usr/lib/openser/modules/textops.so" loadmodule "/usr/lib/openser/modules/mi_fifo.so" loadmodule "/usr/lib/openser/modules/auth.so" loadmodule "/usr/lib/openser/modules/auth_db.so" loadmodule "/usr/lib/openser/modules/uri_db.so" # ----------------- setting module-specific parameters ---------------

modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo") # -- auth_db params -- # modparam("auth_db", "db_url", "mysql://openser:openserrw@localhost/openser") modparam("auth_db uri_db usrloc", "db_url", "mysql://openser:openserrw@localhost/openser") modparam("usrloc", "db_mode", 2) modparam("auth_db", "password_column", "password") modparam("auth_db", "calculate_ha1", 1) 4 # -- registrar params -- # no multiple registrations modparam("registrar", "append_branches", 0) # -- rr params -- # add value to ;lr param to make some broken UAs happy modparam("rr", "enable_full_lr", 1) # ------------------------- request routing logic ------------------- # main routing logic route{ # initial sanity checks if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","too Many Hops"); # if somene claims to belong to our domain in From, # challenge him (skip REGISTERs -- we will chalenge them later) if (from_uri==myself) { setflag(1); if ( (method=="invite" method=="subscribe" method=="message") &&!(src_ip==myself) ) { if (!(proxy_authorize( "", "subscriber" ))) { proxy_challenge("","0"/*no-qop*/); if (!check_from()) { log("log: From Cheating attempt in INVITE\n"); sl_send_reply("403", "That is ugly -- use From=id next time (OB)"); # non-register from other domain } else if ( method=="invite" && uri!=myself ) { sl_send_reply("403", "No relaying"); /* ******** do record-route and loose-route ******* */ if (!(method=="register")) record_route(); if (loose_route()) { append_hf("p-hint: rr-enforced\r\n"); route(1);

/* ******* check for requests targeted out of our domain ******* */ if ( uri!=myself ) { append_hf("p-hint: OUTBOUND\r\n"); if (uri=~"@192.168.1.74") { t_relay("tls:192.168.1.74:5061"); } else { route(1); 5 /* ******* divert to other domain according to prefixes ******* */ if (method!="register") { if ( uri=~"sip:201") { sethost("192.168.1.74"); t_relay("tls:192.168.1.74:5061"); } else if ( uri=~"sip:202" ) { /* ************ requests for our domain ********** */ if (method=="register") { if (!www_authorize( "", "subscriber" )) { # challenge if none or invalid credentials www_challenge( "192.168.1.88" /* realm */, "0" /* no qop -- some phones can't deal with it */); if (!check_to()) { log("log: To Cheating attempt\n"); sl_send_reply("403", "That is ugly -- use To=id in REGISTERs"); # it is an authenticated request, update Contact database now if (!save("location")) { sl_reply_error(); # if (uri!=myself) { # t_relay(); # sl_reply_error(); # # native SIP destinations are handled using USRLOC DB if (!lookup("location")) { # handle user which was not found sl_send_reply("404", "Not Found nel USRLOC DB locale"); # remove all present Alert-info headers remove_hf("alert-info"); if (method=="invite" && (proto==tls isflagset(1))) { append_hf("alert-info: 1\r\n"); # cisco 7960 append_hf("alert-info: Bellcore-dr4\r\n"); # cisco ATA append_hf("alert-info: http://foo.bar/x.wav\r\n"); # snom # do forwarding

if (!t_relay()) { sl_reply_error(); #end of script } 6 (Be sure to modify the paths according to yours and the names you give) The final step is to register the client with his own server and make a call. If the clients are respectively 200 e 201 and you want to call from 200 to 201, just type the number: 201 The call will succeed and you can debug log output to see how the handshake between the two proxies works. They exchange certificate information and authenticate each other. Final considerations TLS support is aimed to keep secure the first signaling phase of SIP protocol. The trusted concept is on a multilevel basis: there is a mutual agreement chain between domains, in which a domain can verify only local user, not those of the outside. This could be a weak chain if it is too long and if only one proxy OpenSER in the middle was attacked, the end to end ones are not able to detect the threat. Soon TLS support will be available also on UDP (DTLS), released from IETF. Remember that the TLS support has been tested on OpenSER project; if you wish to use it on SER project, be sure to change the syntax and always refer to the site iptel.org. We hope this helps! Stefano Abbate stef.abbate@gmail.com Mariantonietta Noemi La Polla noemi.lapolla@gmail.com