مهدی اشراقی
طراح و مهندس شبکه های کامپیوتری ، برنامه نویس
مهدی اشراقی
طراح و مهندس شبکه های کامپیوتری ، برنامه نویس

نوشته های بلاگ

رمز نگاری در ویپ – بخش اول – ارسال اطلاعات ایمن به ویپ

رمز نگاری در ویپ – بخش اول – ارسال اطلاعات ایمن به ویپ

رمز نگاری سیگنالینگ یعنی چی ؟

در این مقاله به صورت ساده با کارکرد سیگنالینگ تلفنی آشنا میشیم ، مفهومش رو درک میکنیم و با هم SIP , PJSIP  رو امن میکنیم . با من همراه باشید .

در پست های قبل نصب ایزابل issabel به صورت قدم به قدم یاد گرفتیم و در این پست میخوایم اون رو به صورت جالبی امن کنیم !

خیلی ساده مفهوم سگنالینگ در ویپ :

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

اطلاعاتی مثل اینکه شماره تلفن شما چند ، شما اصلا کی هستین و یا با کی کار دارید .

مخابرات و یا سیستم تلفنی VoIP یا هر سیستمی رو که اسمش رو بشه گذاشت مرکز تلفن ، به سمت من یه پیام ارسال میکنه که در چه حالی ؟ ( مثلا دارم با کسی صحبت میکنم ؟ یا اصلا من در دسترس هستم یا نه )

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

سگنالینگ در ویپ
* اعداد کد هر پیام هستند . مثلا کد ۲۰۰ یعنی OK که نشونه تایید هست ، به جهت فلش ها دقت کنید .

 

من گوشی رو که برداشتم کانال ارتباطی تحت عنوان RTP که مخفف [ Real Time Porotocol ] هست بین من و شما بر قرار میشه و کار سیگنالینگ در این مرحله تموم میشه چون انتقال صدا یا تصویر با RTP هست . و اگر شما تلفن رو قطع کنید پیام سگنالینگ قطع به سمت من ارسال میشه و من هم پیام باشه رو برای شما ارسال میکنم ! چه باحال !

این پیام هایی که بین ما رد و بدل میشه رو سگنالینگ مخابراتی گفته میشه .

چطور مرکز تلفن VoIP هک میشه ؟

خوب مفهوم سیگنالینگ رو که  فهمیدیم .میریم سراغ اینکه بفهمیم چرا مهمه که از رمزنگاری در این لایه حتما استفاده کنیم ؟

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

این وضعیت بدتر هم  میشه وقتی شما از یک شبکه بیسیم استفاده میکنید .

در شبکه های کابلی اطلاعات مستقیما از مبدا به مقصد میرسه و نفر سومی نمیتونه اطلاعات رو حتی ببینه . ولی در شبکه های بی سیم ( Wi-Fi ) اطلاعات واسه همه ارسال میشه و هر کس اطلاعات خودش رو بر فقط میخونه ، پس نفر سوم میتونه اطلاعات شما رو واسه خودش نگه داره (البته یکم امنیت بیشتره ، یکم !).

رمز نگاری در ویپ چطور انجام میشه ؟

اول از همه ببنیم TLS چیه ؟

TLS چیست ؟

پروتکل TLS یا Transport Layer Security یکی از انواع پروتکل‌‌های رمزنگاری هست. این پروتکل وظیفش ارتباطی ایمن­ بین سرور و کلاینت در بستر شبکه هست .

برقراری ارتباط از طریق TLS، نیازمند پیش نیازهایی از جمله کلیدهای نامتقارن (شامل کلید عمومی و کلید خصوصی) و کلید سیشن (Session key) است. کلید عمومی همانطور که از نامش مشخصه، برای اشخاص سوم شخص قابل استفادست. اما کلید خصوصی فقط توسط ارسال کننده و دریافت کننده اطلاعات، قابل استفادست.

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

مراحل راه اندازی TLS در ویپ بر مبنای Astersik

امنیت ویپ

ساخت کلید برای رمز نگاری :

ابتدا در حالت سوپر یوزر وارد کنسول لینوکس سرور بشید .

با دستور زیر یک پوشه برای ساخت کلید ها بسازید

برای ساخت هم میتونید از Hostname استفاده کنید و یا از IP یا اگر سرور رو به صورت مستقیم به اینترنت متصل کردید از DNS هم میتونید استفاده کنید .

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

یا از مسیر etc/hostname/  اون رو تغییر بدید . دقت داشته باشید اگر این مقدار رو تغییر دادید سرور رو یکبار reboot کنید .

حالا با استفاده از اسکریپت “ast_tls_cert” یک کلید اختصاصی برای سرور خودمون درست میکنیم . دستور به صورت زیر استفاده میشه و جزئیات هم در زیر دستور مینویسم .

  • C- : این پارامتر برای تعیین آدرس DNS,Hostname,IP سرور ما هست .
  • O- : این پارامتر برای تعیین نام مجموعه / شرکت و یا گروه ماست .
  • d- : این پارامتر برای تعیین آدرس ذخیره شدن کلید هاست.
  1. بعد از وارد کردن کد بالا از شما یک پسورد درخواست میکنه ، پسورد رو حتما ذخیره کنید .

اگر اسکریپ “ast_tls_cert”  رو ندارید :

این دستور رو وارد کنید .

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

 

ساخت کلید برای کلایت ها :

حالا با استفاده از همون اسکریپت “ast_tls_cert” اقدام به ساخت کلید برای کاربران میکنیم .

  • -m : وقتی این مقدار رو برابر با client قرار میدیم یعنی درخواست ما کلید برای کلاینت هست و برای سرور نمیخوایم .
  • -c : آدرس فایل .crt که قصد استفاده از اون رو داریم برای ساخت کلید کلاینت .
  • -k : آدرس فایل .keyکه قصد استفاده از اون رو داریم برای ساخت کلید کلاینت .
  • -C : برای تعیین آدرس IP  و یا DNS کلاینت که میشه همون تلفن ویپ و یا Softphone ما .
  • -O : این پارامتر برای تعیین نام مجموعه / شرکت و یا گروه ماست .
  • -o : تعیین یک اسم برای کلید ساخته شده .

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

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

این فایل ها رو باید ببینید . دقت داشته باشید نام فایل های ساخته جدید به -o بستگی داره.

اگر کلاینت شما درخواست کلید با پسوند .P12 رو داشت با دستور زیر فایلتون رو تبدیل کنید .

” توصیه میکنم برای امنیت بیشتر قسمت فایلی که برای client ساخته شده و پسوند .pem رو داره با notepad باز کنیم و RSA PRIVET KEY رو حذف کنید چون کلاینتها به این قسمت احتیاج ندارن و امنیت رو ارتقا میده .

در انتها به کلید ها برای استریسک دسترسی ایجاد کنید

مراحل ساخت کلید تمام شد الان میریم سراغ پیکربندی سیستم برای SIP و PJSIP .

فعال سازی TLS برای PJSIP :

خوب بریم سراغ فعال کردن TLS برای chan_pjsip

در مرحله اول باید tls رو برای پروتکل pjsip فعال کنیم . وارد فایل pjsip.onf بشید و دستورات زیر رو در آخر این فایل اضافه کنید .

نکته : پروتوکل استفاده شده برای ساخت کلید ها رمز نگاری SSLv23 هست

برای تنظیم کاربر نهایی (تلفن و یا نرم افزاری که به عنوان داخلی از اون استفاده میکنید ) تنظیمات زیر رو اعمال کنید

در بعضی موارد که ارتباط شما با مشکل مواجه میشه (بیشتر در pjsip ورژن ۲.۴.۵ ) و خطای Connection refused رو دریافت میکنید ، در تنظیمات کاربر نهایی (تلفن و یا نرم افزاری که به عنوان داخلی از اون استفاده میکنید ) عبارت rewrite_contact = yes رو به تنظیمات کاربر نهایی اضافه کنید

فعال سازی TLS برای SIP :

حالا مراحل فعال سازی برای SIP رو پیش میریم .

ابتدا باید tls رو برای پروتکل sip فعال کنیم . وارد فایل sip_general_custom.conf بشید و دستورات زیر رو در آخر این فایل اضافه کنید .

بعد از وارد کردن مقادیر بالا و reload کردن سرویس asterisk ، پشتیبانی از tls در پروتکل sip فعال میشه .

حالا باید این تنظیمات رو روی داخلی که مدنظر داریم در حالت tls فعالیت کنه وارد کنیم .

این مراحل رو هم میشه از فایل تنظیمات asterisk انجام داد و هم از پنل وب . بسته به اینی که دارید از elastix یا freepbx و یا issable استفاده میکنید این کار رو انجام بدید .

من این مراحل رو طبق آموزش با فایل تنظیمات asterisk انجام میدم . اگر نیاز بود بگید تا آموزش ار طریق وب رو هم در سایت قرار بدم .

حالا فایل client.pem رو به تلفن و یا سافت فون بدید و تنظیمات رو روی tls قرار بدید .

پورتی که در حالت SIP بر روی استریسک ۱۳ استفاده میشه به صورت پیش فرض ۵۰۶۱ هست .

توصیه میکنم برای امنیت بیشتر سرورتون از این مقاله ها غافل نشید :

منبع : سایت رسمی Asterisk

برچسب ها:
درج دیدگاه