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 1024 maxelem 65536


#批量增加中國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是內存中存在的數據,一旦重啟,將會被清空,個人建議是在腳本中啟動,下一篇介紹一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM