Защитите Asterisk и FreePBX от VoIP-мошенничества и брутфорс-атак |
В этом руководстве я покажу вам, как защитить вашу настройку Asterisk и FreePBX, настроив эффективный черный список VoIP с использованием фильтрации геолокации. В настоящее время существует множество атак методом перебора и попыток мошенничества с VoIP, нацеленных на Asterisk, FreePBX и любую другую систему PBX в Интернете.
Задача любого системного администратора — обеспечить минимальный уровень успеха таких попыток — близкий к нулю. Один из способов защитить Asterisk и FreePBX от таких попыток — использовать Fail2ban и черный список VoIP.
Это сэкономит вам пропускную способность и защитит ваш бизнес. Чтобы облегчить нашу работу, мы будем использовать VoIPBL, который представляет собой распространяемый черный список VoIP, призванный защитить от мошенничества с VoIP и свести к минимуму злоупотребление сетью, в которой есть общедоступные АТС.
Это руководство является частью создания корпоративной VOIP-системы с открытым исходным кодом в Linux. Если у вас не установлен Asterisk или FreePBX, проверьте:
Для Ubuntu и Debian: Как установить Asterisk 16 с FreePBX 14 в Ubuntu/Debian
Как установить Asterisk 16 LTS на CentOS 7/Fedora
Насколько безопасен VoIPBL?
Функция геолокации VoIPBL позволяет блокировать весь сетевой трафик из стран, с которыми сети не требуется связь или которые являются известными источниками вредоносной активности. На их сайте вы можете проверить, находится ли ваш IP-адрес в черном списке.
Как установить 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"
Затем добавьте новую тюрьму Fail2ban в /etc/fail2ban/jail.conf
:
[asterisk-iptables]
action = iptables-allports[name=ASTERISK, protocol=all]
voipbl[serial=XXXXXXXXXX]
Теперь определите действия черного списка VoIP для Fail2ban в /etc/fail2ban/action.d/voipbl.conf.
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
Вы также можете выполнить расширенные настройки, такие как:
- Фильтровать по стране
- Фильтровать по сети
Для дальнейшего чтения ознакомьтесь с документом Asterisk Security от VOIP-info.