Asterisk 的安全性
內容表格
- 1. Asterisk 安全設定
- 2. 重大安全威脅
- 3. 建議方案
- 4. 延伸閱讀
文章閱讀
Asterisk 安全設定
以下是在設置 Asterisk 時,對於系統安全性強化的建議作法:
- 不要允許任何 IP 位址來源的 SIP 認證要求
在 sip.conf 的 "permit=" 不要設為 0.0.0.0。 - 在 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" - 加強 SIP 密碼的強度
不要使用那些懶人密碼,比如 1234、abcd、與分機號碼相同等等。建議規則至少八碼,並且夾雜英文字及數字。 - 封鎖系統 AMI manager port
在 manager.conf 使用 "permit=" 及 "deny=" 限制不必要的連線,及增加密碼強度,至少要有 12 碼,並夾雜英文及數字。強烈建議不要允許外部網路連接。 - 允許一個 SIP 分機在同一時間只能有一個或兩個通話
這樣設置可降低有人利用分機作暴力,在 sip.conf 加上 call-limit=1 參數。 - 不要使分機名稱與分機號碼相同
分機號碼是註冊用的 ID,而分機的名稱較容易曝露在網路上,當兩者設定相同時,註冊 ID 就很容易被猜出來。
也可以使用 MD5 密碼。 - 確保預設 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 - 連線使用 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 - 變更所有的預設密碼
這項主要是針對有裝 freePBX 或其他 UI 的版本,包含有 Trixbox/PIAF/Elastix/AsteriskNow。 - 關閉 FOP 服務
這個服務會使內部的分機號輕易的暴露在公用網路上,並且若遭遇密碼暴力攻擊時,會造成系統超過負載。
編輯 /etc/amportal.conf,修改 FOPRUN=false - 關閉 FreePBX 的 Allow Anonymous Inbound SIP Calls
開啟 FreePBX > Global Settings > Allow Anonymous Inbound SIP Calls,務必將此項設為 no。 - 修改 Asterisk 預設的識別 - useragent
安裝後的 Asterisk 都會有一個識別名稱為 Asterisk +版本號,其他發行套件 Trixbox/PIAF/Elastix 也都會有固定的識別名稱,這個名稱很容易就可以透過遠端網路來取得,建議修改成與軟體無任何關係的名稱。
編輯 /etc/asterisk/sip_general_custom.conf
useragent=MyPBX - 關閉 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
重大安全威脅
建議方案
- [Digium] Seven Steps to Better SIP Security with Asterisk
- Automatically Block Failed SIP Peer Registrations
用 perl 開發的 script,以排程定時執行,過濾 Asterisk Logs 未註冊成功訊息的來源 IP 位址,以 iptables 阻擋。 - Fail2Ban - 用 Python 語言開發,以分析應用程式的日誌檔,符合關鍵字的用 iptables 修改防火牆規則。
- Fail2Ban (with iptables) And Asterisk
- fail2ban::Asterisk
- Install Fail2Ban on Elastix 1.6 - Securing Your trixbox Server
- OSSEC - 開放原始碼 主機入侵偵測系統,運作原理有日誌檔分析、檔案完整性檢查、安全政策監控、rootkit 偵測。
- OSSEC Module for FreePBX
- [OSSLab] OSSEC & FreePBX - CSF(ConfigServer Security & Firewall) - 這是用來保護/監視 Linux 主機的軟體,常被用在以 Linux 作 Hosting 的保護措施,操作介面可以整合在 cPanel, DirectAdmin, Webmin。
- Asterisk 用 TLS 加密 SIP
- SIPS on Asterisk – SIP security with TLS
- [Digium] Secure Calling Tutorial
- [Digium] Asterisk SIP/TLS Transport
- Asterisk 用 SRTP 加密 RTP
- Asterisk sRTP installation and configuration
- HOW TO Add Secure RTP to Asterisk 1.8
- Asterisk sRTP with 1.8
- Asterisk-SRTP移植心得 - 系統安全檢測工具-sipvicios
- 官網:http://code.google.com/p/sipvicious/
- Hacking and securing your Asterisk server - IPTables
- FreePBX 官方建議
Asterisk 的安全性的更多相关文章
- 开源软件架构总结之——Asterisk(DSL、组件、多线程)
Asterisk 1是基于GPLv2协议发布的一款开源电话应用平台.简单地说,这是一个服务端程序,用于处理电话的拨出.接入以及自定义流程. 一个人使用电话A呼叫另一个使用电话B的人.在此场景下,连接到 ...
- WCF之安全性
WCF 客户端代理生成 通过SvcUtil.exe http://www.cnblogs.com/woxpp/p/6232298.html WCF 安全性 之 None http://www.cnbl ...
- 线程安全性:num++操作为什么也会出问题?
线程的安全性可能是非常复杂的,在没有充足同步的情况下,由于多个线程中的操作执行顺序是不可预测的,甚至会产生奇怪的结果(非预期的).下面的Tools工具类的plus方法会使计数加一,为了方便,这里的nu ...
- WebApi安全性 使用TOKEN+签名验证
首先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候,会面临着许多的安全性问题, ...
- 数据库---实验四 oracle的安全性和完整性控制
实验内容: (一) 授权 . 以dba用户的身份登陆oracle,创建用户u1+学号后四位,u2+学号后四位. SQL> create user u1_3985 identified by &q ...
- 关于i++引出的线程不安全性的分析以及解决措施
Q:i++是线程安全的吗? A:如果是局部变量,那么i++是线程安全. 如果是全局变量,那么i++不是线程安全的. 理由:如果是局部变量,那么i++是线程安全:局部变量其他线程访问不到,所以根本不存在 ...
- 如何解决例如i++的线程不安全性
AtomicBoolean.AtomicInteger.AtomicLong.AtomicReference 各种原子性关键字,可以解决比如i++的线程不安全性的因素
- RESTful Api 身份认证安全性设计
REST是一种软件架构风格.RESTful Api 是基于 HTTP 协议的 Api,是无状态传输.它的核心是将所有的 Api 都理解为一个网络资源.将所有的客户端和服务器的状态转移(动作)封装到 H ...
- SalesForce 记录级别安全性
对象级安全性 简档 对象级安全性提供了控制 Salesforce.com 中数据的最简单方式.使用对象级安全性 您可以防止用户查看.创 建.编辑或删除特殊类型对象的任何实例 如潜在客户或业务机会.对象 ...
随机推荐
- Winform开发框架之简易工作流设计(转自 伍华聪博客)
Winform开发框架之简易工作流设计 一讲到工作流,很多人第一反应就是这个东西很深奥,有时候又觉得离我们较为遥远,确实完善的工作流设计很多方面,而正是由于需要兼顾很多方面,一般通用的工作流都难做到尽 ...
- poj2912(带权并查集+枚举)
题目链接:http://poj.org/problem?id=2912 题意:给n个人,m组关系,玩石头剪刀布的游戏,n个人中除一个人judge以外,其他人属于3个group(即石头.剪刀.布),他们 ...
- 第二章 向量(d2)有序向量:二分查找
- unity实现3D物体上的事件监听处理
想要在3D物体上实现全套事件监听处理: OnMouse系列 OnTrigger系列 OnPointer系列 OnDrag系列 1.在相机中添加Physics Raycaster组件 2.3D物体上 ...
- http://ctf.bugku.com/challenges#Timer(%E9%98%BF%E9%87%8CCTF):Bugku——Timer(阿里CTF)
做了第一个android apk逆向题,很多工具啥的还没用过,再接再厉. 找到方法发现这个apk支持的SDK API是15-17,于是就下载了API 16并制作了模拟器,但发现还是运行不起来, ...
- 如何在比较1.5 len的次数下,找到整型数组最大最小值
2016-11-11 #include <iostream> #include<stdlib.h> #include<stdio.h> using namespac ...
- Delphi: TLabel设置EllipsisPosition属性用...显示过长文本时,以Hint显示其全文本
仍然是处理多语言中碰到问题. Delphi自2006版以后,TLabel有了EllipsisPosition属性,当长文本超过其大小时,显示以...,如下图: 这样虽然解决显示问题,但很显然,不知道. ...
- pthreads v3下的同步处理synchronized
之所以会用到同步,是因为如果多个线程中对同一个资源进行操作时,会发生混乱. 比如2个线程对变量进行加1操作,第1个线程还没来的及改写数据时,第2个线程就对变量进行操作了,那变量最终的结果就是未知的,这 ...
- Aspose.Words三 创建表格
创建表格,实现合并行.和并列.表居中.表格水平和垂直居中.设置单元格边框颜色和样式. string templateFile = Server.MapPath("table_templ.do ...
- Sqlserver的身份验证模式
1.服务器名称: . 在服务器名称这里,我们有以下几种选择来连接到本地: (1)默认的服务器名称:也就是电脑主机的名称 (2)".",“.”就表示主机. (3)localhost ...