文章閱讀

Asterisk 安全設定

以下是在設置 Asterisk 時,對於系統安全性強化的建議作法:

  1. 不要允許任何 IP 位址來源的 SIP 認證要求
    在 sip.conf 的 "permit=" 不要設為 0.0.0.0。
  2. 在 sip.conf 設定 "alwaysauthreject=yes", "allowguest=no"
    這些參數可以拒絕未認證的通話要求。
    # asterisk -rx "sip show settings" | grep -i "always auth rejects"
    # asterisk -rx "sip show settings" | grep -i "allow unknown access"
  3. 加強 SIP 密碼的強度
    不要使用那些懶人密碼,比如 1234、abcd、與分機號碼相同等等。建議規則至少八碼,並且夾雜英文字及數字。
  4. 封鎖系統 AMI manager port
    在 manager.conf 使用 "permit=" 及 "deny=" 限制不必要的連線,及增加密碼強度,至少要有 12 碼,並夾雜英文及數字。強烈建議不要允許外部網路連接
  5. 允許一個 SIP 分機在同一時間只能有一個或兩個通話
    這樣設置可降低有人利用分機作暴力,在 sip.conf 加上 call-limit=1 參數。
  6. 不要使分機名稱與分機號碼相同
    分機號碼是註冊用的 ID,而分機的名稱較容易曝露在網路上,當兩者設定相同時,註冊 ID 就很容易被猜出來。
    也可以使用 MD5 密碼。
  7. 確保預設 context 是安全的
    仔細檢查 /etc/asterisk/extensions.conf,如果系統有收到未經允許的來電時,會執行 [default] 的 dialplan。
    在 FreePBX 請改成 [from-sip-external],內容參考如下:
    exten => _.,1,NoOp(Received incoming SIP connection from unknown peer to ${EXTEN})
    exten => _.,n,Set(DID=${IF($["${EXTEN:1:2}"=""]?s:${EXTEN})})
    exten => _.,n,Hangup
    exten => h,1,Hangup
    exten => i,1,Hangup
    exten => t,1,Hangup

    這個指令可以查出預設 context
    #asterisk -rx "sip show settings" | grep -i context

  8. 連線使用 type=peer 認證方式
    不管是分機或與 provider 的連線,若環境條件予許下(所有連線都必須是固定IP),盡可能的全部都使用 peer 方式連線,對於 Asterisk 就可以有更安全的保護。
    FreePBX 的設定方式:
    - 不管是在 Extension 或 Trunk,必須使用 type=peer 及 host=對方 IP;切勿使用 host=dynamic。
    - 新增參數 allowguest=no 在 sip_general_custom.conf,檢查系統狀態:
    #asterisk -rx "sip show settings" | grep -i "Allow unknown access"
    -> 結果必須是 No
  9. 變更所有的預設密碼
    這項主要是針對有裝 freePBX 或其他 UI 的版本,包含有 Trixbox/PIAF/Elastix/AsteriskNow。
  10. 關閉 FOP 服務
    這個服務會使內部的分機號輕易的暴露在公用網路上,並且若遭遇密碼暴力攻擊時,會造成系統超過負載。
    編輯 /etc/amportal.conf,修改 FOPRUN=false
  11. 關閉 FreePBX 的 Allow Anonymous Inbound SIP Calls
    開啟 FreePBX > Global Settings > Allow Anonymous Inbound SIP Calls,務必將此項設為 no。
  12. 修改 Asterisk 預設的識別 - useragent
    安裝後的 Asterisk 都會有一個識別名稱為 Asterisk +版本號,其他發行套件 Trixbox/PIAF/Elastix 也都會有固定的識別名稱,這個名稱很容易就可以透過遠端網路來取得,建議修改成與軟體無任何關係的名稱。
    編輯 /etc/asterisk/sip_general_custom.conf
    useragent=MyPBX
  13. 關閉 SIP 以外沒用到的模組
    編輯 /etc/asterisk/modules.conf,加上以下的內容。(除了 SIP 服務,其餘全部關閉)
    ; Don't load skinny (tcp port 2000)
    noload => chan_skinny.so
    ; Don't load MGCP (udp port 2727)
    noload => chan_mgcp.so
    ; Don't load dundi (udp port 4520)
    noload => pbx_dundi.so
    ; Don't load unistim (udp port 5000)
    noload => chan_unistim.so
    ; Don't load ooh323 (tcp port 1720)
    noload => chan_ooh323.so
    ; Don't load IAX2 (udp port 4569)
    noload => chan_iax2.so
    ; Don't load LDAP
    noload => res_config_ldap.so

重大安全威脅

  • [2011-6-3] 連 Fail2Ban 都無法阻擋的攻擊方式,當攻擊者在未註冊狀態下直接撥 Asterisk 的分機時,不管分機存在與否,Asterisk 都不會紀錄來源 IP,以致於無法使用 fail2ban 進行阻擋,攻擊者可藉此做出類似 DDos 攻擊以癱瘓 Asterisk 主機。(目前尚未有合適的解決方案 可修改dialplan 來改善)

建議方案

最新文章

  1. Linux vi 操作命令整理
  2. Linux下grep命令
  3. IE7下,input元素相对父级元素错位解决办法
  4. CLH锁 、MCS锁
  5. JavaScript学习笔记(10)——JavaScript语法之操作DOM
  6. asp:手机扫描二维码跳转手机版
  7. HDU1007 Quoit Design 【分治】
  8. MySQL建立外键(Foreign Key)
  9. markdown 转义字符
  10. 用echarts写的multiple-trees demo
  11. JS基础学习3
  12. wpf 命令
  13. MyBatis-CURD
  14. Flask最强攻略 - 跟DragonFire学Flask - 第十篇 before_request after_request
  15. 【Java】 剑指offer(47) 礼物的最大价值
  16. topcoder srm 515 div1
  17. [从零开始搭网站六]为域名申请免费SSL证书(https),并为Tomcat配置https域名所用的多SSL证书
  18. 第二阶段Sprint9
  19. 《剑指offer》第十二题(矩阵中的路径)
  20. js前台遍历后台返回的Datatable数据

热门文章

  1. js 创建对象的几种方法
  2. msf客户端渗透(六):抓包、搜索文件、破解弱口令、修改MACE时间
  3. arachni安装使用
  4. Mysql 表约束 非空、唯一、主键、自增长、默认、外键约束(基础6)
  5. django admin后台设置
  6. wordpress smtp发送邮件
  7. Trigger,Cursor
  8. STL-stack和顺序栈实现括号匹配
  9. TZOJ 3481 Highway Construction(树的直径+最短路)
  10. java 基础之--java动态代理