云网牛站
所在位置:首页 > Linux安全 > 安装VoIPBL保护Asterisk和FreePBX免受VoIP欺诈和暴力攻击

安装VoIPBL保护Asterisk和FreePBX免受VoIP欺诈和暴力攻击

2019-02-20 21:27:39作者:戴进稿源:云网牛站

在本文中,将展示如何通过使用地理位置过滤设置有效的VoIP黑名单来保护你的Asterisk和FreePBX设置,如今,有许多暴力攻击和VoIP欺诈尝试针对互联网上的Asterisk,FreePBX和任何其他PBX系统。

 

背景

通过使用Fail2ban和VoIP黑名单来保护Asterisk和FreePBX免受攻击。

这样可以节省带宽并保护你的业务,为了使我们的工作更轻松,我们将使用VoIPBL,这是一种分布式VoIP黑名单,旨在防止VoIP欺诈并最大限度地减少滥用具有可公开访问的PBX的网络。

安装VoIPBL保护Asterisk和FreePBX免受VoIP欺诈和暴力攻击

本文是在Linux上构建企业开源VOIP系统的一部分,如果你没有安装Asterisk或FreePBX,请安装,参考:

在CentOS 7/Fedora系统上安装Asterisk 16的步骤

在CentOS 7系统上安装FreePBX 15的步骤

 

安装VoIPBL

VoIP黑名单依赖于Fail2ban来实现PBX服务器上的黑名单,确保安装了fail2ban软件包并运行服务:

sudo yum install epel-release

sudo yum install fail2ban fail2ban-systemd

对于Ubuntu和其他Debian系列,运行:

sudo apt-get -y install fail2ban ufw

如果正在运行CentOS 6或任何其他RHEL 6系列,请安装iptables-services和fail2ban而不使用fail2ban-systemd:

sudo yum install iptables-services fail2ban

Fail2ban的默认设置在/etc/fail2ban/jail.conf上配置。

基本的fail2ban配置将具有ssh监视功能,我们将其添加到/etc/fail2ban/jail.local文件中:

$ sudo vim /etc/fail2ban/jail.local

添加以下内容:

[postfix]

enabled  = true

port     = smtp

filter   = postfix

logpath  = /var/log/mail.log

maxretry = 3

[ssh]

enabled = true

port    = ssh

filter  = sshd

logpath  = /var/log/auth.log

maxretry = 3

[vsftpd]

enabled = false

port = ftp

filter = vsftpd

logpath = /var/log/auth.log

maxretry = 5

[pure-ftpd]

enabled = true

port = ftp

filter = pure-ftpd

logpath = /var/log/syslog

maxretry = 3

然后启动并启用fail2ban服务:

sudo systemctl enable fail2ban.service

sudo systemctl start fail2ban.service

下载voipbl.sh脚本并将其放在/usr/local/bin/下:

wget http://www.voipbl.org/voipbl.sh -O /usr/local/bin/voipbl.sh

使脚本可执行:

chmod +x /usr/local/bin/voipbl.sh

以上使用iptables,如果你的系统支持ipset,则可以使用以下脚本:

#!/bin/bash

URL="http://www.voipbl.org/update/"

set -e

echo "Downloading rules from VoIP Blacklist"

wget -qO - $URL -O /tmp/voipbl.txt

echo "Loading rules..."

# Check if rule set exists and create one if required

if ! $(/usr/sbin/ipset list voipbl > /dev/null 2>&1); then

ipset -N voipbl iphash

fi

#Check if rule in iptables

if ! $(/sbin/iptables -w --check INPUT -m set --match-set voipbl src -j DROP > /dev/null 2>&1); then

/sbin/iptables -I INPUT 1 -m set --match-set voipbl src -j DROP

fi

# Create temporary chain

ipset destroy voipbl_temp > /dev/null 2>&1 || true

ipset -N voipbl_temp iphash

cat /tmp/voipbl.txt |

awk '{ print "if [ ! -z ""$1"" -a ""$1""  != "#" ]; then /usr/sbin/ipset  -A voipbl_temp ""$1"" ;fi;"}' | sh

ipset swap voipbl_temp voipbl

ipset destroy voipbl_temp || true

echo "Done! Rules loaded"

然后在/etc/fail2ban/jail.conf上添加一个新的Fail2ban Jail:

[asterisk-iptables]

action = iptables-allports[name=ASTERISK, protocol=all]

 voipbl[serial=XXXXXXXXXX]

现在在/etc/fail2ban/action.d/voipbl.conf上定义Fail2ban的VoIP黑名单操作:

sudo vim  /etc/fail2ban/action.d/voipbl.conf

增加:

# Description: Configuration for Fail2Ban

[Definition]

actionban   = <getcmd> "<url>/ban/?serial=<serial>&ip=<ip>&count=<failures>"

actionunban = <getcmd> "<url>/unban/?serial=<serial>&ip=<ip>&count=<failures>"

[Init]

getcmd = wget --no-verbose --tries=3 --waitretry=10 --connect-timeout=10

 --read-timeout=60 --retry-connrefused --output-document=-

 --user-agent=Fail2Ban

url = http://www.voipbl.org

我们现在可以创建cron作业文件,每3小时更新一次规则:

$ sudo vim /etc/cron.d/voipbl

# update blacklist each 4 hours

0 */4 * * * * root /usr/local/bin/voipbl.sh

完成后,重新启动fail2ban守护程序以防止VoIP欺诈:

sudo systemct restart fail2ban

当然还可以执行高级配置:比如按国家筛选、按网络过滤。

 

相关主题

在Ubuntu 18.04系统上安装Asterisk 16的步骤

精选文章
热门文章