
به اشتراک بگذارید

به اشتراک بگذارید
خط Wrong password برای داخلی ۱۰۱، ساعت سه بامداد در لاگ Asterisk، یعنی کسی رمز را حدس میزند. از این خط به بعد، امنیت ایزابل مسئلهای مالی است. صاحب سانترال معمولاً نگران داده است. خسارت اصلی اما قبض تماس است: اسکنر داخلیها را میشمارد، رمز ضعیف را میزند و شبانه مقصدهای گران را میگیرد. چهار مانع جلویش میایستد: رمز قوی، فهرست مجاز IP، زندان Fail2ban و رمز روی مسیر خروجی.
| مرحله حمله | ردپا در لاگ | مانع |
|---|---|---|
| شناسایی سرور | سربرگ User-Agent با مقدار friendly-scanner | فایروال و محدودیت IP |
| شمارش داخلیها | «No matching endpoint found» یا «No matching peer found» | پاسخ یکسان به نام درست و نادرست |
| حدس رمز | «Wrong password» یا «ChallengeResponseFailed» | رمز قوی و زندان Fail2ban |
| تماس خروجی جعلی | «Rejecting unknown SIP connection» یا ردیف مشکوک در گزارش تماس | رمز مسیر و سقف اعتبار ترانک |
| تکرار همان چهار گام | همان IP بارها در لاگ | بن ۱۲ ساعته زندان و پایش گزارش |
💡 چرا قبض، اولین نشانه است
سرویس وصل میماند و مهاجم همزمان با کارمندها از همان سانترال با مقصدهای گران تماس میگیرد؛ از بیرون چیزی غیرعادی دیده نمیشود.
✅ قبل از قبض، گزارش تماسهای ساعت تعطیل را بخوانید؛ نشت همانجا پیداست.
فایروال فهرستمحور و جداسازی کانتکستی که موقع نصب ایزابل روی سرور مجازی گذاشتهاید، مرز سانترال شما هستند. مهاجم همین مرزها را هر شب میآزماید. حمله ترتیب ثابتی دارد و هر گام یک خط در لاگ میگذارد. هر چه زودتر زنجیره را قطع کنید، خسارت کمتر است.
📌 مسیر مهاجم در سانترال
◀️ زنجیره حمله روی SIP
◀️ زندان Fail2ban و لاگ Asterisk
◀️ رمز قوی داخلی و محدودیت IP
◀️ سقف هزینه و رمز مسیر خروجی

مهاجم چهار گام برمیدارد: سرور را پیدا میکند، داخلیها را میشمارد، رمز یکی را میزند و خط خروجی میگیرد. شب بعد همین را تکرار میکند. امنیت ایزابل به شکستن فقط یکی از این چهار حلقه بند است. تماس جعلی بدون هر چهار گام به نتیجه نمیرسد.
مجموعه SIPVicious ابزار متداول این کار است؛ طبق مستندات پروژه، svmap سرور را پیدا میکند، svwar داخلیها را میشمارد و svcrack رمز را امتحان میکند. از دید مدافع، همه اینها رشتهای از درخواست ناموفق در لاگ است.
🔸 امضای اسکنر در لاگ
در کد SIPVicious مقدار پیشفرض سربرگ User-Agent رشته friendly-scanner است. ابزار میتواند این مقدار را عوض کند، پس ندیدنش دلیل امنیت نیست. این سربرگ را با pjsip set logger on در کنسول Asterisk میبینید.

زندان asterisk در Fail2ban لاگ Asterisk را میخواند و IP منبعی را که پیاپی در احراز هویت شکست میخورد بن میکند. اگر زندان فایل درست را نخواند، امنیت ایزابل فقط ظاهری است و هیچ مهاجمی بن نمیشود.
طبق مستندات ایزابل، قوانین Fail2ban هنگام نصب اضافه میشوند و در پنل از مسیر Security → Fail2Ban دیده میشوند؛ اگر سرویس خاموش است، روشنش کنید. فایل jail.d/issabel.conf زندان asterisk را با maxretry = 5 و bantime = 43200 (۱۲ ساعت) فعال میکند و زندان جدای asterisk-ami هم دارد. فیلتر در /etc/fail2ban/filter.d/asterisk.conf است و زندان، فایل /var/log/asterisk/messages را میخواند.
# خط لاگ: Registration from '<sip:101@...>' failed for '203.0.113.45:5060' - Wrong password
# الگوی فیلتر: failed for '<HOST>(:\d+)?' - (?:Wrong password|...)
# خط لاگ: SecurityEvent="ChallengeResponseFailed",... RemoteAddress="IPV4/UDP/203.0.113.45/5060"
# الگوی فیلتر: SecurityEvent="(?:...|ChallengeResponseFailed|...)",... RemoteAddress="IPV[46]/[^/"]+/<HOST>/\d+"
خط اول کار chan_sip است و خط دوم رویداد امنیتی. PJSIP هر احراز ناموفق را با خط «Failed to authenticate» در سطح NOTICE هم ثبت میکند و فیلتر آن را هم میگیرد.
در نصب تازه ایزابل، ماژول Asterisk Logfile Settings سطح لاگ security را در فایل messages هم روشن میکند. با grep SECURITY /var/log/asterisk/messages وجود این خطها را بسنجید. اگر خالی بود، سطح security را در همان ماژول برای messages روشن کنید، نه برای فایلی جدا، چون زندان فایل جدا را نمیخواند. سپس fail2ban-client status asterisk فهرست IPهای بنشده را نشان میدهد؛ در پنل هم صفحه Banned IPs هست.
⚠️ زندانی که لاگ اشتباه را میبیند یا دفتر خودتان را میبندد
دو خطای رایج: فایل لاگ زندان با جایی که Asterisk مینویسد فرق دارد، پس زندان چیزی نمیبیند؛ یا نشانی دفتر در ignoreip نیست و اولین اشتباه رمز کارمند، IP خودتان را بن میکند. فهرست ignoreip را هم مرور کنید و هر نشانی ناآشنا را حذف کنید.
ضعیفترین داخلی، کف امنیت ایزابل را تعیین میکند. مهاجم فقط به یک داخلی با رمز قابلحدس نیاز دارد تا خط خروجی بگیرد. سه کار این دروازه را میبندد: رمز قوی، پاسخ یکسان به نام کاربری درست و نادرست، و فهرست مجاز IP.
ایزابل رمز داخلی را دستکم شش کاراکتر با حداقل دو حرف و دو رقم میخواهد. صفحه Security → Weak Keys فهرست رمزهای ضعیف موجود را میآورد. در chan_sip گزینه alwaysauthreject پیشفرض yes است: درخواست ردشده همیشه یک پاسخ میگیرد و مهاجم نمیفهمد نام کاربری درست بوده یا نه. ایزابل این گزینه و allowguest=no را خودش در تنظیمات عمومی SIP مینویسد. در PJSIP این رفتار توکار است و طبق توضیح کد، گزینه جدایی ندارد.
اگر داخلی جای ثابتی دارد، دسترسیاش را به همان نشانی محدود کنید. فرم داخلی chan_sip در ایزابل فیلدهای Permit و Deny دارد که پیشفرضشان 0.0.0.0/0.0.0.0 است، یعنی همه نشانیها. در PJSIP شیء type=acl با کلیدهای permit، deny و contact_acl (از Asterisk 12.2.0) روی همه ترافیک ورودی SIP اعمال میشود. برای شعبه، یک آیپی اختصاصی و ثابت این فهرست را دقیق میکند.
رابط AMI در ایزابل روشن است و پنل به آن نیاز دارد، پس خاموشش نکنید. فایل manager.conf ایزابل enabled = yes و bindaddr = 0.0.0.0 روی پورت 5038 دارد. اگر برنامهای از بیرون سرور به AMI وصل نمیشود، bindaddr را 127.0.0.1 کنید. کاربر admin با permit و deny به localhost محدود است؛ همین را نگه دارید. رمز آن از AMPMGRPASS در amportal.conf میآید و اگر پیشفرض مانده، رمز قوی بگذارید.
⚠️ پنل و AMI باز روی اینترنت
رابط AMI باز روی نشانی عمومی یعنی هر کس رمز را بزند کنترل تماسها را دارد؛ پنل وب باز هم صفحه ورود را در معرض حمله رمز میگذارد. پورت 5038 و پنل را در Security → Firewall فقط برای نشانی مدیران باز کنید.

بنکردن مهاجم، امنیت ایزابل را کامل نمیکند؛ خسارت را هم باید سقفدار کرد. کارت سوخت شرکت که شبانه در شهری دیگر کشیده میشود با سقف روزانه و ساعتهای مجاز مهار میشود، و خط خروجی سانترال با رمز مسیر، ساعت کاری و سقف اعتبار ترانک.
هر مسیر خروجی ایزابل گزینه Route Password دارد. طبق متن ماژول، مسیر پیش از وصل تماس رمز میخواهد تا تماس به مقصد بینالملل یا شمارههای گران محدود شود. مقدار آن یک رمز عددی است یا مسیر یک فایل رمز. Asterisk این رمز را با Authenticate میگیرد و پس از سه تلاش ناموفق خط را قطع میکند. برای چند کاربر، ماژول PIN Sets فهرست رمز میسازد. گزینه Time Group هم مسیر را بیرون از ساعت کاری نادیده میگیرد؛ مسیر بینالملل را به ساعت اداری ببندید.
گزارش تماس سه ردپا را نشان میدهد: تماس خروجی در ساعت تعطیل، تکرار به مقصد ناآشنا و جهش ناگهانی تماس همزمان.
💡 گزارش تماس کجاست
در پنل از مسیر Reports → CDR Report. روی سرور، اگر ماژول cdr_csv بار شده باشد، فایل /var/log/asterisk/cdr-csv/Master.csv. واکنش را از قبل بچینید تا آن صبح وقت تلف نشود: داخلی مشکوک خاموش، رمز تازه، الگوی مقصد بسته.
سریعترین ترمز بیرون از سانترال، سقف اعتبار ترانک است و فقط ارائهدهنده میتواند آن را بگذارد. از ارائهدهنده بپرسید سقف اعتبار یا فهرست مقصد مجاز دارد یا نه. اگر دارد، همین امروز فعالش کنید.
صبحی که ارائهدهنده ترانک درباره قبضی غیرعادی زنگ زد، نمیدانستید از کجا شروع کنید. اولین جواب آن صبح در گزارش تماس ساعتهای تعطیل بود.
از گزارش تماس. تماس بیرون از ساعت کاری، تکرار به مقصد گران ناآشنا یا جهش تماس همزمان نشانه نشت است. در پنل مسیر Reports → CDR Report را ببینید.
دارد. قوانین Fail2ban هنگام نصب ایزابل اضافه میشوند و در Security → Fail2Ban دیده میشوند. کار شما فقط سنجیدن روشن و درست بودن آن است.
در chan_sip گزینه alwaysauthreject پیشفرض yes است تا مهاجم نفهمد نام کاربری درست بوده یا نه. در PJSIP همین رفتار توکار است و گزینه جدا ندارد.
ایزابل دستکم شش کاراکتر با حداقل دو حرف و دو رقم میخواهد. رمز نباید قابلحدس یا برابر شماره داخلی باشد؛ صفحه Weak Keys رمزهای ضعیف را نشان میدهد.
زندان asterisk فایل /var/log/asterisk/messages را میخواند. در ایزابل سطح security بهطور پیشفرض در همین فایل است؛ با grep SECURITY روی آن بسنجید و اگر نبود، در Asterisk Logfile Settings برای messages روشنش کنید.
برای مسیر بینالملل گزینه Route Password را پر کنید؛ Asterisk پس از سه تلاش ناموفق خط را قطع میکند. برای چند کاربر از ماژول PIN Sets استفاده کنید.
مسیری که با / شروع شود، در مستندات Authenticate فایلی است با یک رمز ساده در هر خط. فهرست کد و هش فقط با گزینه m خوانده میشود و ایزابل Authenticate را بدون گزینه صدا میزند.
رابط AMI را خاموش نکنید، چون پنل به آن نیاز دارد. آن را به 127.0.0.1 ببندید، permit و deny را روی localhost نگه دارید و رمز قوی بگذارید. پورت 5038 و پنل را در Security → Firewall فقط برای مدیران باز کنید.
بله. فایروال جلوی نشانیهایی را میگیرد که از پیش بستهاید؛ Fail2ban نشانیای را که بارها رمز اشتباه میزند خودکار بن میکند. هر دو را روشن نگه دارید.
جمعبندی؛ امنیت ایزابل زنجیرهای است که در نخستین حلقه ممکن میشکند حمله همان چهار گام همیشگی است و هر گام مانع و ردپای خودش را دارد. فایروال و فهرست مجاز IP اسکنر را از سرویس دور نگه میدارد. رمز قوی و پاسخ یکسان، شمارش و حدس را بیاثر میکند. زندان Fail2ban را به messages وصل نگه دارید و نشانی دفتر را در ignoreip بگذارید تا فقط مهاجم بن شود. AMI را روشن اما محدود نگه دارید. چون هیچ دیواری کامل نیست، مسیر خروجی را پشت رمز و ساعت کاری بگذارید و گزارش تماس را هر هفته بخوانید تا نشت پیش از رسیدن قبض در لاگ دیده شود.
🚀 دیوارها کجا کشیده میشوند
رمز مسیر خروجی آخرین قفل است؛ قفل اول، کانتکستی است که تماس ناشناس را اصلاً به مسیر خروجی نمیرساند.
در لاگ خودتان کدام شماره داخلی بیشترین خط ثبت ناموفق را دارد؟ رمز همان داخلی را پیش از همه عوض کنید؛ مهاجم از آن شروع کرده است.
منابع