راه اندازی ترانک SRTP و TLS بین سیموتل و استریسک

راه اندازی ترانک SRTP و TLS بین سیموتل و استریسک در سه بخش موارد لازم را شرح خواهیم داد.

۱− نصب libsrtp :

در هر دو سرور استریسک و سیموتل کتابخانه libSRTP با استفاده از دستورالعمل های زیر در مسیر usr/src نصب می کنیم.

cd /usr/src/

اول این کتابخانه دانلود می کنیم.

wget https://github.com/cisco/libsrtp/archive/refs/tags/v2.5.0.tar.gz

سپس آنرا استخراج می کنیم.

tar zxvf v2.5.0.tar.gz

سپس دستور های زیر را به ترتیب برای نصب وارد می کنیم.

cd libsrtp-2.5.0/

./configure

make

make runtest

make install

cd /usr/src/asterisk-18.14.0.s.2/

./configure --with-crypto --with-ssl --with-srtp=/usr/local/lib

make

make install

سپس خط زیر را در فایل modules.conf در مسیر etc/asterisk/modules.conf اضافه می کنیم.

load => res_crypto.so

2− ایجاد سرتیفیکیت:

در سیموتل:

در مسیر etc/simotel/ یک فولدر با نام keys می سازیم.

mkdir /etc/simotel/keys

سپس اسکریپت simo_tls_cert در مسیر /usr/src/ قرار دهید.

جهت ایجاد دسترسی لازم از دستور زیر استفاده کنید.

chmod 755 simo_tls_cert

و یک مجوز certificate self-signed و همچنین یک simotel certificate ایجاد کنید.
استفاده از گواهینامه ها یا Certificate ها یکی از راه های تامین امنیت و رمزنگاری ارتباطات است. گواهی self-signed یک گواهی TLS/SSL است که توسط شخصی که آن را ایجاد کرده است به‌جای یک CA قابل‌اعتماد امضاشده است.
گواهی‌های خود-امضا، ارتباط بین سرور و کلاینت‌ها را رمزنگاری می‌کنند. با این حال از آنجا که این ارتباط از سوی هیچ مرجع تأیید مورد اعتماد از سوی مرورگرهای وب تأیید نشده است، کاربران نمی‌توانند از این گواهی برای اعتبارسنجی خودکار سرور شما استفاده کنند.

./simo_tls_cert -O “simotel” -d /etc/simotel/keys -b 2048

آپشن های دستور بالا :

آپشن O- : نام سازمانی مان را مشخص میکند.

آپشن d- : برای مشخص کردن مسیر قرار گرفتن key ها مورد استفاده قرار میگیرد.

آپشن b- : اندازه فایل کلید خصوصی را مشخص می کند

فایل پیکربندی etc/simotel/keys/tmp.cfg را ایجاد می کند.

می‌توانید از این فایل پیکربندی برای ایجاد گواهی‌های اضافی بدون وارد کردن مجدد اطلاعات فیلدهای گواهی استفاده کنید.

از شما خواسته میشود تا برای/etc/simotel/keys/ca.key یک پسورد وارد کنید که باید پسوردی انتخاب کنید که بعدا آن را به خاطر بیاورید.

فایل/etc/simotel/keys/ca.crt ایجاد خواهد شد.

مجددا از شما خواسته میشود که پسورد وارد کنید و سپس فایل /etc/simotel/keys/simotel.key ایجاد خواهد شد.

فایل /etc/simotel/keys/simotel.crt به صورت اتوماتیک ایجاد میشود.

برای بار سوم از شما خواسته میشود تا پسورد را وارد کنید و فایل /etc/simotel/keys/simotel.pem ایجاد خواهد شد که ترکیبی از فایل های simotel.key و simotel.crt می باشد.

اگر محتویات پوشه را با دستور زیر بررسی کنیم :

/ls /etc/simotel/keys

فایل های زیر موجود است.

ca.cfg ca.crt ca.key simotel.crt simotel.csr simotel.key simotel.pem tmp.cfg

در استریسک :

اگر در مسیر etc/asterisk/ فولدری با نام keys وجود نداشت آن را به شکل زیر می سازیم.

mkdir /etc/asterisk/keys

سپس اسکریپت ast_tls_cert در مسیر /usr/src/ قرار دهید.

جهت ایجاد دسترسی لازم از دستور زیر استفاده کنید.

chmod 755 ast_tls_cert

همانند قسمت سیموتل یک مجوز certificate self-signed و همچنین یک asterisk certificate ایجاد کنید.

./ast_tls_cert -O “asterisk” -d /etc/asterisk/keys -b 2048

فایل پیکربندی etc/asterisk/keys/tmp.cfg/ را ایجاد می کند.

می‌توانید از این فایل پیکربندی برای ایجاد گواهی‌های اضافی بدون وارد کردن مجدد اطلاعات فیلدهای گواهی استفاده کنید.

از شما خواسته میشود تا برای etc/asterisk/keys/ca.key/ یک پسورد وارد کنید که باید پسوردی انتخاب کنید که بعدا آن را به خاطر بیاورید.

فایل etc/asterisk/keys/ca.crt/ ایجاد خواهد شد.

مجددا از شما خواسته میشود که پسورد وارد کنید و سپس فایل etc/asterisk/keys/asterisk.key/ ایجاد خواهد شد.

فایل etc/simotel/keys/asterisk.crt/ به صورت اتوماتیک ایجاد میشود.

برای بار سوم از شما خواسته میشود تا پسورد را وارد کنید و فایل etc/asterisk/keys/asterisk.pem/ ایجاد خواهد شد که ترکیبی از فایل های asterisk.key و asterisk.crt میباشد.

اگر محتویات پوشه را با دستور زیر بررسی کنیم.

/ls /etc/asterisk/keys

فایل های زیر موجود است.

asterisk.crt asterisk.key asterisk.csr asterisk.pem ca.cfg ca.key ca.crt tmp.cfg

سپس در هر یک از سرور ها به صورت زیر عمل می کنیم.

در سیموتل

scp /etc/simotel/keys/ca.crt devel@192.168.35.61:/home/devel/ca-simotel.crt

در استریسک

scp /etc/asterisk/keys/ca.crt devel@192.168.35.138:/home/devel/ca-asterisk.crt

سپس

در سیموتل

/cp /home/devel/ca-asterisk.crt /etc/simotel/keys

در استریسک

/cp /home/devel/ca-simotel.crt /etc/asterisk/keys

حال باید در فایل های keys در هر سرور CA سرور مقابل با پسوند نام آن سرور موجود باشد.

در سیموتل

/ls /etc/asterisk/keys

ca.cfg ca.crt ca.key simotel.crt simotel.csr simotel.key simotel.pem tmp.cfg ca-asterisk.crt

در استریسک

/ls /etc/asterisk/keys

asterisk.crt asterisk.key asterisk.csr asterisk.pem ca.crt ca.cfg ca.key tmp.cfg ca-simotel.crt

۳− کانفیگ sip.conf و ترانک ها:

در سیموتل:

فایل etc/asterisk/sip.conf/ را به شکل زیر ویرایش می کنیم

[general]

tlsenable=yes

tlsbindaddr=0.0.0.0:5061

tlscertfile=/etc/simotel/keys/simotel.crt

tlsprivatekey=/etc/simotel/keys/simotel.key

tlsclientmethod=tlsv1_2

در پنل وب سیموتل از بخش PBX => trunk ترانک مدنظر را ویرایش کرده و در بخش More Options مقادیر زیر را اضافه می کنیم.

transport=tls

encryption=yes

tlscafile=/etc/simotel/keys/ca-asterisk.crt

سپس با دستور زیر سرویس استریسک ری استارت می کنیم.

service asterisk restart

در نهایت آرایش تماس را در قسمت دایل پلن وب سیموتل به نحو دلخواه به سمت ترانک استریسک ایجاد می کنیم.

در استریسک
فایل etc/asterisk/sip.conf/ را به شکل زیر ویرایش می کنیم.

[general]

tlsenable=yes

tlsbindaddr=0.0.0.0:5061

tlscertfile=/etc/asterisk/keys/asterisk.crt

tlsprivatekey=/etc/asterisk/keys/asterisk.key

tlsclientmethod=tlsv1_2

سپس یک ترانک برای ارتباط با سیموتل ایجاد می کنیم.

[simotel]

deny=0.0.0.0/0.0.0.0

permit=0.0.0.0/0.0.0.0

dtmfmode=rfc2833

canreinvite=no

directmedia=no

context=from-pstn

host=192.168.35.138

type=friend

nat=force_rport,comedia

qualify=yes

insecure=port,invite

disallow=all

allow=ulaw,alaw

transport=tls

tlscafile=/etc/asterisk/keys/ca-simotel.crt

encryption=yes

و برای نمونه میتوان دایل پلن زیر را برای ایجاد ارتباط بین سیموتل و استریسک در مسیرزیر ایجاد کرد.

etc/asterisk/extensions.conf/

برای تماس ورودی از ترانک

[from-pstn]

()exten => _X.,1,NoOp

()exten => 300,1,NoOp

(exten => 300,2,Dial(SIP/${EXTEN},60,rTtKk

()same => n(hangup),Hangup

برای تماس خروجی از داخلی به سمت ترانک

[main_routing]

({exten => _X.,1,Dial(sip/simotel/${EXTEN

()same => n(hangup),Hangup

نمونه کانفیگ یک داخلی در استریسک که میتوان در فایل sip.conf آن را قرار داد.

[300]

secret=Aa@300

context=main_routing

deny=0.0.0.0/0.0.0.0

dtmfmode=rfc2833

canreinvite=no

directmedia=no

host=dynamic

type=friend

nat=force_rport,comedia

port=5060

qualify=yes

callgroup=1

pickupgroup=1

permit=0.0.0.0/0.0.0.0

callcounter=yes

faxdetect=no

2 پسندیده