概述

freeswitch是一款好用的VOIP开源软交换平台。

VOIP公共网络中的安全问题是最重要的问题,我们必须对网络端口的访问权限做出限制。

ACL全称Access Control List,意为访问控制列表,是一个权限(或规则)列表,列表定义了允许哪些网络实体访问目标对象。

环境

centos:CentOS  release 7.0 (Final)或以上版本

freeswitch:v1.8.7

GCC:4.8.5

acl规则配置

acl规则的配置文件${conf_dir}/autoload_configs/acl.conf.xml,默认配置如下。

<configuration name="acl.conf" description="Network Lists">

<network-lists>

<!--     These ACLs are automatically created on startup.

rfc1918.auto  - RFC1918 Space

nat.auto      - RFC1918 Excluding your local lan.

localnet.auto - ACL for your local lan.

loopback.auto - ACL for your local lan.    -->

<list name="lan" default="allow">

<node type="deny" cidr="192.168.42.0/24"/>

<node type="allow" cidr="192.168.42.42/32"/>

</list>

<!--    This will traverse the directory adding all users

with the cidr= tag to this ACL, when this ACL matches

the users variables and params apply as if they

digest authenticated.    -->

<list name="domains" default="deny">

<!-- domain= is special it scans the domain from the directory to build the ACL -->

<node type="allow" domain="$${domain}"/>

<!-- use cidr= if you wish to allow ip ranges to this domains acl. -->

<!-- <node type="allow" cidr="192.168.0.0/24"/> -->

</list>

</network-lists>

</configuration>

allow表示允许,deny表示拒绝。

acl.conf.xml文件中配置的list名称,可以用于呼叫中的acl鉴权。

该文件有修改时,可以使用命令刷新内存中的acl规则。

reloadacl reloadxml

但是该命令不会刷新新增的acl列表,新增acl列表需要重启fs才能生效。

预设acl规则

fs内置的acl预设规则项(Pre-defined ACLs)。

预设的acl规则项包括如下,可以当作内置变量直接使用。

rfc1918.auto         RFC 1918 Space

nat.auto               RFC 1918, excluding your local LAN

localnet.auto        ACL for your local LAN

loopback.auto      ACL for your local LAN

wan.auto              公网地址

sip配置项

fs支持的sip配置项主要在sip_profile下的配置文件中使用,作用于该端口的所有呼叫控制acl。

apply-inbound-acl,呼入acl规则。

apply-register-acl,注册acl规则。

apply-proxy-acl,代理acl规则。

apply-candidate-acl,webrtc的ice框架下可选媒体地址acl规则。

auth-calls,账户鉴权acl规则,包括inbound和register。

示例如下。

配置conf/sip_profile/external.xml如下,则从5080端口呼入的呼叫来源IP都要符合“inbound-acl”规则。

<param name="apply-inbound-acl" value="inbound-acl"/>

配置conf/sip_profile/internal.xml如下,则从5060端口注册的消息来源IP都要符合“register-acl”规则。

<param name="apply-register-acl" value="register-acl"/>

配置conf/directory/default/10011.xml如下,则10011账户的注册/呼叫消息来源IP都要符合“auth-calls-acl”规则。

<param name="auth-acl" value="auth-calls-acl"/>

呼叫acl配置示例

如果我们希望对呼叫进行acl控制,有俩种常用方案。

方案一,配置conf/sip_profile/external.xml如下,则5080端口呼入的呼叫来源IP都要符合“inbound-acl-001”规则。

<param name="apply-inbound-acl" value="inbound-acl-001"/>

方案二,配置conf/dialplan/test001.xml如下,则所有进入拨号计划“foo-hosts-calls”的呼叫来源IP都要符合“list_foo”规则。

<extension name="foo-hosts-calls">

<condition field="${acl(${network_addr} list_foo)}" expression="true"/>

<condition field="destination_number" expression="(.*)">

<action application="bridge" data="sofia/switchbox/$1@myapp.signalwire.com:5060"/>

</condition>

</extension>

配置“${acl(${network_addr} list_foo)}”中的acl为fs的app接口,acl接口的作用是测试ip是否符合“list_foo”规则。

总结

对于公共网络中的VOIP服务,不管如何强调安全性都不为过,linux服务器本身的防护墙和fs服务的acl规则都要正确配置,尽可能的预防和减少sip扫描的威胁。

空空如常

求真得真

freeswitch的ACL规则的更多相关文章

  1. haproxy利用ACL规则封禁自定义IP地址拒绝访问

    现在有一个需求就是在发版的时候希望除公司IP外的外网访问服务的时候都是拒绝访问的 现在利用haproxy 的acl规则作出限制 errorfile       403 /etc/haproxy/err ...

  2. HAProxy的日志配置以及ACL规则实现负载均衡

    HAProxy配置日志策略 默认情况下,HAProxy是没有配置日志的在centos6.3下默认管理日志的是rsyslog,可以实现UDP日志的接收,将日志写入文件,写入数据库先检测rsyslog是否 ...

  3. haproxy 常用acl规则与会话保持

    一.常用的acl规则 haproxy的ACL用于实现基于请求报文的首部.响应报文的内容或其它的环境状态信息来做出转发决策,这大大增强了其配置弹性.其配置法则通常分为两 步,首先去定义ACL,即定义一个 ...

  4. 如何探测网络设备ACL规则

    探测网络设备ACL规则 背景:在互联网企业的生产网络中,往往在网络入口处的网络设备上会有成千上万条ACL策略,这么多的ACL导致了网络管理员很难彻底梳理清楚其中的逻辑关系,从而不知道到底对外开放了哪些 ...

  5. HAProxy(二):HAProxy的ACL规则实现智能负载均衡详解与示例

    一.HAProxy的ACL的功能 ACL(Access Control List)访问控制列表,HAProxy中的ACL的匹配条件和控制条件有许多种,功能很强大,可以通过源地址.源端口.目标地址.目标 ...

  6. 003.HAProxy ACL规则的智能负载均衡

    一 简介 HAProxy可以工作在第七层模型,可通过ACL规则实现基于HAProxy的智能负载均衡系统,HAProxy通过ACL规则完成以下两种主要功能: 通过ACL规则检查客户端请求是否合法,如果符 ...

  7. 常用的acl规则

    一.常用的acl规则        haproxy的ACL用于实现基于请求报文的首部.响应报文的内容或其它的环境状态信息来做出转发决策,这大大增强了其配置弹性.其配置法则通常分为两步,首先去定义ACL ...

  8. acl规则问题

    在acl规则中网络地址与广播地址包含在规则范围内

  9. freeswitch的拨号规则配置

    当一个呼叫在ROUTING状态下达到命中拨号规则解析器时,相应的拨号规则就开始解析了.随着解析的进行,在xml文件中的符合条件的或标签中的指令形成一个指令表,安装到这个通道中. 你可以将拨号规则文件放 ...

  10. 关于haproxy的一些属性和acl 规则

    首先是haproxy.cfg文件的基本标注 当然实际配件没有下面这个复杂,可以根据需要自行增减. global log 127.0.0.1 local1 maxconn 65000 #最大连接数 ch ...

随机推荐

  1. C++ Qt开发:Charts绘图组件概述

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QCharts ...

  2. 内网& 公网

    内.外网是相对于防火墙而言的,在防火墙内部叫做内网,反之就是外网.在一定程度上外网等同于公网,内网等同于私网. 内网IP是什么? 内网IP简单理解就是局域网IP地址.内网地址即局域网(LAN),内网的 ...

  3. MyBatis高频面试题

    1.MyBatis中使用#和$书写占位符有什么区别? 2.Hibernate 与 Mybatis区别(MyBatis与Hibernate有什么不同). 3.持久层设计要考虑的问题有哪些? 4.你用过的 ...

  4. C# 如何读取Excel文件

    当处理Excel文件时,从中读取数据是一个常见的需求.通过读取Excel数据,可以获取电子表格中包含的信息,并在其他应用程序或编程环境中使用这些数据进行进一步的处理和分析.本文将分享一个使用免费库来实 ...

  5. 多项式(Poly)笔记

    开头先扔板子:多项式板子们 定义 多项式(polynomial)是形如 \(P(x) = \sum \limits_{i = 0}^{n} a_i x ^ i\) 的代数表达式.其中 \(x\) 是一 ...

  6. MyBatis 源码解析

    本文源码解析针对的是 MyBatis 3.4.4 MyBatis 执行流程 第一阶段 MyBatis 在这个阶段获得 Mapper 的动态代理对象,具体逻辑如下图所示: 其中,Configuratio ...

  7. CodeForces 808G Anthem of Berland 前缀函数 KMP DP

    原题链接 题意 第一行给我们一串长为s,只包含小写字母与问号的字符串A,第二行给我们一个长为t只有小写字母的字符串B, 同时满足 $ s * t \le 1e7 $ 我们可以把问号变成任意的字母,我们 ...

  8. 快来一起玩转LiteOS组件:Curl

    摘要:Curl是一个文件传输工具,常用于数据上传和下载,本demo基于Cloud_STM32F429IGTx_FIRE开发板演示了在curl demo中调用curl提供的API来下载一个文件,并将其保 ...

  9. 10年经验总结,华为fellow教你如何成为一名优秀的架构师?

    摘要:华为云首席架构师分享成为架构师必备的一些特质和能力. 本文分享自华为云社区<10年经验总结,华为fellow教你如何成为一名优秀的架构师?>,作者: 技术火炬手 . 在<云享人 ...

  10. vue2升级vue3:vue3真的需要vuex或者Pinia吗?hooks全有了

    在写 <vue2升级vue3:TypeScript下vuex-module-decorators/vuex-class to vuex4.x>,建议新项目使用 Pinia,但是我的项目部分 ...