احتمالاً تا به حال به بسیاری از افراد برخورده‌اید که سیستم تلفنی Asterisk آنها هک شده است و مجبور به پرداخت میلیون‌ها تومان به مخابرات شده‌اند و یا حتی شاید خودتان قربانی این حملات بوده‌اید، یک سرور VOIP همانند هر سرور دیگری نیاز به امن شدن دارد با این تفاوت که سرورهای VOIP با توجه به ارزش بسیار بالای ترافیک تلفنی بین‌الملل دارای جذابیت بسیار زیادی برای هکرها هستند. بسیاری از هک‌های سیستم‌های تلفنی توسط روبات‌ها صورت می‌گیرند و آن‌ها با سیستم‌های کد بار کاملاً آشنا هستند، در صورتی که سیستم Asterisk خود را بر روی اینترنت قرار بدهید نیازی به بد شانسی برای هک نیست! قطعاً در یک بازه زمانی هک خواهید شد، پس فراموش نکنید سرور تلفنی خود را هرگز به اینترنت بدون محافظ و در نظر گرفتن نکات ایمنی متصل نکنید. علاوه بر زیان بسیار مالی که خواهید کرد، این تلفن‌ها ممکن است شما یا شرکت شما را نیز به واسطه تماس‌هایی که گرفته می‌شود، درگیر موارد امنیتی، پلیسی کند که متأسفانه این اتفاق بسیار زیاد رخ می‌دهد فقط به این خاطر که نصب این سیستم‌ها توسط افراد غیر حرفه‌ای صورت می‌پذیرد. اگر خود، متخصص Elastix هستید حتماً موارد و نکات زیر را در نظر بگیرید و اگر به عنوان یک کارفرما و یا علاقه‌مند این مطلب را می‌خوانید هرگز راه‌اندازی سیستم تلفنی خود را به اشخاص یا شرکت‌های غیر تخصصی VOIP نسپارید و حتماً در مورد امنیت سرور جویا شوید. اما نکات کلیدی زیر که می‌بایست همه این موارد را بر روی سرور Asterisk خود از قبیل Elastix ، Vaak، ایزو استریسک AsteriskNow و یا Freepbx اعمال نمایید از این قرار است:


نکته اول: استفاده از IPTables در Linux:

اگر از ایزو Asterisk استفاده کنید به طور حتم روی Linux هستید! فایروال Linux که به نام IPTables شناخته می‌شود بر روی اکثر Linuxها به صورت پیش فرض وجود دارد، وظیفه این سرویس حیاتی بستن پورت‌های شبکه برای همه IPهای بیرونی و یا دسترسی دادن فقط به یک گروه IP خاص است، اگر Elastix دارید منوی security در واقع همین IPTables در Linux است پس کار شما برای تغییر ruleها ساده است، اما اگر ISOهای دیگر را دارید با نصب برنامه webmin کار با این سرویس را به صورت گرافیکی انجام دهید و اگر Linux کار حرفه‌ای هستید می‌توانید با کامند برای IPTables قانون بنویسید. نکته مهم این است که بدانید چه پورت‌هایی را سیستم شما نیاز دارد تا از کار نیافتد.


الزامی:

- پروتکل SIP: پورت 5060 بر روی tcp و udp- پروتکل RTP: پورت 10000 تا 20000 بر روی udp
- پروتکل IAX2: پورت 4569 بر روی udp


اختیاری:

- دسترسی محیط وب: پورت 443 بر روی tcp
- دسترسی SSH: پورت 22 بر روی tcp


نکته دوم: تغییر پورت‌های شبکه رایج

پورت‌های برنامه‌های معروف را تغییر دهید، این کار می‌تواند تا حد بسیاری شما را از دست سیستم‌های هک اتوماتیک خلاص کند، از پورت‌های معروف و مورد استفاده می‌توانید به موارد زیر اشاره کرد.

- http:80
- ssl:443
- ssh:22

فراموش نکنید وقتی آن‌ها را تغییر می‌دهید بهتر است یک پورت 4 رقمی و غیر آشنا انتخاب کنید، مثلاً پورت 22 را به 2222 تغییر ندهید!


نکته سوم: استفاده از NAT

NAT دوست شما است! از آن حتماً استفاده کنید، یعنی سرور خود را برای دسترسی به اینترنت، پشت NAT قرار دهید یا به عبارتی دسترسی از روی اینترنت به سرور شما مستقیم نباشد و از یک واسط استفاده شود، البته فراموش نکتید وقتی سرور پشت NAT قرار می‌گیرد باید مراقب ملاحظات پروتکل SIP نیز باشید.


نکته چهارم: استفاده از Fail2Ban

برنامه Fail2Ban برای جلوگیری از هک کاربر و رمز یک سیستم به واسطه تست صحیح و خطا تولید شده است، با سرویس‌ها و برنامه‌های مختلفی کار می کند، Log آن‌ها را خوانده و در صورتی که ببینید کسی در حال سعی برای یافتن رمز یک کاربر است IP آدرس فرد را تا مدت زمان دلخواه شما به واسطه IPTables مسدود می‌کنید. در دل این برنامه الگوریتم خواندن Logهای Asterisk 11 نیز وجود دارد و نیاز زیادی به تغییرات نیست، Fail2Ban خیال شما را از این بابت راحت می‌کند، این برنامه را از این سایت بگیرید.


نکته پنجم:  اجازه ندهید داخلی شما از روی هر IP آدرسی رجیستر شود

اگر در Elastix و Freepbx یک داخلی بسازید، یکی از پارامترهای آن permit و دیگری deny است، که می‌توانید یک IP خاص و یا یک محدوده آدرس تعیین نمایید تا فقط در صورتی که داخلی از روی این IPها درخواست رجیستر شدن ارسال کرد Asterisk مجوز آن را بدهد. با این کار اگر داخلی و رمز آن به سرقت برود دیگر کسی از IP آدرس‌های غیر مجاز، نمی‌تواند با آن داخلی رجیستر شود، فرمت وارد کردن IP آدرس‌ها به شکل زیر است:

permit=<ipaddress>/<network mask>

deny=<ipaddress>/<network mask>


نکته ششم: از Outboundهای خود محافظت کنید

می‌دانید Outboundها در واقع راه‌های خروج از سیستم به سمت یک مخابرات و یا سرویس دهنده‌های اینترنتی هستند، مقاصدی که برای ارسال تمام آن‌ها هزینه زیادی پرداخت می‌کنید، در واقع بخش نگران کننده هک شدن سرور شما همین قسمت است، تمام تلاش را می‌کنیم تا یک هکر به مسیرهای رو به بیرون سیستم تلفنی ما دسترسی پیدا نکند. در یک سیستم Asterisk به خصوص سیستم‌هایی که از Freepbx استفاده می‌کنند، شما در حین تعریف یک Outbound Route می‌توانید مواردی را درنظر بگیرید که کار یک هکر را سخت‌تر کند به عنوان مثال:

1. برای Outbound Routeهای خود رمز بگذارید.

2. Outbound Route های خود را فقط برای افراد محدودی قابل استفاده کنید، این کار به واسطه کاراکتر / در Dial Patternنویسی امکان‌پذیر است.

3. Outbound Routeهای خود را فقط برای یک بازه زمانی خاص فعال کنید، این امکان به واسطه Time Group Asterisk امکان‌پذیر است. نیازی نیست مسیر تماس‌های بین‌الملل (00) شرکت شما در شب نیز که کسی در محل کار نیست فعال باشد!


نکته هفتم: استفاده از رمزهای عبور خفن!

بابت کلمه خفن ببخشید! می‌خواستم از کلمه قوی استفاده کنم ولی دیدم معمولاً کسی به این نکته دقت نمی‌کند خواستم تأکید بیشتری کرده باشم، شما با همین نکته بسیار ساده جلوی بسیاری از هکرهای Bot (اتوماتیک) را می‌گیرید، به همین سادگی، فقط هنگام تعریف رمز روی اعصاب خود مسلط باشید! یک رمز قوی تا این لحظه یعنی سال 2015 یک کلمه ترکیبی از عدد، حروف (کوچک و بزرگ)، نشانه و با طول حداقل 12 کاراکتر است، اگر فکر می‌کنید سخت است کافی است آن را با کلماتی بسازید که در ذهن شما می‌ماند و برای انتخاب رمز بعدی از همین الگوریتم استفاده نمایید، مثلاً من می‌خواهم برای داخلی‌های Asterisk خود رمز بگذارم.

داخلی 1101 رمز: GoRbEYeChAgH@!1101

داخلی 1102 رمز: GoRbEYeChAgH@!1102

داخلی 1103 رمز: GoRbEYeChAgH@!1103

می‌بینید، حفظ کردن همه رمزها ساده است حتی اگر 1000 تا داخلی بسازم در حالی که رمز من بسیار پیچیده است.


 نکته هشتم: تعداد مکالمات همزمان امکان‌پذیر را کاهش دهید.

در Elastix 2.5 یا بهتر است بگویم روی Asterisk 11 این امکان وجود دارد که شما به راحتی تعداد مکالماتی که یک داخلی به طور همزمان می‌تواند انجام دهد را محدود نمایید، شاید یک داخلی اگر روی یک گوشی 4 خطه هم باشد باز به بیش از 4 امکان تماس به بیرون در آن واحد نیاز نداشته باشد خود هنگام تعریف داخلی کافی است گزینه Outbound Concurrency Limit را با عدد دلخواه پر کنید. همین‌طور در بحث Trunkهای نیز می‌توانید در گزینه Maximum Channels تعداد مکالمات هم‌زمان امکان‌پذیر روی Trunk را محدود کنید که این گزینه هم کمک می‌کند در صورتی که هک می‌شوید ضرر زیادی نکنید.


 نکته نهم: logهای خود را همیشه بررسی کنید.

خوشبختانه روی Asterisk 11 که Elastix 2.5 نیز از همین نسخه استفاده می کند، یک نوع log برای امنیت Security در نظر گرفته شده است که در صورت بروز مشکلات امنیتی در Asterisk و log file جزئیات آن با تگ Security درج می‌گردد. خوب حتماً می‌دانید مسیر logهای موجود Asterisk در پوشه: /var/log/asterisk است. اما نکته این جا است که این نوع لاگ به طور پیش فرض در Elastix غیر فعال است و ما باید آن را فعال کنید، برای این منظور راه کار زیر را پیروی کنید:

1. فایل /etc/asterisk/logger_logfiles_custom.conf  را جهت ویرایش باز کنید (می‌توانید از Winscp استفاده کنید)

2. خط زیر را به فایل اضافه نمایید. security => security

3. حال شما در پوشه /var/log/asterisk یک فایل جدید خواهید داشت به نام security که logهای امنیتی شما را نگهداری می‌کند.


 نکته دهم: استفاده از Firewall

همیشه سرور VOIP خود را پشت یک Firewall قوی و حرفه‌ای بگذارید، تمام نکات بالا را انجام دادیم اما یک Firewall خارج از سیستم می‌تواند امنیت ما را تضمین کند، این Firewall باید برای ترافیک VOIP، حملات VOIP و نکات مهم در این تکنولوژی تنظیم شود، پس علاوه بر Firewall به یک متخصص امنیت و آشنا به VOIP نیاز دارید تا این محصول را برای شما به درستی تنظیم کند.


 نکته یازدهم: امن کردن مکالمه با TLS/SRTP

10 نکته قبلی برای مقابله با هکرها بود، کسانی که دنبال نفوذ به سیستم و دزدیدن ترافیک هستند، اما هنوز صحبت‌های شما قابل شنود است و حتی اطلاعات مکالمه ممکن است به راحتی در اختیار افراد قرار گیرد، خوب پروتکل SIP همانند HTTP کاملاً آشکار (Clear) است، شما بر روی Asterisk با امکان TLS پیام‌های کنترلی را رمزگزاری می‌کنید و همچنین با استفاده از SRTP پیام‌های صوتی یا همان صوت را رمزگزاری می‌کنید که دیگر کسی امکان شنود مکالمه را نیز نداشته باشد. کار شما برای راه‌اندازی TLS کمی زیاد خواهد بود، می‌توانید با مقاله داخل wiki در Asterisk این کار را انجام دهید، برای این مورد نیاز به Self Signed Certification است دقیقاً مثل سایت‌های HTTPS. اما راه‌اندازی SRTP راحت است، کافی است شما پس از ساخت داخلی دوباره وارد تنظیمات آن روی سرور بروید و گزینه Encryption را برابر Yes قرار دهید، البته از این لحظه به بعد IPPhone یا Softphone شما نیز باید با SRTP فعال شده اقدام به برقراری تماس کند.


و در آخر باید بدانید این نکات تنها بخشی از امنیت سرور را تأمین می کند، شاید راه ساده و کاربردی استفاده از Firewall تخصصی SIP و VOIP باشد. 


منبع: VOIPIRAN