文章閱讀

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 來改善)

建議方案

Asterisk 的安全性的更多相关文章

  1. 开源软件架构总结之——Asterisk(DSL、组件、多线程)

    Asterisk 1是基于GPLv2协议发布的一款开源电话应用平台.简单地说,这是一个服务端程序,用于处理电话的拨出.接入以及自定义流程. 一个人使用电话A呼叫另一个使用电话B的人.在此场景下,连接到 ...

  2. WCF之安全性

    WCF 客户端代理生成 通过SvcUtil.exe http://www.cnblogs.com/woxpp/p/6232298.html WCF 安全性 之 None http://www.cnbl ...

  3. 线程安全性:num++操作为什么也会出问题?

    线程的安全性可能是非常复杂的,在没有充足同步的情况下,由于多个线程中的操作执行顺序是不可预测的,甚至会产生奇怪的结果(非预期的).下面的Tools工具类的plus方法会使计数加一,为了方便,这里的nu ...

  4. WebApi安全性 使用TOKEN+签名验证

    首先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候,会面临着许多的安全性问题, ...

  5. 数据库---实验四 oracle的安全性和完整性控制

    实验内容: (一) 授权 . 以dba用户的身份登陆oracle,创建用户u1+学号后四位,u2+学号后四位. SQL> create user u1_3985 identified by &q ...

  6. 关于i++引出的线程不安全性的分析以及解决措施

    Q:i++是线程安全的吗? A:如果是局部变量,那么i++是线程安全. 如果是全局变量,那么i++不是线程安全的. 理由:如果是局部变量,那么i++是线程安全:局部变量其他线程访问不到,所以根本不存在 ...

  7. 如何解决例如i++的线程不安全性

    AtomicBoolean.AtomicInteger.AtomicLong.AtomicReference 各种原子性关键字,可以解决比如i++的线程不安全性的因素

  8. RESTful Api 身份认证安全性设计

    REST是一种软件架构风格.RESTful Api 是基于 HTTP 协议的 Api,是无状态传输.它的核心是将所有的 Api 都理解为一个网络资源.将所有的客户端和服务器的状态转移(动作)封装到 H ...

  9. SalesForce 记录级别安全性

    对象级安全性 简档 对象级安全性提供了控制 Salesforce.com 中数据的最简单方式.使用对象级安全性 您可以防止用户查看.创 建.编辑或删除特殊类型对象的任何实例 如潜在客户或业务机会.对象 ...

随机推荐

  1. PO接口表

    ---物料主数据接口 SELECT count(*)PO_MARA FROM STG.PO_MARA; SELECT count(*)PO_MARC FROM STG.PO_MARC; SELECT ...

  2. 2021工厂取消2094仓位需求,不参与FP分析

    正确做法应该是修改这个sSIS NOT IN 2094 目前在不修改SSIS前提下,可以先在进IN表前过滤掉

  3. C#实现将字符串作为表达式运算

    转载:http://blog.csdn.net/lifeforcode/article/details/2010807 曾经有个需求,要把一段字符串作为C#的一段语句来执行.说实在了,就类似实现计算器 ...

  4. GreenDao-自定义SQL查询-AndroidStudio

    /** * 功能:员工查询 * 方法参数: * strEmpIdOrEmpName:员工ID 或者 员工名称 * strQueryType:员工查询类型 "0": "员工 ...

  5. oracle数据库连接不上

    Oracle数据库1521端口telnet不通 现象:服务器的ip地址可以ping通,但是安装oracle过程中的指定的“1521”端口telnet不通过 解决办法:1.确保防火墙对1521端口开启: ...

  6. java面试题:Linux

    Q:Linux怎么查端口?端口被占用怎么办? netstat -ntulp | grep 2181//查看2181端口号 netstat -pan | grep 2181 //查看2181端口号 如下 ...

  7. Idea单元测试Junit Generator设置

    0. setting--->plugins--->brose repostories-->输入JUnitGenerator V2.0 1.junit generator自动生成测试代 ...

  8. SRVE0255E: 尚未定义要处理 ***的 Web 组/虚拟主机。

    原因: 访问的端口未设置,因此无法访问 解决办法: 1.设置端口 控制台-环境-虚拟主机-default_host-主机别名-新建 主机名根据实际情况填写 笔者这里填如下 2.设置好端口后重启对应服务 ...

  9. TZOJ 1321 Girls and Boys(匈牙利最大独立集)

    描述 the second year of the university somebody started a study on the romantic relations between the ...

  10. [剑指Offer]48-最长不含重复字符的子字符串(递归思想,循环实现)

    题意 如题,字符串只含a-z,输出该子串长度.例:"arabcacfr",输出4. 解题思路 递归思想 计f(i)为以第i个字符结尾的最长不含重复字符的子串长度. 状态转移:计d为 ...