در این آموزش یاد خواهیم گرفت که چگونه از پروتکل سیگنالیگ و RTP در شبکه خود محافظت کنیم.
به صورت پیش فرض انتقال صدا در شبکه به صورت غیر رمز منتقل میگردد.با فعال کردن SRTP صدای ارسالی به صورت رمز و با فرکانس درهم ریخته ارسال میگردد.این پروتکل جهت رمزنگاری انتقال صدا با استاندارد RFC3711 از سوی بنیاد IETF است.
به جهت احراز هویت قوی با استفاده از پروتکل TLS یک گواهی نامه احراز هویت صادر می گردد.با این کار تنها EndPoint هایی که دارای این گواهی نامه هستند اجازه رجیستر شدن روی سرور را خواهند داشت.
این پروتکل نسخه ارتقا یافته SSLاست که از سوی کمپانی Netscape معرفی شده است.در واقع بعد از ورژن سوم SSL معرفی و از سوی بنیاد IETF با استاندارد RFC5246 تصویب گردید.این پروتکل در لایه انتقال است و وظیفه ایمن نمودن تراکنشهای ارتباطی وتولید کلید امن بین کلاینت و سرور را دارد.
ابتدا کتابخانه 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
سپس در مسیر etc/simotel/ یک فولدر با نام keys می سازیم.
mkdir /etc/asterisk/keys
سپس اسکریپت simo_tls_cert در مسیر usr/src قرار دهید
جهت ایجاد دسترسی لازم از دستور زیر استفاده کنید
chmod 755 simo_tls_cert
و یک مجوز certificate self-signed و همچنین یک asterisk 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 میباشد.
سپس برای دیوایس sip مان یک certificate کلاینت ایجاد میکنیم.
./simo_tls_cert -m client -c /etc/simotel/keys/ca.crt -k /etc/simotel/keys/ca.key -O “simotel” -d /etc/simotel/keys -o client -b 2048
آپشن -m client- : به اسکریپت میگوید که نیاز به یک client certificate داریم و نه یک server certificate
آپشن c- : مشخص کننده مجوز certificate (برای خودمان) است که از آن استفاده میکنیم.
آپشن k- : برای مجوز certificate تعریف شده در بالا key فراهم میکند.
آپشن O- : نام سازمانی مان را مشخص میکند.
آپشن d- : پوشه برای قرار گرفتن فایل های key را مشخص مینماید.
آپشن o- : نام فایل key میباشد که میخواهیم ایجاد شود.
اگر وارد پوشه با دستور زیر شویم.
ls /etc/simotel/keys/
فایل های زیر موجود است.
ca.cfg ca.crt ca.key client.crt client.csr client.key client.pem simotel.crt simotel.csr simotel.key simotel.pem tmp.cfg
دستور زیر را در فایل modules.conf با مسیر etc/asterisk/modules.conf قرار میدهیم
load => res_crypto.so
فایل /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
در پنل وب سیموتل از بخش PBX => User داخلی مدنظر را ویرایش کرده و در بخش More Options مقادیر زیر را اضافه می کنیم
transport=tls
encryption=yes
سپس با دستور زیر سرویس استریسک ری استارت می کنیم.
service asterisk restart
همانطور که دیدید تماس ها را با استفاده از TLS و SRTP امن کردیم.