zoukankan      html  css  js  c++  java
  • FreeSwitch安装在云服务器禁止国外IP访问

    项目上使用到FreeSwitch放到阿里云上,但是不可避免,被扫描盗打,运气不好,第一天放上去测试,就被打了2K+话费。

    不管是阿里云,腾讯云,华为云等等,他们的ACL规则都是比较弱的,有项目曾经用过SBC来管制当然简单多了,不过也要一笔不小的费用,于是只有在系统防火墙上下手。

    首先,扫描的基本上都是国外的IP,我们先禁止他们的访问,这里用到了iptables和ipset,本来我们的系统环境是CentOS7,没有iptables的,因为7开始已经改为firewalld了。

    iptables和ipset的配合使用先检查安装环境:

    yum install ipset
    yum install iptables-services

    #建表

    ipset create china hash:net hashsize 10000 maxelem 1000000


    #批量增加中国IP到ipset的china表
    #以下内容保存成脚本执行即可,执行需要更改权限

    #!/bin/bash
    rm -f cn.zone
    wget http://www.ipdeny.com/ipblocks/data/countries/cn.zone
    for i in `cat cn.zone`
    do
    ipset add china $i 
    done
    ipset list china #查看一下
    ipset save
    #ipset命令建表和插IP数据都是直接写内存,所以需要让内存的数据持久化,各发行版的服务调用命令可能不太一样,这里用Redhat系列的命令
    #iptables的filter表INPUT链根据需求加入相应的规则,以下是实例
    #全部接受中国IP
    -A INPUT -m set --match-set china src -j ACCEPT
    #接受中国IP访问本机特定端口特定协议(例如5060UDP协议),freeswitch一般要用这条,直接具体到端口协议
    -A INPUT -m set --match-set china src -p udp -m udp --dport 5060 -j ACCEPT
    #接受中国IP的ping响应
    -A INPUT -m set --match-set china src -p icmp -j ACCEPT
    service iptables save

    ————————————————
    如果对命令不是太熟悉,可以把以下内容写到 /etc/sysconfig/iptables 文件里,增加或者修改对应的端口 

    *filter
    :INPUT DROP [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -m set --match-set china src -p tcp -m tcp --dport 80 -j ACCEPT
    -A INPUT -m set --match-set china src -p tcp -m tcp --dport 443 -j ACCEPT
    -A INPUT -m set --match-set china src -p udp -m udp --dport 5060 -j ACCEPT
    -A INPUT -p udp -m udp --dport 16384:32768 -j ACCEPT
    -A INPUT -s 172.18.0.0/16 -j ACCEPT
    -A INPUT -s 47.107.xxx.xxx/32 -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A OUTPUT -o lo -j ACCEPT
    COMMIT

    systemctl restart iptables

    重启就生效。

    最后,大家会发现,这种方式firewalld被关闭了,iptables服务起来了,实则是centos 7中已经默认不再支持iptables防火墙,而推荐使用firewalld防火墙。

    后面有空再来对比一下,另外ipset是内存中存在的数据,一旦重启,将会被清空,个人建议是在脚本中启动,下一篇介绍一下。

  • 相关阅读:
    outlook 2007无法连接exchange server时的解决方法
    Source模式和Design模式无法转换 在VS2008
    自定义CreateUserWizard 控件
    自定义CreateUserWizard 控件
    锋利的jQuery第三章
    Repeater控件的ItemDataBound事件
    jquery获取select,option所有的value和text
    Jquery中的缩写总结
    asp.net本质论学习笔记第二章
    jquery的append函数
  • 原文地址:https://www.cnblogs.com/cash/p/13280800.html
Copyright © 2011-2022 走看看