شما می توانید با ارسال ایمیل خود ، بصورت رایگان مشترک شده و از بروزسانی مطلع شوید.

ایمیل خود را وارد کنید:

 WebRTC چیست؟ یکی از تکنولوژی های بسیار مهم در دنیای مخابرات امروز WebRTC ست. با استفاده از این تکنولوژی، می توان در بستر وب و تنها با استفاده از مرورگر، ارتباطات صوتی و تصویری برقرار کرد؛ که این به معنی امکان برقراری ارتباط از طریق هر گجت (Gadget) بدون نیاز به نصب نرم افزار خاص [...]

یکی دیگر از ماژول های کاربردی مورد استفاده در FreePBX ماژول Boss Secretary می باشد که متاسفانه از نسخه ی ۱۲ دیگر بروزرسانی نشده اما به دلیل کاربرد زیاد آن برای مشتریان، در نهایت این ماژول توسط تیم فنی شرکت ساعیان ارتباط بهینه سازی و مشکلات آن مرتفع شده است. در ادامه به معرفی این [...]

یکی از مواردی که پس از نصب فری پی بی ایکس ( FreePBX ) برای کاربران بوجود می آید این است که ارتباط تجهیزاتی مانند گیت وی Gateway با استریسک، پس از دقایقی قطع می شود. در ادامه ابتدا به بررسی علت این مسئله و سپس راهکار آن می پردازیم. نحوه کار قابلیت Intrusion Detection [...]

یکی از سناریوهای رایج و متداولی که بسیاری از همکاران با آن سروکار دارند، ارتباط میان گیت وی های سنگوما Sangoma Vega Gateway و سرور ایزابل Issabel می باشد که در نتیجه ارتباط با شبکه مخابرات PSTN را میسر می نماید. در این مقاله قصد داریم برقراری این ارتباط را به زبانی ساده، آموزش دهیم. [...]

یکی از نیازمندی های اصلی در سیستم های تلفنی تغییر فایل های صوتی مربوط به اعلان های سیستم می باشد. همچنین ممکن است نیاز باشد تا در منوی صوتی از چند زبان مختلف پشتیبانی کنید. برای تغییر prompt های سیستم تلفنی استریسک و همچنین تعریف زبان های مختلف، روش های گوناگونی وجود دارد که ساده [...]

یکی از مباحثی که در راه اندازی شبکه های VoIP رایج است، برقراری ارتباط میان دو سرور تلفنی می باشد. به عنوان مثال دو سرور تلفنی را در نظر بگیرید که در دو مکان مجزا در حال سرویس دهی به کاربران خود می باشند و لازم است تا کاربران این دو سیستم نیز بتوانند با [...]

در FreePBX سه روش جهت راه اندازی فکس وجود دارد: ماژول تجاری Fax Pro، استفاده از اپلیکیشن های استریسک و سرور فکس Hylafax. هر یک از این روش ها ویژگی هایی دارند؛ ماژول Fax Pro قابلیت ارسال و دریافت فکس را برای کاربران از طریق UCP فراهم می کند. یعنی کاربران با ورود به محیط [...]

یکی از نیازمندی های اصلی در یک سیستم تلفنی، امکان ارسال و دریافت فکس می باشد. البته امروزه با توسعه بیش از پیش ابزار های ارتباطی همچون ایمیل، روش های سنتی مانند فکس کمتر مورد استفاده قرار می گیرند؛ ولی هنوز کاملا جایگزین نشده اند. بنابراین با بکارگیری سیستم های تلفنی مبتنی بر VoIP نیز [...]

صندوق صوتی از نیازمندی های مهم IP-PBX ها بوده و می تواند میزان سرویس دهی و همچنین در دسترس بودن را برای کاربران افزایش دهد. علاوه بر این، امکان ارسال پیام های صندوق صوتی از طریق ایمیل، این قابلیت را کاربردی تر می نماید. این قابلیت را در FreePBX می توانید به سادگی برای کابران [...]

در مقاله های قبلی نحوه ضبط پیام صوتی در  ماژول System Recording و بکارگیری آن در ساخت منوی صوتی شرح داده شد. علاوه بر این قابلیت، در برخی موارد نیاز است تا برای تماس گیرنده یک پیام صوتی خاص پخش شود و سپس به مقصد دیگری هدایت شود. به عنوان مثال اطلاع رسانی درباره یک [...]

امنیت در voip

یکی از مشکلات موجود در voip نسبت به سیستم تلفن ستنی موارد امنیتی می‌باشد که بی توجهی نسبت به آن، باعث بالا رفتن هزینه‌ها می‌شود. از این رو قصد داریم تا با بررسی یک سری از حفره‌های امنیتی رایج در voip به راه های مقابله با آن بپردازیم.

نکته: قطعا در این مقاله نمی‌توانیم تمام مشکلات امنیتی موجود در voip را بیان کنیم ولی امید است که شخص با خواندن این مقاله تا حد زیادی از این حملات جلوگیری کند.

 

لازم است قبل از این که به بررسی پروتکل‌های موجود در voip و لایه application بپردازیم حملات رایج در شبکه را بشناسیم و با طراحی درست شبکه از حملات در لایه های بالایی جلوگیری کنیم.

ARP POISONING

با استفاده از روش arp poisoning هکر می تواند خود را به عنوان یک شخص میانی در مسیر دو دستگاه قرار گیرد و به راحتی تمامی اطلاعات رد وبدل بین دو دستگاه را با استفاده از نرم افزارهایی مانند Cain و ettercap گوش کند.

man_in_the_middle

در این روش هکر آدرس mac خود را به عنوان آدرس mac سرور در شبکه ارسال می‌کند و از این به بعد هر شخصی که می‌خواهد به سرور وصل شود در واقع به سیستم هکر وصل شده است و می‌تواند اطلاعات مورد نیاز خود را بردارد و خود اطلاعات را به سرور ارسال کند.

برای جلوگیری از arp poisoning در شبکه راه های زیادی وجود دارد

  1. استفاده از static arp
  2. استفاده از نرم افزارهای ArpON، AntiARP، ArpWatch

  3. استفاده از سوئیچ های manage برای مثال استفاده از port security در سوئیچ های cisco

در voip شما می‌توانید با جدا کردن voip از data و تعریف تمام IPphone ها در یک vlan مجزا از این نوع حملات جلوگیری کنید.

 

SIP

برای مقابله با مشکلات امنیتی در پروتکل SIP نیاز به داشتن امنیت درلایه های Application و Network می باشد.SIP از پروتکلهای  UDP, TCP برای signalling استفاده می کند و در نتیجه تمام مشکلات موجود در این پروتکل ها را نیز شامل میشود. text-based بودن پروتکل SIP باعث بالا بردن دسترسی افراد عیر مجاز به اطلاعات تبادل شده در پروتکل SIP میشود.

به همین دلیل است که راه کار های امنیتی از قبیل (فایروال، encryption و authentication ) مورد استفاده قرار می گیرد. در ضمن استفاده از پروتکل های TLSو  IPSec می‌تواند باعث افزایش سطح امنیتی در SIP شود.

 

بعضی تنظیمات موجود در asterisk:

  • بسیاری از هکرها برای پیدا کردن username و password در asterisk از روش brute force استفاده میکنند، چنانچه username ارسالی توسط هکر در سیستم باشد asterisk جواب ۴۰۱ “UNAUTHORIZED”  یا ۴۰۷ “PROXY AUTHENTICATION REQUIRED”  را بر می گرداند و اگر username ارسالی توسط هکر در سیستم یافت نشود asterisk جواب ۴۰۴ “NOT FOUND”  را بر می گرداند و این به هکر کمک می کند تا براحتی username های موجود در سیستم را پیدا کند. برای این منظور alwaysauthreject را در تنظیمات sip.conf خود برابر با yes قرار دهید تا asterisk به تمامی درخواست ها جواب ۴۰۱ یا ۴۰۷ را برگرداند.
  • استفاده نکردن از شماره به عنوان username
  • راه اندازی tls
  • محدود کردن IP های مجاز برای یک داخلی

 

پروتکل sip به صورت پیش فرض از روش HTTP Digest برای احرازهویت کاربران خود استفاده می کند

احراز هویت در SIP:

  1. ابتدا client یک در خواست REGISTER به sip سرور ارسال می کند

  2. سپس sip سرور پاسخ ۴۰۱ یا ۴۰۷ را بر میگرداند

  3. سپس client درخواست REGISTER خود را به همراه secret خود را ارسال میکند

 

1-
REGISTER sip:192.168.1.138;transport=UDP SIP/2.0
Via: SIP/2.0/UDP 192.168.1.138:5061;branch=z9hG4bK-d8754z-84186a35f1e76cd2-1—d8754z-
Max-Forwards: 70
Contact: <sip:[email protected]:5061;rinstance=991c8af008b63d90;transport=UDP>
To: <sip:[email protected];transport=UDP>
From: <sip:[email protected];transport=UDP>;tag=2059497e
Call-ID: OTBkOGJhMmYwNTQ4M2U0ODBmOTU0YmQzODViOWVmM2U.
CSeq: 1 REGISTER
Expires: 3600
Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE
Supported: replaces, norefersub, extended-refer, X-cisco-serviceuri
User-Agent: Zoiper rev.11619
Allow-Events: presence, kpml
Content-Length: 0

2-
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.1.138:5061;branch=z9hG4bK-d8754z-84186a35f1e76cd2-1—d8754z-;received=192.168.1.138;rport=5061
From: <sip:[email protected];transport=UDP>;tag=2059497e
To: <sip:[email protected];transport=UDP>;tag=as503e8ab6
Call-ID: OTBkOGJhMmYwNTQ4M2U0ODBmOTU0YmQzODViOWVmM2U.
CSeq: 1 REGISTER
Server: Asterisk PBX 10.0.0
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm=”abdi“, nonce=”4674f014
Content-Length: 0

3-
REGISTER sip:192.168.1.138;transport=UDP SIP/2.0
Via: SIP/2.0/UDP 192.168.1.138:5061;branch=z9hG4bK-d8754z-f372cbe708a324d0-1—d8754z-
Max-Forwards: 70
Contact: <sip:[email protected]:5061;rinstance=991c8af008b63d90;transport=UDP>
To: <sip:[email protected];transport=UDP>
From: <sip:[email protected];transport=UDP>;tag=2059497e
Call-ID: OTBkOGJhMmYwNTQ4M2U0ODBmOTU0YmQzODViOWVmM2U.
CSeq: 2 REGISTER
Expires: 3600
Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE
Supported: replaces, norefersub, extended-refer, X-cisco-serviceuri
User-Agent: Zoiper rev.11619
Authorization: Digest username=”200“,realm=”abdi“,nonce=”4674f014“,uri=”sip:192.168.1.138;transport=UDP“,response=”0b84db8e33d6f961b8f8e17c5a2bf420“,algorithm=MD5
Allow-Events: presence, kpml
Content-Length: 0

محاسبه response توسط client :

string1 = md5(username+”:”+realm+”:”+secret)
string2 = md5(method+”:”+req_uri)
response = md5(string1+”:”+nonce+”:”+string2)

همانطور که می‌بینید در SIP هیچگاه secret ارسال نمی‌شود، در واقع client با استفاده از realm و nonce که از سرور دریافت می‌کند(مرحله ۲) مقدار response را با استفاده از فرمول بالا به دست می‌آورد و آن را ارسال می‌کند و سرور نیز به همین روش مقدار response را محاسبه می‌کند و اگر response خود و client یکی بود authentication با موفقیت انجام می‌شود.

با توجه به یک طرفه بودن الگوریتم MD5 با داشتن response، رسیدن به secret تقریبا غیر ممکن است اما اگر پسورد انتخاب شده به سادگی قابل حدس زدن باشد هکر به راحتی میتواند response خود را تولید کند و آن را با response فرستاده شده از سوی client مقایسه کند و پسورد را به دست آورد.

 

Encryption  در media :

به دلیل وجود نداشتن هیچ مکانزیم امنیتی در rtp payload، امکان استراق سمع و حتی فهمیدن dtmf های ارسالی توسط شخص ارسال کننده بسیار راحت خواهد بود، اگر شبکه مورد نظر مسائل امنیتی را رعایت نکرده باشد.

 

SRTP مشخصات RTP تعریف شده در RFC3711 را فراهم می کند که رمزنگاری و احراز هویت‌های صوتی  داده ها را در یک جریان RTP مشخص می کند. کلید رمزگذاری و گزینه ها در پیام های  INVITE رد و بدل شده، به این منظور ترجیحا از SIPS استفاده شود

برای encryption و decryption در SRTP از AES استفاده می شود.

Asterisk Dialplan Injection

یکی از رایج ترین از مشکلات امنیتی در asterisk قبول کردن wildcard در {EXTEN}$ است. با داشتن wildcard در dialplan ممکن است شخص با تزریق کردن string، اجازه گرفتن تماس های ناخواسته از نظر سیستم، مورد قبول قرار گیرد.

مانند زیر:

exten => _X.,1,Dial(SIP/${EXTEN})

در این حالت شخص با تماس گرفتن به

۳۰۰&DAHDI/g1/00146165551212

می تواند یک تماس بین اللملی ایجاد در حالی که در Dialplan قصد ما فقط اجازه گرفتن تماس داخلی بوده است.

البته این مشکل امنیتی فقط در تکنولوژی هایی  قابل اجرا است که قابلیت ارسال string را داشته باشند مانند SIP.

 

برای جلوگیری از این گونه تماس ها استفاده از تابع filter در Dialplan است به مثال زیر توجه کنید:

exten => _X.,1,Set(SAFE_EXTEN=${FILTER(0-9,${EXTEN:1})})
same => n,GotoIf($[${EXTEN:1} != ${SAFE_EXTEN}]?error_match,1)
same => n,Dial(SIP/${SAFE_EXTEN})

exten => error_match,1,Verbose(2,Values of EXTEN and SAFE_EXTEN did not match.)
same => n,Verbose(2,EXTEN: “${EXTEN}” — SAFE_EXTEN: “${SAFE_EXTEN}”)
same => n,Playback(silence/1&invalid)
same => n,Hangup()

یکی دیگر از مسائلی که باید مورد توجه قرار گیرد استفاده از فایروال و محدود کردن دسترسی ها می باشد.

هنگامی که تمامی داخلی قرار است از درون شبکه داخلی به سرور متصل شوند نیازی نیست پورت های مانند SIP و IAX در در اینترنت باز گذاشت.

در صورت نیاز به استفاده از پروتکل SIP و IAX از اینترنت استفاده از VPN می تواند گزینه مناسبی باشد، البته به دلیل داشتن overhead بر روی شبکه و تاثیر بر روی کیفیت مکالمه، امکان اجرای VPN نباشد که در این صورت باید راه کارهای امنیتی مناسب به کار گرفته شود.

برای مثال در asterisk با نگاه به فایل var/log/asterisk/messages/ میتوانید با نوشتن یک اسکریپت، ip هایی را که چند بار برای register شدن failed شده اند را برای مدتی یا برای همیشه block کنید.

در زیر نمونه ای از این فایل را مشاهده می کنید.

[Jun 19 13:59:54] NOTICE[24287] chan_sip.c: Registration from ‘<sip:[email protected];transport=UDP>’ failed for ’192.168.1.138:5061′ – Wrong password
[Jul 29 17:19:11] NOTICE[4646] chan_sip.c: Registration from ‘”200″<sip:[email protected]:5060>’ failed for ’192.168.88.100:5060′ – Username/auth name mismatch                                                                                                                                                       
[Jul 29 17:19:11] NOTICE[4646] chan_sip.c: Registration from ‘”500″<sip:[email protected]:5060>’ failed for ’192.168.88.100:5060′ – No matching peer found

دیدگاه خود را به ما بگویید.