Ricerca nel sito web

Proteggi Asterisk e FreePBX dalle frodi VoIP e dagli attacchi di forza bruta


In questa guida, ti mostrerò come proteggere la tua configurazione Asterisk e FreePBX impostando un'efficace lista nera VoIP utilizzando il filtro della geolocalizzazione. Al giorno d'oggi ci sono molti attacchi di forza bruta e tentativi di frode VoIP che prendono di mira Asterisk, FreePBX e qualsiasi altro sistema PBX su Internet.

È compito di qualsiasi amministratore di sistema garantire che il tasso di successo di tali tentativi sia ridotto al minimo, vicino allo zero. Un modo per proteggere Asterisk e FreePBX da tali tentativi è utilizzare Fail2ban e VoIP Blacklist.

Ciò ti farà risparmiare larghezza di banda e proteggerà la tua attività. Per semplificare il nostro lavoro, utilizzeremo VoIPBL, una lista nera VoIP distribuita che ha lo scopo di proteggere dalle frodi VoIP e ridurre al minimo l'abuso di una rete che dispone di PBX accessibili pubblicamente.

Questa guida fa parte della creazione di un sistema VOIP aziendale open source su Linux. Se non hai installato Asterisk o FreePBX, controlla:

Per Ubuntu e Debian: Come installare Asterisk 16 con FreePBX 14 su Ubuntu/Debian

Come installare Asterisk 16 LTS su CentOS 7/Fedora

Quanto è sicuro il VoIPBL?

La funzionalità di geolocalizzazione VoIPBL ti consente di bloccare tutto il traffico di rete proveniente da paesi con cui una rete non ha bisogno di comunicare o che sono noti all'origine di attività dannose. Dal loro sito puoi verificare se il tuo indirizzo IP è sulla lista nera.

Come installare VoIPBL

La lista nera VoIP dipende da Fail2ban per effettuare la lista nera sul tuo server PBX. Assicurati di avere un pacchetto fail2ban installato e un servizio in esecuzione:

sudo yum install epel-release
sudo yum install fail2ban fail2ban-systemd

Per Ubuntu e altre famiglie Debian, esegui:

sudo apt-get -y install fail2ban ufw

Se utilizzi CentOS 6 o qualsiasi altra famiglia RHEL 6, installa  iptables-services e fail2ban senza fail2ban-systemd

sudo yum install iptables-services fail2ban

Le impostazioni predefinite per Fail2ban sono configurate su./etc/fail2ban/jail.conf

Una configurazione fail2ban di base avrà il monitoraggio SSH. Aggiungiamolo al file /etc/fail2ban/jail.local.

$ sudo vim /etc/fail2ban/jail.local

Aggiungi il seguente contenuto:

[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

Quindi avvia e abilita il servizio fail2ban:

sudo systemctl enable fail2ban.service
sudo systemctl start fail2ban.service

Scarica lo script voipbl.sh e posizionalo in /usr/local/bin/

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

Rendi eseguibile lo script:

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

Quanto sopra utilizza iptables. Se il tuo sistema supporta ipset, puoi utilizzare invece il seguente script:

#!/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"

Quindi aggiungi una nuova jail Fail2ban su /etc/fail2ban/jail.conf:

[asterisk-iptables]
action = iptables-allports[name=ASTERISK, protocol=all]
         voipbl[serial=XXXXXXXXXX]

Ora definisci le azioni della Blacklist VoIP per Fail2ban su /etc/fail2ban/action.d/voipbl.conf.

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

Aggiungere :

# 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

Ora possiamo creare un file cron job per aggiornare le regole ogni 3 ore:

$ sudo vim /etc/cron.d/voipbl

# update blacklist each 4 hours
0 */4 * * * * root /usr/local/bin/voipbl.sh

Al termine, riavvia il demone fail2ban per proteggerti dalle frodi VoIP:

sudo systemct restart fail2ban

Puoi anche eseguire configurazioni avanzate come:

  • Filtra per Paese
  • Filtra per rete

Per ulteriori letture, controlla il documento Asterisk Security di VOIP-info.

Articoli correlati: