Žilinská univerzita > Fakulta riadenia a informatiky > Katedra informačných sietí

Inštalácia OpenSER 1.3.2-3 s autentifikáciou na MySQL na Debian Lenny



Inštalácia a základné nastavenie pre spustenie SIP Proxy OpenSER

Inštalácia je možná priamo z repozitárov:

apt-get install openser

Spustenie však nie je možné, nakoľko treba ešte nasataviť koľko pamäte a ako bude openser spúšťaný, preto kým to nenastavíme systém bude hlásiť

pstest:/home/palo# /etc/init.d/openser
OpenSER not yet configured. Edit /etc/default/openser first

Na nastavenie treba zeditovať /etc/default/openser a tam nastaviť:

RUN_OPENSER=yes
USER=root
GROUP=root 
MEMORY=64

Teraz môžeme server na overenie spustiť a overiť či beží:

pstest:/home/palo# /etc/init.d/openser start
Starting openser: openserListening on
             udp: 127.0.0.1 [127.0.0.1]:5060
             udp: 158.193.139.51 [158.193.139.51]:5060
             tcp: 127.0.0.1 [127.0.0.1]:5060
             tcp: 158.193.139.51 [158.193.139.51]:5060
Aliases:
             tcp: pstest:5060
             tcp: pstest.ps.sip.uniza.sk:5060
             tcp: localhost:5060
             udp: pstest:5060
             udp: pstest.ps.sip.uniza.sk:5060
             udp: localhost:5060

Aby server obsluhoval danú DNS zónu je treba vložiť do konfiguráku /etc/openser/openser.cfg parameter alias menom danej domény, lebo ináč neprebehne registrácia a odpoveď servera je Too many hops

alias=MENO_VASEJ _ZONY

u mňa

alias=ps.sip.uniza.sk

a server treba reštarnúť:

pstest:/home/palo# /etc/init.d/openser restart Restarting openser: openserListening on
             udp: 127.0.0.1 [127.0.0.1]:5060
             udp: 158.193.139.51 [158.193.139.51]:5060
             tcp: 127.0.0.1 [127.0.0.1]:5060
             tcp: 158.193.139.51 [158.193.139.51]:5060
Aliases:
             tcp: pstest:5060
             tcp: pstest.ps.sip.uniza.sk:5060
             tcp: localhost:5060
             udp: pstest:5060
             udp: pstest.ps.sip.uniza.sk:5060
             udp: localhost:5060
             *: ps.sip.uniza.sk:*

vo výpise by sa mala objaviť daná zóna, ktorú server obsluhuje. OpenSER nám beží ako služba, pri čistej inštalácii nie je problém sa registrovať na serveri (keďže autentifikácia je vypnutá).

Pokiaľ je nejaký problém s registráciou, over si či DNS odkazuje na IP adresu, ktorú si nastavil pre server pri inštalácii debianu. Pokiaľ adresa servera nesedí, zmeň ju (návod pre debian).

dig -t SRV _sip._udp.ps.sip.uniza.sk

; <<>> DiG 9.6-ESV-R1 <<>> -t SRV _sip._udp.ps.sip.uniza.sk
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8276
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; QUESTION SECTION:
;_sip._udp.ps.sip.uniza.sk.     IN      SRV

;; ANSWER SECTION:
_sip._udp.ps.sip.uniza.sk. 3600 IN      SRV     0 1 5060 pstest.ps.sip.uniza.sk.

;; AUTHORITY SECTION:
ps.sip.uniza.sk.        3600    IN      NS      ns.kis.fri.uniza.sk.

;; ADDITIONAL SECTION:
pstest.ps.sip.uniza.sk. 3600    IN      A       158.193.139.51
ns.kis.fri.uniza.sk.    3600    IN      A       158.193.152.2

;; Query time: 2 msec
;; SERVER: 158.193.152.2#53(158.193.152.2)
;; WHEN: Tue Nov  2 11:04:05 2010
;; MSG SIZE  rcvd: 142

 Diagnostika na strane servera cez ngrep

Kde môžeme vidieť príjem správ na danom porte.

pstest:/home/palo# ngrep port 5060 -W byline interface: eth0 (158.193.139.0/255.255.255.0)
filter: (ip or ip6) and ( port 5060 )
#
U 158.193.152.64:14879 -> 158.193.139.51:5060
REGISTER sip:ps.sip.uniza.sk SIP/2.0.
Via: SIP/2.0/UDP 192.168.10.108:61414;branch=z9hG4bK-d8754z-475f35500469b14d-1---d8754z-;rport.
Max-Forwards: 70.
Contact: <sip:palo@192.168.10.108:61414;rinstance=fd568b7c9b6cef9f>.
To: "palo"<sip:palo@ps.sip.uniza.sk>.
From: "palo"<sip:palo@ps.sip.uniza.sk>;tag=2c799944.
Call-ID: YjNkMzhjNDIzMzMzZjFmNjVhOWQwOTI4NThiMmZlOGI..
CSeq: 1 REGISTER.
Expires: 3600.
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO.
User-Agent: eyeBeam release 1102q stamp 51814.
Content-Length: 0.
.

#
U 158.193.139.51:5060 -> 158.193.152.64:14879
SIP/2.0 200 OK.
Via: SIP/2.0/UDP 192.168.10.108:61414;branch=z9hG4bK-d8754z-475f35500469b14d-1---d8754z-;rport=14879;received=158.193.152.64.
To: "palo"<sip:palo@ps.sip.uniza.sk>;tag=329cfeaa6ded039da25ff8cbb8668bd2.93e5.
From: "palo"<sip:palo@ps.sip.uniza.sk>;tag=2c799944.
Call-ID: YjNkMzhjNDIzMzMzZjFmNjVhOWQwOTI4NThiMmZlOGI..
CSeq: 1 REGISTER.
Contact: <sip:palo@192.168.10.108:61414;rinstance=fd568b7c9b6cef9f>;expires=3600.
Server: OpenSER (1.3.2-notls (x86_64/linux)).
Content-Length: 0.
.

Inštalácia Mysql  servera a mysql modulov pre OpenSer

Inštalácia z repozitárov

pstest:/home/palo# apt-get install mysql-server openser-mysql-module

počas inštalácie a konfigurácie sa nás server opýta na heslo rep mysql admina

 

Teraz je potrebné nastaviť prepojenie OpenSER a DB, vykonáme zeditovaním súbora /etc/openser/openserctlrc aby zohľadňoval naše nastavenia

pstest:/home/palo# vim /etc/openser/openserctlrc

a nastavíme (odkomentujeme)

## your SIP domain
SIP_DOMAIN=ps.sip.uniza.sk

## database type: MYSQL, PGSQL, DB_BERKELEY, or DBTEXT, by default none is loaded
# If you want to setup a database with openserdbctl, you must at least specify
# this parameter.
DBENGINE=MYSQL

## database host
DBHOST=localhost

## database name
DBNAME=openser

# database path used by dbtext or db_berkeley
# DB_PATH="/usr/local/etc/openser/dbtext"

## database read/write user
DBRWUSER=openser

## password for database read/write user
DBRWPW="openserrw"

## database read only user
DBROUSER=openserro

## password for database read only user
DBROPW=openserro

## database super user
DBROOTUSER="root" 
 
# Describe what additional tables to install. Valid values for the variables
# below are yes/no/ask. With ask (default) it will interactively ask the user
# for an answer, while yes/no allow for automated, unassisted installs.
#

# If to install tables for the modules in the EXTRA_MODULES variable.
INSTALL_EXTRA_TABLES=ask

# If to install presence related tables.
INSTALL_PRESENCE_TABLES=ask

# openser standard modules
STANDARD_MODULES="standard acc lcr domain group permissions registrar usrloc msilo
                   alias_db uri_db speeddial avpops auth_db pdt dialog dispatcher"
## type of aliases used: DB - database aliases; UL - usrloc aliases
## - default: none
ALIASES_TYPE="DB"

## control engine: FIFO or UNIXSOCK
## - default FIFO
CTLENGINE="FIFO"

## path to FIFO file
OSER_FIFO="FIFO" 

## OPENSER START Options
## PID file path - default is: /var/run/openser.pid
PID_FILE=/var/run/openser.pid

 Teraz vytvoríme tabuľku

openserdbctl create 

a máme to

 pstest:/home/palo# openserdbctl create
MySQL password for root:
INFO: test server charset
INFO: creating database openser ...
INFO: Core OpenSER tables succesfully created.
Install presence related tables? (y/n): y
INFO: creating presence tables into openser ...
INFO: Presence tables succesfully created.
Install tables for imc cpl siptrace domainpolicy carrierroute? (y/n): y
INFO: creating extra tables into openser ...
INFO: Extra tables succesfully created.

 Môžme skúsiť vytvoriť nového používateľa

openserctl add palo palo%password palo@mail.com
new user 'palo' added

Konfigurácia OpenSER aby použil MySQL

1. odkomentuj modul mysql.so aby ho openser začal používať

loadmodule "mysql.so"

2. Odkomentuj moduly, ktoré zabezpečujú autentifikáciu

loadmodule "auth.so"
loadmodule "auth_db.so"

3. Odkomentuj parametre modulu

modparam("usrloc", "db_mode", 2)
modparam("usrloc", "db_url", "mysql://openser:openserrw@localhost/openser")

a zakomentuj

#modparam("usrloc", "db_mode", 0)

a odkomentuj

modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
modparam("auth_db", "db_url","mysql://openser:openserrw@localhost/openser")

Konfigurácia auntentifikácie pri registrácií - konfigurácia Registrar.

Vložiť kód do openser.cfg alebo odkomentovať už existujúci.

Autentifikácia Proxy autentifikácie, ak volajúci je z local domény

if (!(method=="REGISTER") && from_uri==myself)
        {
                if (!proxy_authorize("", "subscriber")) {
                        proxy_challenge("", "0");
                        exit;
                }
                if (!check_from()) {
                        sl_send_reply("403","Forbidden auth ID");
                        exit;
                }

                consume_credentials();
                # caller authenticated
        }

a autentifikácie pri registrácii na registrar

if (is_method("REGISTER"))
        {
                # authenticate the REGISTER requests (uncomment to enable auth)
                if (!www_authorize("", "subscriber"))
                {
                        www_challenge("", "0");
                        exit;
                }
                ##
                if (!check_to())
                {
                        sl_send_reply("403","Forbidden auth ID");
                        exit;
                }

                if (!save("location"))
                        sl_reply_error();

                exit;
        }

 Overenie odregistrovaním a zaregistrovaním klienta, ak všetko funguje login musí byť fail ak daný user nie je v DB vytvorený.

pstest:/tmp# ngrep port 5060
interface: eth0 (158.193.139.0/255.255.255.0)
filter: (ip or ip6) and ( port 5060 )
#
U 158.193.152.64:32043 -> 158.193.139.51:5060
  REGISTER sip:ps.sip.uniza.sk SIP/2.0..Via: SIP/2.0/UDP 192.168.10.108:5676;branch=z9hG4bK-d8754z
  -d06a244b5b7c9554-1---d8754z-;rport..Max-Forwards: 70..Contact: <sip:palo@192.168.10.108:5676;ri
  nstance=3b2f2f3d4a823ee8>..To: "palo"<sip:palo@ps.sip.uniza.sk>..From: "palo"<sip:palo@ps.sip.un
  iza.sk>;tag=fa30a813..Call-ID: NWIxYWJlZTMwZDkxMGZlMmFmOThmM2Y0NjM3MGIwODc...CSeq: 1 REGISTER..E
  xpires: 3600..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO.
  .User-Agent: eyeBeam release 1102q stamp 51814..Content-Length: 0....
#
U 158.193.139.51:5060 -> 158.193.152.64:32043
  SIP/2.0 401 Unauthorized..Via: SIP/2.0/UDP 192.168.10.108:5676;branch=z9hG4bK-d8754z-d06a244b5b7
  c9554-1---d8754z-;rport=32043;received=158.193.152.64..To: "palo"<sip:palo@ps.sip.uniza.sk>;tag=
  329cfeaa6ded039da25ff8cbb8668bd2.4ccb..From: "palo"<sip:palo@ps.sip.uniza.sk>;tag=fa30a813..Call
  -ID: NWIxYWJlZTMwZDkxMGZlMmFmOThmM2Y0NjM3MGIwODc...CSeq: 1 REGISTER..WWW-Authenticate: Digest re
  alm="ps.sip.uniza.sk", nonce="4ccff2fe4f2758a37bc6b0364885be9ee1e93499"..Server: OpenSER (1.3.2-
  notls (x86_64/linux))..Content-Length: 0....

 

Pridanie nového používateľa

openserctl add temp temp temp@temp.sk
new user 'temp' added

ak sa do SIP UA nastavia dané hodnoty a doméne účtu, server nás autentifikuje. Cez ngrep alebo log daného SIP UA (napr. Xlite) uvidíme výmenu popísanú v call flow diagrame pre registráciu.